{"version":3,"file":"js/app.e2f5b65f.js","mappings":"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O,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,QAAS,CAAC,CAAC,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,GAAI,MAAO,EAAE,GAAI,MAAO,EAAE,GAAI,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAA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KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,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,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO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AAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,WAAc,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,GAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,SAAU,UAAa,IAAK,iBAAkB,SAAU,UAAa,kBAAmB,YAAa,wBAAyB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,UAAY,SAAY,CAAE,KAAQ,eAAgB,YAAe,CAAC,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,WAAc,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,iBAAkB,UAAa,IAAK,iBAAkB,YAAa,UAAa,YAAa,YAAa,sBAAuB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,WAAa,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,MAAO,EAAE,IAAK,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,UAAW,UAAa,IAAK,iBAAkB,OAAQ,UAAa,kBAAmB,YAAa,wBAAyB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,UAAY,SAAY,CAAE,KAAQ,eAAgB,YAAe,CAAC,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,WAAc,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,YAAa,UAAa,IAAK,iBAAkB,SAAU,UAAa,mBAAoB,YAAa,wBAAyB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,iBAAmB,SAAY,CAAE,KAAQ,eAAgB,YAAe,CAAC,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CA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,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,KAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,OAAQ,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,OAAQ,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,OAAQ,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,KAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,MAAO,CAAC,IAAK,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC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AAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,KAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,C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MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,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,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,IAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM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CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,QAAS,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,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AC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,WAAc,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,GAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,YAAa,UAAa,IAAK,iBAAkB,OAAQ,UAAa,gBAAiB,YAAa,4BAA6B,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,iBAAmB,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,kBAAmB,UAAa,IAAK,iBAAkB,SAAU,UAAa,YAAa,YAAa,sBAAuB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,WAAa,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,aAAc,UAAa,IAAK,iBAAkB,OAAQ,UAAa,iBAAkB,YAAa,qBAAsB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,UAAY,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,GAAM,cAAe,GAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,UAAW,UAAa,IAAK,iBAAkB,UAAW,UAAa,kBAAmB,YAAa,wBAAyB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,UAAY,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,GAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,QAAS,UAAa,IAAK,iBAAkB,QAAS,UAAa,kBAAmB,YAAa,6BAA8B,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,UAAY,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,aAAc,UAAa,IAAK,iBAAkB,OAAQ,UAAa,eAAgB,YAAa,wBAAyB,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,QAAU,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,OAAQ,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,UAAa,CAAE,KAAQ,UAAW,GAAM,KAAM,WAAc,CAAE,WAAY,SAAU,cAAe,IAAM,cAAe,IAAM,SAAU,KAAM,QAAS,KAAM,KAAQ,QAAS,UAAa,IAAK,iBAAkB,QAAS,UAAa,gBAAiB,YAAa,aAAc,SAAU,MAAO,SAAU,KAAM,SAAU,WAAY,UAAa,QAAU,SAAY,CAAE,KAAQ,UAAW,YAAe,CAAC,CAAC,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,KAAM,Y,oBCM19nNC,IAAYC,KACZC,IAAoBD,KACpBA,IAAAA,KAAAA,gBAAkCE,EAClC7D,EAAAA,WAAAA,IAAQ8D,K,0BCTD,MAAMC,EAAiB,CAACjF,EAAakF,IAC5B,OAARlF,GAAgBmF,MAAMnF,GACfA,EAGJkF,EACDlF,EAAIoF,oBAAeC,EAAW,CAC5BvM,MAAO,WACPwM,SAAUJ,IAEZlF,EAAIoF,iBAGR,MAAOG,EAAe,gDAGjBpI,yBACH,OAAInF,KAAKwN,WAAmBxN,KAAKwN,WACzBxN,KAAKwN,iBAAmBC,EAAAA,EAAAA,KAAAA,IACvB,4BACJC,MAAKC,GAAKA,EAAE5O,MACrB,CAEOoG,4BACH,OAAOnF,KAAK4N,mBAAmBF,MAAKG,GAAKA,EAAEC,KAAIH,GAAKA,EAAET,QAC1D,CAEO/H,wBAAwB+H,GAC3B,MAAMa,QAAY/N,KAAK4N,mBAEjBI,EAAcD,EAAIE,WAAUN,GAAKA,EAAET,OAASA,IAClD,OAAwB,IAAjBc,EAAqBD,EAAIC,GAAaE,OAAS,IAC1D,EAGJ,UAAmBX,ECnCnBrE,EAAAA,WAAAA,OAAW,WAAY+D,G,4CCCvBkB,IAAAA,OAAaC,KAEblF,EAAAA,WAAAA,OAAW,yBAAyB,SAAU9J,GAC1C,OAAO+O,IAAM/O,GAAOiP,QAAQD,SAAS,KAAM,CACvCE,SAAU,cAElB,IAEApF,EAAAA,WAAAA,OAAW,kBAAkB,SAAU9J,GACnC,OAAO+O,IAAM/O,GAAOgP,SAAS,KAAM,CAC/BE,SAAU,cAElB,IAEApF,EAAAA,WAAAA,OAAW,cAAc,SAAU9J,EAAamP,GAC5C,OAAOJ,IAAM/O,GAAOmP,OAAOA,EAC/B,ICnBA,IAAIpP,EAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,MAAM,CAACqL,YAAY,CAAC,OAAS,uBAAuB7N,MAAM,CAAC,IAAME,EAAIsQ,aAAa,MAAQtQ,EAAIiD,MAAM,aAAa,mBAAmB,MAAQ,mBAAmB,KAAO,iBAC5O,EACI7C,EAAkB,GCWtB,GACAC,MAAAA,CACA4C,MAAAA,CACAlD,KAAAA,OACAS,aAAAA,GAEA0N,KAAAA,SAEA1J,SAAAA,CACA8L,eACA,kBACA,qEACA,ICzBqQ,ICOjQ,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,Q,qBClB4B,EAAU,W,IAASxQ,EAAM,K,EAAC,EAAM,MAAC,G,OAAG,OAAC0C,MAAG,CAAC,KAAO,IAAkB,GAAI,CAAW1C,MAAM,gBAAU,QAAE,MAAMK,CACpK,UAGD,GAASc,GAAAA,gBAAQb,EAAe,kC,OCIhC,GACAC,MAAAA,CACAkQ,MAAAA,CACAxQ,KAAAA,QACAS,SAAAA,GAEAgQ,eAAAA,CACAzQ,KAAAA,CAAAA,OAAAA,QACAS,QAAAA,OAGAO,QAAAA,CACA0P,YAAAA,GACA,oCACA,qCAEA,qBAEA,IC1BmQ,ICO/P,GAAY,OACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIF,EAAe,EAAiB,Q,+CClBqHlO,GAAAA,WAAmB,IAAIvC,EAAI0Q,KAAwB5Q,EAAK,EAAC,S,OAAC,EAAM,YAAC,CAAE,OAAIE,MAAOA,EAAM,QAA+G,CAACA,EAAG,KAAWA,CAAAA,EAAI2Q,MAAQ,CAAC,EAAE,KAAKC,CAAsB9Q,YAAM,S,CAAC,YAAQ,O,MAAC,CAAgB,UAA2EyC,CAAAA,EAAAA,GAAAA,EAAY,KAAM,uEAACzC,YAAM,U,CAAC,OAASE,GAAIc,EAAAA,YAAO,iB,MAAC,CAAkB,OAAId,cAAc,K,CAAqCuC,EAAAA,GAAAA,GAAY,sCAAM,YAAU,OAAiB,MAAI,CACpqB,iBACGnC,cAAkB,M,uICFsBkC,GAAOK,WAAS,MAAU,KAAU7C,EAAK,EAAC,S,OAAC,EAAM,KAAG,C,MAAC,CAAiB,QAAIE,MAAO,UAEzHI,CAAAA,EAAAA,GAAAA,YAAoB,EAExB,E,MCGA,IACA0C,KAAAA,oBACAzC,MAAAA,CACAwQ,MAAAA,CACA9Q,KAAAA,QACAS,SAAAA,KCZwQ,MCOpQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCYhC,IACAH,MAAAA,CACAgI,MAAAA,OACAqI,UAAAA,OACAC,QAAAA,OACA7P,QAAAA,QACA+P,MAAAA,CACA9Q,KAAAA,QACAS,SAAAA,IAGA6F,WAAAA,CAAAyK,SAAAA,KCzCoQ,MCOhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B7P,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,eAAe,CAACxC,MAAM,CAAC,MAAQE,EAAIqI,MAAM,QAAUrI,EAAI2Q,QAAQ,QAAU3Q,EAAIc,QAAQ,MAAQd,EAAI6Q,OAAOtI,YAAYvI,EAAI+Q,GAAG,CAAC/Q,EAAIgR,GAAIxN,OAAOyN,KAAKjR,EAAIkR,eAAe,SAASC,GAAM,MAAO,CAAC9O,IAAI8O,EAAK3I,GAAG,SAAS4I,GAAO,MAAO,CAACpR,EAAIqR,GAAGF,EAAK,KAAK,KAAKC,GAAO,EAAE,KAAI,MAAK,IAAO,CAAC9O,EAAG,QAAQ,CAACxC,MAAM,CAAC,QAAUE,EAAIsR,MAAM,gBAAkBtR,EAAIuR,oBAAoB,EACra,EACInR,GAAkB,GCQtB,IACAC,MAAAA,CACAgI,MAAAA,OACAsI,QAAAA,OACAW,MAAAA,OACAxQ,QAAAA,CACAN,SAAAA,EACAT,KAAAA,SAEA8Q,MAAAA,CACArQ,SAAAA,EACAT,KAAAA,SAEAwR,gBAAAA,CACA/Q,aAAAA,EACAT,KAAAA,UCzBkQ,MCO9P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBYuC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAsC,EAAS,K,IAAEiJ,UAAM,GAAE,gBAAC,I,MAAwC,wBAAuB,C,MAAkB,CAA2B,QAAQxR,EAAM,MAAC,qB,MAA+ByR,EAAU,eAAgB,MAAE,mCAAC,WAAWzR,EAAM,aAA6D,SAAE,sCAAC,WAAS,eAAMuI,QAAW,G,YAA2B,EAAS,K,IAAEG,U,GAASgJ,UAAM,QAAEnR,EAAAA,OAAO,EAAC,MAAC,I,MAA8B,GAAO,cAAUoR,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAuDQ,EAAAA,GAAAA,GAAK,yBAAY,C,WAAS,EAAe5B,KAAK,aAAoBK,QAAAA,eAA+B,uBAACzB,WAAM,qB,MAA4B,CAA4B,MAAQS,EAAAA,eAAM,WAAQmI,EAAO,WAAC,MAAOgJ,EAAO,QAA8B,OAAG,YAAC,e,GAA4BF,CAA6B,oBAAC,uBAAI,KAAiB,eAAM,MAIhhC,E,6CCJiG,W,IAAW,O,EAAwB,QAAUxR,G,OAAY,cAAiB,CAAK,MAAC,CAACuI,MAAW,EAACvI,MAASqC,SAAI,EAAS,SAACmG,QAAG,EAAS,Q,gBAAQ,G,YAAU,O,IAAC,U,GAA+B,UAAS,O,EAAW,M,UAAoD,CAAM,EAAC,mB,QAAW,EAACoJ,MAAW,QAAG,OAAC,oBAAI,KAAS,CAAQ,qB,IAA0D,S,MAACrQ,CAAkB,cAAKvB,SAAI6R,SAAe,GAAY/R,EAAM,OAAC,EAAU,WAAQ,UAAY,CAACwC,EAAG,YAAS,QAACxC,MAAM,CAAC,KAAO,GAAU,kBAAoHA,CAAAA,EAAK,IAAC,C,MAAC,CAA+B,MAAQE,YAA6D,0FAACqB,MAAM,CAACH,MAAOlB,EAAI8R,mBAAe1P,MAAQ,EAAC,2C,SAAoB0P,I,MAAmBvQ,CAA0B,sBAAG,SAAI,SAAe,GAACzB,EAAM,eAAC,EAAkC,8BAAmF,EAAC,M,MAAC,CAAqB,MAAQE,EAAI+R,sBAAW,YAAa,qCAAC,WAAY,EAAE,aAAyD,qBAAC1Q,MAAM,aAACH,SAAW8Q,GAAkB5P,UAAS,G,QAAoB4P,EAAAA,WAAoB,0B,MAAEzQ,CAA6B,yBAAI,SAAG,YAC1yC,oBACGnB,EAEJ,WAAiBA,uB,UC6CjB,IACAC,MAAAA,CAAAA,QAAAA,UAAAA,QAAAA,WAAAA,SAAAA,eACAmE,SAAAA,CACAoN,aACA,8CACA,gDACA,cACA,GAEA/Q,OACA,OACAJ,OAAAA,EACAqR,eAAAA,EACAG,mBAAAA,CAAAA,KAAAA,GAAAA,yBACAD,iBAAAA,GACAE,sBAAAA,CACAC,KAAAA,GAAAA,wBACAA,GAAAA,IAAAA,KAAAA,YAAAA,eAAAA,KAAAA,eAGA,GCrEyQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB4B,GAAU,W,IAASrS,EAAM,K,EAAC,EAAM,MAAC,G,OAAS,MAAQ,C,MAAQ,CAAe,cAAqC,MAAS,QAAa,UAAWG,GAAK,6BAAG,QAAC,UAAC,KAAO,EAAC,M,GAAyC,CAAmB,kBAAO,OAAN,mBAAO,EAAS,QAACH,IAAgB,QAAE,MAAMK,CAClU,UAGD,GAASc,GAAAA,WAAQb,EAAAA,GAAe,c,oBCchC,IACAC,MAAAA,CACAE,MAAAA,SACAE,MAAAA,QACAR,KAAAA,OACAiB,MAAAA,OACAuQ,WAAAA,OACAW,YAAAA,QAEAvR,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,2CACA,IACA,iCACAsR,EAAAA,CACAlR,QAAAA,CACA,qCAGAqO,MAAAA,GAAAA,EAAAA,OACA,aACA,uBAUA,CATA,SACA/N,GAAAA,EAAAA,MACA,eACA,kJAEA,uBACA,SACA,gBACA,kBACA,CACA,ICvD2Q,MCOvQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCWhC,IACApB,MAAAA,CACAa,MAAAA,CAAAnB,KAAAA,SACAuS,eAAAA,CAAAvS,KAAAA,OAAAS,QAAAA,MACAiR,WAAAA,CAAA1R,KAAAA,QACAqS,YAAAA,CAAArS,KAAAA,SAEAsG,WAAAA,CACAkM,iBAAAA,GACAC,mBAAAA,IAEAzR,QAAAA,CACA0R,cACA,wBACA,IC3C2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYnQ,GAAOK,WAAS,MAAU,KAAWJ,EAAAA,EAAAA,MAAY,GAAM,OAAM,EAAG,UAAC,CAACA,YAAY,QAAoB,CAACD,EAAG,KAAUC,YAAY,oBAAe,CAACvC,EAAG,IAAO,CAA6BuC,YAAY,eAAe,CAACvC,EAAIG,GAAGH,EAAI0S,GAAG1S,EAAI2S,UAAW,GAAG,EAAC,IAAI,CAACpQ,YAAY,eAAe,CAACvC,EAAIqR,GAAG,OAAW,YAAK,OACnV,2BACGjR,CAAAA,EAAAA,GAAAA,YAAoB,IAExB,E,MCHA,IACIC,MAAO,CAAC,OAAQ,YCFwR,MCQxS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,Q,YCnBgDkC,GAAAA,WAAqB,IAAGD,EAAG,KAAmBxC,EAAK,EAAC,S,OAAC,OAAUE,CAAW,YAAC,WAACuI,CAAAA,EAAAA,kBAAoB,C,MAAK,CAAQC,QAAG,W,YAAoD,EAAI,GAAG,CAACxI,C,IAAsB,WAAC,WAAC4S,MAAM,0BAAM,2BAACvQ,IAAemG,E,OAAc,G,KAA6E,cAAC,WAACoK,MAAM,6BAAO,MAAK,CAAI,uBAAI5S,IAAyB,EAA0BuC,OAAAA,IAAqBvC,MAAM,KAAmB,KAAO,QAAI,W,MAAa,GAAC,KAAM,C,YAAO,Q,GAAC,WAAYkB,W,MAAM,CAAI,EAAClB,GAAAA,EAAI0R,C,IAAO,OAAoC,MAAC,CAAG,MAAC,QAAC,KAAQ,O,kBAAkC,kB,GAAkB,C,MAAiCmB,SAAAA,GAAiB,yBAAC,EAAI7S,OAAO,SAAU,GAAM,EAAUA,gBAAU,IAAsC,gBAAkBA,KAAI8S,CAAiB,QAAI,EAAQ,MAAChT,OAAM,S,MAAO,EAAC,MAAQ,oCAAI,EAAG,QAAC,CAAG,MAAI,CAAM,kBAAuE,GAAW,QAAqC,IAAG,EAAG,oBAAI,sBAC9hC,gBACGM,MAAAA,EAAAA,MAEJ,gBAAiBA,EAAAA,mB,cCJ2BkC,GAAOK,WAAS,MAAU,KACrE,aACD,OAAIvC,EAAAA,EAAAA,GAAoB,oBAExB,E,MCHIuJ,GAAS,CAAC,EAKV,IAAY,OACdA,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCjB4B,GAAU,W,IAAoC7J,EAAM,K,EAAC,W,OAAmB,aAAagB,CAAAA,EAAAA,GAAAA,EAAAA,CAAO,OAAIwB,cAAiB,GAAWC,OAAW,EAAC,WAAwF,OAAevC,CAAG,EAAG,KAAKqI,CAAU,YAAW,6DAAE9F,CAAAA,EAAAA,GAAAA,SAAY,WAAuEzC,MAAM,qB,KAAC,KAAO,IAAC,CAAQ,mFAAE,MAAMuR,CAAyB,MAAW,WACle,6BACGjR,MAAAA,CAAAA,EAAAA,GAAe,EAAG,GAAE,aAExB,WAASa,E,QCUT,IACAZ,MAAAA,CAAAA,UAAAA,QAAAA,aCfsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnBlB,MAAO0S,GACVC,gBACH,MAAO,uCAAuCC,QAAQ,SAASxD,IAC3D,MAAME,EAAqB,GAAhBuD,KAAKC,SAAiB,EAC3BhB,EAAS,KAAL1C,EAAWE,EAAS,EAAJA,EAAW,EACrC,OAAOwC,EAAEiB,SAAS,GAAG,GAE7B,ECwCJ,IC7CYC,GCFPC,GF+CL,IACAjT,MAAAA,CACAS,QAAAA,CACAf,KAAAA,SAEAsI,MAAAA,CACAtI,KAAAA,QAEAuI,SAAAA,CACAvI,KAAAA,QAEAmB,MAAAA,CACAnB,KAAAA,SAEAwT,eAAAA,CACAxT,KAAAA,QACAS,SAAAA,IAGA6F,WAAAA,CAAAmN,gBAAAA,GAAAC,cAAAA,IACA5S,OACA,OAAA6Q,OAAAA,GAAAA,SACA,EACA3Q,QAAAA,CACA2S,QACA,uBACA,EACAZ,kBACA,iCACA,IG5EiQ,MCO7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,YClBYxQ,GAAOK,WAAS,MAAU,KAAY7C,EAAK,EAAC,S,OAAC,OAAYoB,C,MAAM,CAAyB,QAAY,MAAI,QAAY,OAAC,IAA2B,WAAalB,GAAiD,sCAAG,WAAC,4C,GAA0B,CAAiC,kBAAE,yBAACuI,G,YAAwC,EAASlI,GAAAA,CAAK,C,IAAE,YAA4C,eAAI,MAAK,GAAI,4BAAIL,IAAuB,MAAQA,IAAU,GAAM,GAACA,UAAI2T,KAAAA,CAAM,MAAI,QAC9e,eACGvT,EAEJ,E,MCaA,IACAC,MAAAA,CACAa,MAAAA,QACA+B,MAAAA,OACA2Q,WAAAA,SAEA7S,QAAAA,CACA4S,OAEA,OADA,uBACA,mBACA,EACAnC,QAEA,OADA,uBACA,mBACA,IC/BmQ,MCO/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,gDClB4F1R,GAAM,W,IAAC,EAAM,K,EAAI,QAAYE,G,OAAmB,QAAY6T,C,MAAa,CAAuB,kBAAwCtL,CAAAA,EAAAA,GAAAA,EAAYvI,C,MAA4B,CAAYwI,KAAG,G,UAAsB,EAAI,OAAS,EAAE,QAAC,eAACoK,WAAM,QAAK,mBAAgB,mBAA+C9S,YAAM,kBAAC,gBAA+B,cAA0B,MAAO,iBAAe,EAAG,OAAC,GAAC,MAAQ,U,GAAiB,WAAmJ,OAAxIgU,EAAAA,GAAAA,EAAc,C,MAAA,CAAC,+BAAG,MAAS,kBAA0BvR,KAAAA,gB,GAAgC,CAAmB,kBAACzC,OAAM,gBAAC,KAAwB,gBAAC0C,YAAG,O,YAAS,C,aAA4BuR,OAAyB,OAAIzR,SAAW,GAAExC,KAAM,IAAU,IAAIE,MAAO,YAAwGF,OAAM,wBAAC,IAAc,CAACwC,EAAG,IAAK,CAACC,MAAAA,CAAyBvC,KAAQ,K,CAAuB,6BAAcgU,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,YAAAA,UAAAA,GAAAA,EAAAA,KAAAA,EAAAA,GAAAA,GAAAA,CAAS,MAAC,CAAClU,KAAM,OAAU,SAAE,YAAa4S,WAAkH5S,CAAAA,EAAK,KAAC,O,MAAC,CAAsB,qBACtqC,OACGM,KAAAA,K,iKCqCJ,IACAC,MAAAA,CACAgI,MAAAA,OACA4L,KAAAA,OACAJ,aAAAA,OACAK,WAAAA,CACAnU,KAAAA,OACAS,QAAAA,eAEA2T,SAAAA,CACApU,KAAAA,QACAS,SAAAA,GAEA4T,gBAAAA,OACAC,WAAAA,QACAC,MAAAA,QACAC,OAAAA,OACAC,WAAAA,OACAC,OAAAA,QACAT,SAAAA,QACAU,aAAAA,SAEA3T,QAAAA,CACA+S,eACArS,GAAAA,EAAAA,MAAAA,eACA,EACAkT,sBACAlT,GAAAA,EAAAA,MAAAA,gBACA,ICnEmQ,MCQ/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB4B,GAAU,W,IAAS3B,EAAM,K,EAAC,EAAM,MAAKC,G,OAAK,MAAW,C,MAAO,CAAe,OAAW,KAA0B,MAAS,EAACC,MAAY,UAAWC,GAAK,UAAYC,EAAAA,OAAK,UAAC,QAAU,EAAI,QAAU,YAAG,MAAC,QAAC,SAAQ,Y,GAAyC,CAAmB,kBAAKF,OAAJ,mBAAW,UAAqB,I,GAA4B,cAAO,W,MAAE,QAAE,MAAMG,CAAmC,KAAC,KAEnbC,CAAAA,EAAAA,GAAAA,UAAoB,eAExB,O,QCeA,IACAC,MAAAA,CACAa,MAAAA,CACAnB,KAAAA,OAEAO,KAAAA,CACAP,KAAAA,QAEAQ,MAAAA,CACAR,KAAAA,SACAS,QAAAA,KACA,GACAC,MAAAA,CACAV,KAAAA,QACAS,SAAAA,GAEAP,KAAAA,CACAF,KAAAA,QAEAW,MAAAA,CACAX,KAAAA,OACAS,QAAAA,aAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,UAEAN,MAAAA,CACAH,KAAAA,QACAS,SAAAA,GAEAG,SAAAA,CACAZ,KAAAA,QACAS,SAAAA,GAEAoU,YAAAA,CACA7U,KAAAA,QACAS,SAAAA,GAEAI,QAAAA,CACAb,KAAAA,OACAS,QAAAA,OAGAK,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,SAAAI,QAAAA,CAAA,+CACA,IACA,YACA,yBACA,6DACA,qDACA,aACA,uBAMA,CALA,SACA,gCACA,SACA,gBACA,kBACA,CACA,ICpFwQ,MCOpQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB4B,GAAU,W,IAASrB,EAAM,K,EAAC,EAAM,MAAKC,G,OAAK,MAAW,C,MAAO,CAAe,OAAW,KAA0B,MAAS,EAACC,MAAY,UAAWC,GAAK,UAAYC,EAAAA,OAAK,UAAC,QAAU,EAAI,QAAU,YAAG,MAAC,QAAC,SAAQ,Y,GAAyC,CAAmB,kBAAKF,OAAJ,mBAAW,UAAqB,I,GAA4B,cAAO,W,MAAE,QAAE,MAAMG,CAAmC,KAAC,KAEnbC,CAAAA,EAAAA,GAAAA,UAAoB,eAExB,O,QCeA,IACAC,MAAAA,CACAa,MAAAA,CACAnB,KAAAA,CAAAA,OAAAA,OAAAA,QAEAO,KAAAA,CACAP,KAAAA,QAEAQ,MAAAA,CACAR,KAAAA,SACAS,QAAAA,KACA,GACAC,MAAAA,CACAV,KAAAA,QACAS,SAAAA,GAEAP,KAAAA,CACAF,KAAAA,OACAS,QAAAA,MAEAE,MAAAA,CACAX,KAAAA,OACAS,QAAAA,aAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,UAEAN,MAAAA,CACAH,KAAAA,QACAS,SAAAA,GAEAW,QAAAA,CACApB,KAAAA,OACAS,aAAAA,GAEAG,SAAAA,CACAZ,KAAAA,QACAS,SAAAA,GAEAI,QAAAA,CACAb,KAAAA,OACAS,QAAAA,OAGAK,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,IACA,YACA,wEACA,aACA,uBAMA,CALA,SACA,uBACA,SACA,gBACA,kBACA,CACA,IClFsQ,MCOlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,gDClBqEjB,GAAM,W,IAAC,O,EAAoB,EAAO,MAAC,G,OAAE,uBAAE,MAAK,CAAyByC,iBAAY,GAAczC,MAAM,KAAU,iBAAE,YAAYwC,cAASC,MAAAA,CAA2CvC,KAAOA,KAA0E,CAACA,EAAG,MAAO,CAAC0S,EAAG1S,KAAI6U,CAAoCtS,YAAY,8BAAW,CAACvC,EAAIG,GAAGH,EAAI0S,GAAG1S,EAAI2Q,UAAW,EAAG,OAAM,CAC3d,0CACGvQ,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,EAAK,kCAExB,YAAiBA,W,gDCejB,IACAiG,WAAAA,CAAAyK,SAAAA,IACAzQ,MAAAA,CAAAA,QAAAA,cAAAA,YCrBmQ,MCQ/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB4B,GAAU,W,IAAeP,EAAM,K,EAAC,W,OAAkB,OAAQ,CAAE,OAAIwC,eAAc,GAACxC,MAAM,KAAU,SAAE,MAAMuR,CAClK,UAGD,GAASpQ,GAAAA,YAAQb,IAAAA,E,QCHb,GAAS,CAAC,EAKV,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,YCjB4B,GAAU,W,IAASN,EAAM,K,EAAC,EAAM,MAAK,G,OAAC,EAAK,MAAG,OAAIwC,KAAG,KAAWC,GAAAA,M,CAAgC,OAAU,CAAW,mBAAE,YAAW,CAACA,SAAY,aAAqD,SAAYpC,CAAwB,YAAQ,0BAAOoC,CAAAA,EAAAA,GAAAA,SAAY,WAAsB,MAAM8O,CAAE,EAAC,KAAS,GAAC,U,KAAW,GAAO,EAACrR,MAAOA,CAAqB,YAAUsI,uBAAoB/F,CAAAA,EAAAA,GAAAA,WAAY,WAAoC,MAAM8O,CAAE,EAAC,KAAU,GAAC,U,KAAW,GAAO,EAAI,SAAWrR,EAAG,MAACsI,CAAa,YAASsI,qCACnjB,6BACGxQ,MAAAA,CAAAA,EAAAA,GAAe,EAAG,GAAE,aAExB,QAASa,EAAM,QAAEb,E,QCajB,IACAC,MAAAA,CACAgI,MAAAA,CACAtI,KAAAA,OACAS,QAAAA,MAEAU,MAAAA,CACAnB,KAAAA,OACAS,QAAAA,MAEA8H,SAAAA,CACAvI,KAAAA,CAAAA,QAAAA,QACAS,SAAAA,KC7BmQ,MCO/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,wBClB4B,GAAU,W,IAAqB+B,EAAAA,KAAmBzC,EAAK,EAAC,S,OAAC,OAAqB,C,YAAQ,OAAS,OAAIwC,QAAU,EAAC,QAACxC,KAAM,YAAW,SAAE,MAAMuR,CACnM,WAGD,GAASpQ,GAAAA,YAAQb,IAAAA,E,QCKjB,IACAC,MAAAA,CACAS,QAAAA,CACAf,KAAAA,QACAS,SAAAA,KCboQ,MCOhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBY8B,GAAOK,WAAS,MAAU,KAAU7C,EAAK,EAAC,S,OAAC,MAAYgV,C,MAAU,CAAgB,MAAQ9U,EAAI+U,UAAK,YAAI/U,MAAOA,EAAM,QAE3JI,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,EAAK,aAExB,E,MCCA,IACAC,MAAAA,CACAa,MAAAA,OACA8T,QAAAA,OACAC,OAAAA,CACAlV,KAAAA,QACAS,SAAAA,GAEA0U,KAAAA,CACAnV,KAAAA,QACAS,SAAAA,GAEAuU,MAAAA,CACAhV,KAAAA,QACAS,SAAAA,IAGAgE,SAAAA,CACA2Q,YACA,+BACA,eACA,wBACA,iBAEA,iBAEA,EACAL,YACA,+BACA,YAGA,UAFA,QAIA,wBACA,YAGA,QAFA,UAKA,IAEA,IChDuQ,MCOnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,+DClBqP,W,IAAW,O,EAA8B,QAAY9U,GAAc,EAAW,MAAG,Y,OAAC,OAAoB,C,MAAC,CAAmB,QAAY,UAAM,eAAmBoV,EAAAA,GAAAA,kCAAY,UAAc,MAAKC,GAAAA,iBAAW,oBAAC,cAA2B,eAAe,EAAG,WAAC,UAAYC,EAAAA,UAAM,UAAWC,GAAK,kBAAe,GAAC,mBAAiC,aAAWvV,KAAa,eAAewV,EAAAA,YAAS,eAAYC,EAAK,YAAC,iBAAaC,EAAM,MAAC,gBAAexM,GAAS,MAAQlJ,EAAI2V,MAAY,YAAG,KAAC,OAAC,gBAAQ,EAAShE,a,SAAkB,EAACiE,SAAmB,SAAC,WAAC,c,OAA0CC,EAAAA,OAAiB,SAAC,WAAC,eAAqB,I,GAAwC,CAAC,MAAQ,SAAC,GAAiB7V,OAAI6V,EAAAA,YAAa,IAAE,iCAACtN,EAAAA,WAAoB,CAAClG,EAAcmG,sBAAa,YAAC,aAAcqN,C,SAAkC,SAAQ,G,aAA4BC,E,eAAuC,O,IAAmMtT,U,oBAA6B,GAAOxC,WAAoS,gBAAiL,QAAI,GAAC,CAAkB,eAAU,GAAC,OAAc+V,EAAAA,kBAAqB,EAAI/V,WAA+CF,IAA0C,mHAAnV,Q,GAAA,CAAC,kBAAM,OAAC,iCAA4J,IAAa,sHAAjdgW,EAAAA,GAAAA,EAAAA,C,GAA+B,CAAC,kBAAM,OAAC,iCAAkL,I,GAA2B,KAAWE,CAAAA,EAAAA,EAAAA,EAAAA,CAAiB,EAAI,GAACH,aAAW,kF,SAAwV,G,uBAAoD,W,MAAEtN,CAAAA,EAAW,uBAAS,eAA6fzI,EAAM,KAAngB,0B,MAAK,CAAU0I,WAAY,qB,GAAM,C,QAAUlG,SAAG,GAA8N,sBAAG,G,YAAyC2T,EAAAA,GAAAA,CAAAA,CAAY7T,IAAAA,U,GAAyBpC,UAAIiW,GAAe,IAAwB,4JAAG,IAAW,mBAACrD,MAAM,CAAM,mBAAK,SAAM,YAAI,aAAS,CAAEsD,EAAO,2B,SAAiF,G,CAAwJ,WAAE,GAAC,eAAC7T,IAA4B,MAAO,CAACrC,EAAG,KAAe,uBAAC,OAAM,MAAC,WAAW,KAAQ,8EAACwI,G,CAAuC,IAAC,UAACoK,GAAAA,WAAY,uBAACvQ,EAAmBmG,OAAG,G,CAA0C,IAAC,SAACoK,GAAAA,WAAa,MAAK,GAAI,aAAG,EACz7F,UACGxS,CAEJ,IAASa,e,0EtCFT,SAAYoS,GACRA,EAAAA,QAAAA,OACAA,EAAAA,OAAAA,MACAA,EAAAA,SAAAA,QACAA,EAAAA,WAAAA,UACAA,EAAAA,WAAAA,SACH,EAND,CAAYA,KAAAA,GAAe,KCF3B,SAAKC,GACDA,EAAAA,OAAAA,MACAA,EAAAA,UAAAA,SACAA,EAAAA,SAAAA,QACAA,EAAAA,WAAAA,UACAA,EAAAA,UAAAA,QACH,CAND,CAAKA,KAAAA,GAAW,KAQhB,IsCRK6C,GtCQL,OsCRA,SAAKA,GACDA,EAAAA,SAAAA,QACAA,EAAAA,UAAAA,SACAA,EAAAA,UAAAA,SACAA,EAAAA,aAAAA,YACAA,EAAAA,UAAAA,SACAA,EAAAA,WAAAA,UACAA,EAAAA,UAAAA,SACAA,EAAAA,UAAAA,SACAA,EAAAA,aAAAA,WACH,EAVD,CAAKA,KAAAA,GAAiB,KAYtB,ICZKC,GAgBAC,GDJL,OCZA,SAAKD,GACDA,EAAAA,WAAAA,UACAA,EAAAA,gBAAAA,eACAA,EAAAA,gBAAAA,eACAA,EAAAA,OAAAA,MACAA,EAAAA,UAAAA,SACAA,EAAAA,UAAAA,SACAA,EAAAA,WAAAA,UACAA,EAAAA,mBAAAA,kBACAA,EAAAA,aAAAA,YACAA,EAAAA,SAAAA,QACAA,EAAAA,iBAAAA,gBACAA,EAAAA,eAAAA,cACAA,EAAAA,cAAAA,YACH,EAdD,CAAKA,KAAAA,GAAU,KAgBf,SAAKC,GACDA,EAAAA,YAAAA,WACAA,EAAAA,iBAAAA,gBACAA,EAAAA,iBAAAA,gBACAA,EAAAA,QAAAA,OACAA,EAAAA,WAAAA,UACAA,EAAAA,WAAAA,UACAA,EAAAA,YAAAA,WACAA,EAAAA,qBAAAA,oBACAA,EAAAA,kBAAAA,iBACAA,EAAAA,eAAAA,cACAA,EAAAA,UAAAA,SACAA,EAAAA,gBAAAA,cACH,CAbD,CAAKA,KAAAA,GAAgB,KAiBd,MAAMC,GAAYvW,IACrB,OAAQA,GACJ,KAAKqW,GAAWG,aACZ,OAAOF,GAAiBG,cAC5B,KAAKJ,GAAWK,cACZ,OAAOJ,GAAiBK,eAC5B,KAAKN,GAAWO,QACZ,OAAON,GAAiBO,SAC5B,KAAKR,GAAWS,aACZ,OAAOR,GAAiBS,cAC5B,KAAKV,GAAWW,IACZ,OAAOV,GAAiBW,KAC5B,KAAKZ,GAAWa,OACZ,OAAOZ,GAAiBa,QAC5B,KAAKd,GAAWe,OACZ,OAAOd,GAAiBe,QAC5B,KAAKhB,GAAWiB,QACZ,OAAOhB,GAAiBiB,SAC5B,KAAKlB,GAAWmB,gBACZ,OAAOlB,GAAiBmB,kBAC5B,KAAKpB,GAAWqB,UACZ,OAAOpB,GAAiBqB,YAC5B,KAAKtB,GAAWuB,MACZ,OAAOtB,GAAiBuB,OAAO,EAI9BC,GAAc9X,IACvB,GAAI+X,MAAMC,QAAQhY,GACd,OAAOA,EAAK6P,KAAIoI,GAAKH,GAAWG,KAEpC,OAAQjY,GACJ,KAAKsW,GAAiBG,cAClB,OAAOJ,GAAWG,aACtB,KAAKF,GAAiBO,SAClB,OAAOR,GAAWO,QACtB,KAAKN,GAAiBS,cAClB,OAAOV,GAAWS,aACtB,KAAKR,GAAiBW,KAClB,OAAOZ,GAAWW,IACtB,KAAKV,GAAiBa,QAClB,OAAOd,GAAWa,OACtB,KAAKZ,GAAiBe,QAClB,OAAOhB,GAAWe,OACtB,KAAKd,GAAiBiB,SAClB,OAAOlB,GAAWiB,QACtB,KAAKhB,GAAiBmB,kBAClB,OAAOpB,GAAWmB,gBACtB,KAAKlB,GAAiBqB,YAClB,OAAOtB,GAAWqB,UACtB,KAAKpB,GAAiBuB,OAClB,OAAOxB,GAAWuB,MAAM,EAKpC,ICzFKM,GDyFL,OCzFA,SAAKA,GACDA,EAAAA,WAAAA,UACAA,EAAAA,UAAAA,SACAA,EAAAA,cAAAA,aACAA,EAAAA,aAAAA,YACAA,EAAAA,UAAAA,SACAA,EAAAA,SAAAA,QACAA,EAAAA,UAAAA,SACAA,EAAAA,gBAAAA,eACAA,EAAAA,aAAAA,YACAA,EAAAA,oBAAAA,mBACAA,EAAAA,SAAAA,QACAA,EAAAA,mBAAAA,kBACAA,EAAAA,UAAAA,SACAA,EAAAA,WAAAA,UACAA,EAAAA,UAAAA,SACAA,EAAAA,aAAAA,YACAA,EAAAA,YAAAA,UACH,EAlBD,CAAKA,KAAAA,GAAgB,KAoBrB,ICpBKC,GDoBL,OCpBA,SAAKA,GACDA,EAAAA,eAAAA,cACAA,EAAAA,eAAAA,cACAA,EAAAA,+BAAAA,8BACAA,EAAAA,kBAAAA,iBACAA,EAAAA,YAAAA,WACAA,EAAAA,mBAAAA,kBACAA,EAAAA,mCAAAA,kCACAA,EAAAA,oBAAAA,mBACAA,EAAAA,qBAAAA,oBACAA,EAAAA,sBAAAA,oBACH,EAXD,CAAKA,KAAAA,GAAmB,KAaxB,ICbKC,GDaL,OCbA,SAAKA,GACDA,EAAAA,cAAAA,aACAA,EAAAA,cAAAA,aACAA,EAAAA,QAAAA,OACAA,EAAAA,iBAAAA,gBACAA,EAAAA,YAAAA,WACAA,EAAAA,QAAAA,OACAA,EAAAA,iBAAAA,gBACAA,EAAAA,WAAAA,UACAA,EAAAA,aAAAA,YACAA,EAAAA,aAAAA,YACAA,EAAAA,eAAAA,cACAA,EAAAA,gBAAAA,eACAA,EAAAA,cAAAA,aACAA,EAAAA,YAAAA,WACAA,EAAAA,eAAAA,cACAA,EAAAA,QAAAA,OACAA,EAAAA,gBAAAA,eACAA,EAAAA,YAAAA,WACAA,EAAAA,gBAAAA,eACAA,EAAAA,kBAAAA,iBACAA,EAAAA,oBAAAA,mBACAA,EAAAA,QAAAA,OACAA,EAAAA,OAAAA,MACAA,EAAAA,YAAAA,UACH,EAzBD,CAAKA,KAAAA,GAAc,KA2BnB,ICMYC,GAIAC,GDVZ,OCMA,SAAYD,GACRA,EAAAA,EAAAA,mBAAAA,GAAAA,iBACH,EAFD,CAAYA,KAAAA,GAAU,KAItB,SAAYC,GACRA,EAAAA,EAAAA,UAAAA,GAAAA,SACAA,EAAAA,EAAAA,WAAAA,GAAAA,UACAA,EAAAA,EAAAA,aAAAA,GAAAA,YACAA,EAAAA,EAAAA,UAAAA,GAAAA,QACH,CALD,CAAYA,KAAAA,GAAY,KCJjB,MAAMC,GAA2B,CACpCC,qBAAsB,eACtBC,eAAgB,cCKb,IAAKC,IAAZ,SAAYA,GACRA,EAAAA,aAAAA,YACAA,EAAAA,iBAAAA,gBACAA,EAAAA,YAAAA,UACH,EAJD,CAAYA,KAAAA,GAAQ,K,kDCpCpBxI,IAAAA,OAAayI,MACbzI,IAAAA,OAAaC,KACbD,IAAAA,OAAa0I,MACb,OAAe1I,ICJT,SAAU2I,GACZC,GAEA,IAAKA,EAAMC,OAAQ,OAAO,KAC1B,GAAqB,IAAjBD,EAAMC,OAAc,OAAOxF,GAAAA,MAC/B,MAAMyF,EAAgBC,GAAOH,EAAM,IAAII,KAAKD,GAAOH,EAAM,IAAK,QAC9D,OAAOE,EAAgB,GAAKzF,GAAAA,QAAsBA,GAAAA,KACtD,CAEc,MAAO4F,GASjBC,YAAY9W,IAAQ,yNAEG,kBAARA,GAIPP,KAAKO,IAAMA,EAGH,WAARA,GACAP,KAAKsX,YAAc,KACnBtX,KAAKuX,MAAQ,KACbvX,KAAKwX,UAAW,EAChBxX,KAAK4G,SAAU,GACA,cAARrG,GAKQ,cAARA,GAJPP,KAAKsX,YAAc,QACnBtX,KAAKuX,MAAQ,KACbvX,KAAKwX,UAAW,EAChBxX,KAAK4G,SAAU,GAMA,QAARrG,GACPP,KAAKsX,YAAc,UACnBtX,KAAKuX,MAAQ,KACbvX,KAAKwX,UAAW,EAChBxX,KAAK4G,SAAU,GACRrG,EAAIkX,SAAS,MACpBzX,KAAKsX,YAAc,QACnBtX,KAAKuX,MAAQlW,OAAOd,EAAImX,UAAU,EAAGnX,EAAIyW,OAAS,IAClDhX,KAAKwX,UAAW,EAChBxX,KAAK4G,SAAU,GACRrG,EAAIkX,SAAS,MACpBzX,KAAKsX,YAAc,UACnBtX,KAAKuX,MAAQlW,OAAOd,EAAImX,UAAU,EAAGnX,EAAIyW,OAAS,IAClDhX,KAAKwX,UAAW,EAChBxX,KAAK4G,SAAU,GAEf5G,KAAK4G,SAAU,GArCf5G,KAAK4G,SAAU,CAuCvB,CAEO+Q,sBAAsBC,EAAwBC,GACjD,IAAK7X,KAAK4G,QAAS,MAAO,MAAEyG,OAAWA,GACvC,MAAMyK,EAAeD,EAASX,GAAON,IAAIiB,GAAUX,GAAON,MAC1D,GAAiB,WAAb5W,KAAKO,IACL,MAAO,CAACqX,EAAUC,GAAQE,QAAOlK,KAAOA,IACrC,GAAiB,cAAb7N,KAAKO,IAAqB,CACjC,MAAMyX,EAAeF,EAAaG,KAAK,EAAG,UACpCC,EAAUF,EAAaG,MAAM,SAASN,SACtCO,EAAYJ,EAAaK,QAAQ,SAASR,SAChD,MAAO,CAACO,EAAWF,E,CAChB,GAAiB,cAAblY,KAAKO,IAAqB,CACjC,MAAMyX,EAAeF,EACfI,EAAUF,EAAaG,MAAM,SAASN,SACtCO,EAAYJ,EAAaK,QAAQ,SAASR,SAChD,MAAO,CAACO,EAAWF,E,CAChB,GAAiB,QAAblY,KAAKO,IAAe,CAC3B,MAAMyX,EAAeF,EACfI,EAAUF,EAAaG,MAAM,SAASN,SACtCO,EAAYJ,EAAaC,KAAK,GAAI,UAAUI,QAAQ,SAASR,SACnE,MAAO,CAACO,EAAWF,E,CAChB,GAAIlY,KAAKO,IAAIkX,SAAS,KAAM,CAC/B,MAAMO,EAAeF,EACfI,EAAUF,EAAaG,MAAM,OAAON,SACpCO,EAAYJ,EAAaC,KAAK,EAAIjY,KAAKuX,MAAO,QAAQc,QAAQ,OAAOR,SAC3E,MAAO,CAACO,EAAWF,E,CAChB,GAAIlY,KAAKO,IAAIkX,SAAS,KAAM,CAC/B,MAAMO,EAAeF,EACfI,EAAUF,EAAaG,MAAM,SAASN,SACtCO,EAAYJ,EAAaC,KAAK,EAAIjY,KAAKuX,MAAO,UAAUc,QAAQ,SAASR,SAC/E,MAAO,CAACO,EAAWF,E,CAEvB,MAAO,EACX,EC1FG,MAOMI,GAAS,CAAOtQ,EAAWuQ,EAAeC,MAAmBxQ,GAAOwQ,EAAKC,QAAQzQ,KAASuQ,EAkB1FG,GAA2B,CAACC,EAAoBvZ,EAA0BwZ,EAAY,OAC9FD,GAAc,IACVE,MAAMD,GACNE,OAAO1Z,GACP2Y,OAAOO,IACPS,KAAKH,GC7BDI,GAAuCnL,IAChD,MAAMoL,EAAU,IAAI7B,GAAQvJ,EAAEqL,cACxBtB,EAAWqB,EAAQzB,SAAW,IAAI2B,KAAKtL,EAAE+J,UAAY,KACrDC,EAASoB,EAAQzB,SAAW,IAAI2B,KAAKtL,EAAEgK,QAAU,KACjDuB,EAAQH,EAAQtB,sBAAsBC,EAAUC,GAEhDwB,EAA+C,CACjD/B,YAAazJ,EAAEyJ,cAAgB9F,GAAAA,OAAqB3D,EAAEyJ,cAAgB9F,GAAAA,QAChE3D,EAAEyJ,YACF9F,GAAAA,MACNqG,OAAQuB,EAAM,GACdxB,SAAUwB,EAAM,GAChBE,YAAazL,EAAEyL,YACfJ,aAAcrL,EAAEqL,aAChBK,YAAa1L,EAAE0L,YACfC,iBAAkB3L,EAAEyJ,cAAgB9F,GAAAA,MAAoB,KAAO,MAG7DiI,EAA4B,GAC9BC,EAAuB,GACvBC,EAA4B,GAC5BC,EAAuB,GACvBC,EAAwB,GACxBC,EAA2B,GAC/B,IAAI7E,EAAqB,KACrBN,EAA+B,KAC/B4E,EAA6B,KAC7B9D,EAAiC,KAErC5H,EAAEkM,QAAQC,SAASC,IACXA,EAAEhc,OAASqW,GAAAA,aACXmF,EAAgB3b,KAAKmc,EAAE9S,IAChB8S,EAAEhc,OAASqW,GAAAA,QAClBoF,EAAW5b,KAAKmc,EAAE9S,IACX8S,EAAEhc,OAASqW,GAAAA,aAClBqF,EAAgB7b,KAAKmc,EAAE9S,IAChB8S,EAAEhc,OAASqW,GAAAA,QAClBsF,EAAW9b,KAAKmc,EAAE9S,IACX8S,EAAEhc,OAASqW,GAAAA,OAClBuF,EAAY/b,KAAKmc,EAAEjZ,MACZiZ,EAAEhc,OAASqW,GAAAA,UAClBwF,EAAehc,KAAKmc,EAAEjZ,MACfiZ,EAAEhc,OAASqW,GAAAA,IAClBW,EAAMgF,EAAE9S,GACD8S,EAAEhc,OAASqW,GAAAA,cAClBK,EAAgBsF,EAAEjZ,KACXiZ,EAAEhc,OAASqW,GAAAA,WAClBiF,EAAcU,EAAE9S,GACT8S,EAAEhc,OAASqW,GAAAA,kBAClBmB,EAAkBwE,EAAEjZ,K,IAIxB4Y,EAAW5C,SACXqC,EAAEa,UAAYN,EAAW,IACzBD,EAAgB3C,SAChBqC,EAAEc,eAAiBR,EAAgB,IACnCD,EAAW1C,SACXqC,EAAEe,UAAYV,EAAW,IACzBD,EAAgBzC,SAChBqC,EAAEI,gBAAkBA,GACpBC,EAAW1C,SACXqC,EAAEe,UAAYV,EAAW,IACzBG,EAAY7C,SACZqC,EAAEgB,WAAaR,EAAY,IAC3BC,EAAe9C,SACfqC,EAAEiB,cAAgBR,EAAe,IACjC7E,IACAoE,EAAEkB,YAActF,GAChBN,IACA0E,EAAEmB,aAAe7F,GACjB4E,IACAF,EAAEE,YAAcA,GAChB9D,IACA4D,EAAE5D,gBAAkBA,GAExB,MAAMgF,GAAgB5M,EAAE6M,aAAe,IAAI7B,MAAM,KAOjD,OANI4B,EAAazD,OAAS,EACtBqC,EAAEqB,YAAcD,EACTA,EAAazD,SACpBqC,EAAEqB,YAAcD,EAAa,IAG1BpB,CAAC,EAGCsB,GAAqC9M,IAE9C,MAAMoL,EAAU,IAAI7B,GAAQvJ,EAAEqL,cACxBtB,EAAWqB,EAAQzB,SAAW,IAAI2B,KAAKtL,EAAE+J,UAAY,KACrDC,EAASoB,EAAQzB,SAAW,IAAI2B,KAAKtL,EAAEgK,QAAU,KACjDuB,EAAQH,EAAQtB,sBAAsBC,EAAUC,GAEhDwB,EAA8C,CAChD/B,YAAazJ,EAAEyJ,cAAgB9F,GAAAA,OAAqB3D,EAAEyJ,cAAgB9F,GAAAA,QAChE3D,EAAEyJ,YACF9F,GAAAA,MACNqG,OAAQuB,EAAM,GAAGwB,cACjBhD,SAAUwB,EAAM,GAAGwB,cACnBtB,YAAazL,EAAEyL,YACfuB,MAAO,GACPlB,gBAAiB,GACjBG,eAAgB,GAChBpE,kBAAmB,GACnBkE,WAAY,GACZY,aAAc,GACdX,YAAa,GACbH,WAAY,GACZa,YAAa,GACbd,gBAAiB,GACjBqB,aAAc,GACdC,cAAe,IAGbtB,EAA4B,GAC9BC,EAAuB,GACvBC,EAA4B,GAC5BC,EAAuB,GACvBC,EAAwB,GACxBC,EAA2B,GAC/B,IAAI7E,EAAqB,KACrBN,EAA+B,KAC/B4E,EAA6B,KAkCjC,OAhCA1L,EAAEkM,QAAQC,SAASC,IACXA,EAAEhc,OAASqW,GAAAA,aACXmF,EAAgB3b,KAAKmc,EAAE9S,IAChB8S,EAAEhc,OAASqW,GAAAA,QAClBoF,EAAW5b,KAAKmc,EAAE9S,IACX8S,EAAEhc,OAASqW,GAAAA,aAClBqF,EAAgB7b,KAAKmc,EAAE9S,IAChB8S,EAAEhc,OAASqW,GAAAA,QAClBsF,EAAW9b,KAAKmc,EAAE9S,IACX8S,EAAEhc,OAASqW,GAAAA,OAClBuF,EAAY/b,KAAKmc,EAAEjZ,MACZiZ,EAAEhc,OAASqW,GAAAA,UAClBwF,EAAehc,KAAKmc,EAAEjZ,MACfiZ,EAAEhc,OAASqW,GAAAA,IAClBW,EAAMgF,EAAE9S,GACD8S,EAAEhc,OAASqW,GAAAA,cAClBK,EAAgBsF,EAAEjZ,KACXiZ,EAAEhc,OAASqW,GAAAA,aAClBiF,EAAcU,EAAE9S,G,IAIxBkS,EAAEO,WAAalB,GAAyB,GAAIkB,GAC5CP,EAAEM,gBAAkBjB,GAAyB,GAAIiB,GACjDN,EAAEK,WAAahB,GAAyB,GAAIgB,GAC5CL,EAAEI,gBAAkBf,GAAyB,GAAIe,GACjDJ,EAAEQ,YAAcnB,GAAyB,GAAImB,GAC7CR,EAAES,eAAiBpB,GAAyB,GAAIoB,GAChDT,EAAEkB,YAActF,EAChBoE,EAAEmB,aAAe7F,EACjB0E,EAAEE,YAAcA,GAAe1L,EAAE0L,aAAe,KAEzCF,CAAC,ECpKZ,IAAIla,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,yBAAyB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,WAAalB,EAAI8c,WAAW,QAAU9c,EAAI+c,MAAMC,GAAG,uBAAuBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,UAAU,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,QAAE5H,EAAO,MAAE0Q,IAAS,MAAO,CAAClP,EAAG,yBAAyB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,qBAAsBK,WAAW,yBAAyBzB,MAAM,CAAC,MAAQG,EAAK,MAAQ,OAAS,MAAQyI,EAAQ,KAAOgJ,EAAO,QAAU5Q,GAAS0B,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAIod,yBAAyBzL,IAAQ,KAAK,IAAI,MAAK,IAC5wB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAqC,GAAO,kBAAe,C,MAAC,CAAsB,MAAS,EAACxR,WAAY,kBAACuI,QAAYvI,EAAI+Q,S,YAAsB,EAAStI,GAAAA,CAAAA,C,IAAgB,U,GAA0BjG,SAAG,G,MAAC,GAAO,cAAUmP,C,GAAQ,CAAc,kBAAC,UAAIrP,KAA+DkP,EAAAA,GAAAA,GAAAA,EAAAA,GAAAA,UAAAA,KAAAA,KAAAA,IAAS,YAAiB,eAAgB,IAC7pB,UAGD,E,kBCJ4D6L,GAAOrd,WAAsB,MAAU,KAAaF,EAAK,EAAC,SAAQ,EAACE,MAAIqI,Y,OAA2C,cAAeC,C,MAAiD,CAAsB,+CAACC,SAAYvI,EAAI+Q,UAAI,mCAAC1O,QAAI,EAAS,S,YAAqB,O,IAAEqR,UAAM,GAAE,iBAAC,Q,UAA+D,GAAS,GAAC1T,UAAW,MAAC,OAAUA,KAAY,OAAQ0T,EAAO,QAAC,4BAAI,MAAU,IAAQxS,IAAoBkB,MAAQ,G,MAAoB,CAAY,MAAC,UAACb,SAAU,SAAC,GAAS,WAAIe,EAAmBxC,WAAM,Y,CAAiC,OAAc,CAAQ,MAAC,CAACuB,MAAM,sBAACH,MAAOlB,EAAI8C,GAAK,S,MAA6B,CAAS,MAAC,OAACvB,SAAU,SAAC,GAAM,QAAIe,EAAexC,WAAM,UAAqB,OAAW,C,MAAG,CAA+B,kBAAmB,SAAY,GAAM,MAAQ,EAAE,mBAAC,mBAAqB,kBAACuB,MAAM,GAACH,kBAAWoc,I,MAAyC,CAAgB,MAAC,cAAC/b,SAAU,SAAC,GAAa,eAAKvB,EAAoEF,WAAM,iBAAyD,gCAAwB,gC,MAAC,CAAgB,oDAA8B,uBAACuB,UAAM,EAACH,2BAAyB,I,MAA6B,CAAkB,MAAC,gBAACK,SAAU,SAAC,GAAe,iBAAG,EAA+EzB,WAAM,mBAAyD,OAAS,gCAAe,gC,MAAC,CAAgB,oDAA8B,uBAACuB,UAAM,EAACH,2BAAyB,I,MAA6B,CAAkB,MAAC,gBAACK,SAAU,SAAC,GAAe,iBAAG,EAA0EzB,WAAM,mBAAoD,OAAS,2BAAU,gC,MAAC,CAAgB,+CAA8B,kBAACuB,UAAM,EAACH,2BAAoB,I,MAA6B,CAAa,MAAC,WAACK,SAAU,SAAC,GAAU,YAAG,EAA0EzB,WAAM,cAAoD,OAAS,2BAAU,gC,MAAC,CAAgB,+CAA8B,kBAACuB,UAAM,EAACH,2BAAoB,I,MAA6B,CAAa,MAAC,WAACK,SAAU,SAAC,GAAU,YAAG,EAAyEzB,WAAM,cAAmD,OAAS,0BAAS,gC,MAAC,CAAgB,8CAA8B,iBAACuB,UAAM,EAACH,2BAAmB,I,MAA6B,CAAY,MAAC,UAACK,SAAU,SAAC,GAAS,WAAG,EAA4EzB,WAAM,aAAuD,OAAS,6BAAY,gC,MAAC,CAAgB,kDAA8B,oBAACuB,UAAM,EAACH,2BAAuB,I,MAA6B,CAAgB,MAAC,cAACK,SAAU,SAAC,GAAa,eAAG,EAAkFzB,WAAM,iBAA6D,OAAS,mCAAkB,gC,MAAC,CAAgB,wDAA8B,0BAACuB,UAAM,EAACH,2BAA6B,I,MAA6B,CAAsB,MAAC,oBAACK,SAAU,SAAC,GAAmB,qBAAG,EAA+EzB,WAAM,uBAAyD,OAAS,gCAAgB,gC,MAAC,CAAgB,oDAA8B,wBAACuB,UAAM,EAACH,2BAAyB,I,MAA6B,CAAkB,MAAC,gBAACK,SAAU,SAAC,GAAe,iBAAG,EAAsEzB,WAAM,mBAAwD,OAAS,EAAK,qBAAC,gC,MAAC,CAAgB,mDAA8B,cAACuB,UAAM,EAACH,2BAAwB,I,MAA6B,CAAiB,MAAC,eAACK,SAAU,SAAC,GAAc,gBAAG,EAAyEzB,WAAM,kBAAmD,OAAS,0BAAS,gC,MAAC,CAAgB,8CAA8B,iBAACuB,UAAM,EAACH,2BAAmB,I,MAA6B,CAAY,MAAC,UAACK,SAAU,SAAC,GAAS,WAAG,EACt+H,wBAGD,EAASN,MAAQb,E,QCGjB,MAAMmd,GAAWC,IAAyB,CAA2BvU,GAAIuU,EAAEC,GAAI3a,KAAM0a,EAAEE,OACjFC,GAAe,CAAC1U,EAAYnG,EAAc2O,EAAwB4I,KAAa,CAE7EoD,GAAIxU,EACJyU,KAAM5a,EACN8a,YAAa,KACbC,SAAU,KACVC,KAAMrM,EACNsM,YAAa1D,IAGfwB,GAAWtS,IACb,MAAMsS,EAAU,GA+BhB,OA9BItS,GAAMkS,iBAAiB3C,OAAS,GAChC+C,EAAQjc,KAAKwW,GAAAA,cAEb7M,GAAMgS,iBAAiBzC,OAAS,GAChC+C,EAAQjc,KAAKwW,GAAAA,cAEb7M,GAAMyU,eAAelF,OAAS,GAC9B+C,EAAQjc,KAAKwW,GAAAA,SAEb7M,GAAM0U,eAAenF,OAAS,GAC9B+C,EAAQjc,KAAKwW,GAAAA,SAEb7M,GAAM6N,SAAS0B,OAAS,GACxB+C,EAAQjc,KAAKwW,GAAAA,QAEb7M,GAAMmO,aAAaoB,OAAS,GAC5B+C,EAAQjc,KAAKwW,GAAAA,WAEb7M,GAAMiO,mBAAmBsB,OAAS,GAClC+C,EAAQjc,KAAKwW,GAAAA,iBAEb7M,GAAM2U,oBAAoBpF,OAAS,GACnC+C,EAAQjc,KAAKwW,GAAAA,eAEb7M,GAAMqT,cAAc9D,OAAS,GAC7B+C,EAAQjc,KAAKwW,GAAAA,KAEb7M,GAAM2N,SAAS4B,OAAS,GACxB+C,EAAQjc,KAAKwW,GAAAA,QAEVyF,CAAO,EAGZsC,GAAgB,CAACC,EAAgBC,EAAO5M,KAC1C,MAAM6M,EAAiBF,GAAgBG,MAAMC,GAAYA,IAAY/M,IACrE,GAAI6M,GAAoC,IAAlBD,GAAOvF,OAAc,CACvC,MAAM2F,EAAeL,EAAevE,QAAQA,GAAWA,IAAWpI,IAClE,OAAOgN,C,CAKX,OAHKH,GAAkBD,GAAOvF,OAAS,GACnCsF,EAAexe,KAAK6R,GAEjB2M,CAAc,EAGnBM,GAAoBjD,GAElBA,GAAiB7L,KAAI,CAACqM,EAAmC5B,IACrDsD,GAAa1B,EAAehT,GAAIgT,EAAenZ,KAAMsT,GAAAA,aAAyBiE,MAC7E,GAIPsE,GAAoBpD,GAElBA,GAAiB3L,KAAI,CAACgP,EAAmCvE,IACrDsD,GAAaiB,EAAe3V,GAAI2V,EAAe9b,KAAMsT,GAAAA,aAAyBiE,MAC7E,GAIPwE,GAAeb,GAEbA,GAAepO,KAAI,CAACoM,EAA8B3B,IAC9CsD,GAAa3B,EAAU/S,GAAI+S,EAAUlZ,KAAMsT,GAAAA,QAAoBiE,MAC9D,GAIPyE,GAAeb,GAEbA,GAAerO,KAAI,CAACsM,EAA8B7B,IAC9CsD,GAAazB,EAAUjT,GAAIiT,EAAUpZ,KAAMsT,GAAAA,QAAoBiE,MAC9D,GAIP0E,GAAc3H,GAEZA,GAASxH,KAAI,CAACuH,EAAgBkD,IAAkBsD,GAAaxG,EAAQA,EAAQf,GAAAA,OAAmBiE,MAAW,GAI7G2E,GAAkBtH,GAEhBA,GAAa9H,KAAI,CAAC6H,EAAmB4C,IACjCsD,GAAalG,EAAWA,EAAWrB,GAAAA,UAAsBiE,MACxD,GAIP4E,GAAwBzH,GAEtBA,GAAmB5H,KAAI,CAAC2H,EAAyB8C,IAC7CsD,GAAapG,EAAiBA,EAAiBnB,GAAAA,gBAA4BiE,MAC1E,GAIP6E,GAAoBhB,GAElBA,GAAoBtO,KAAI,CAACuP,EAA2B9E,IAChDsD,GACIwB,EACA3b,OAAO4b,OAAOjJ,IAAmBgJ,GACjC/I,GAAAA,cACAiE,MAEH,GAIPgF,GAAmBzC,GAEjBA,GAAchN,KAAI,CAACyM,EAAqBhC,IACpCsD,GAAatB,EAAaA,EAAajG,GAAAA,IAAgBiE,MACtD,GAIPiF,GAAcpI,GAEZA,GAAStH,KAAI,CAAC2P,EAAqBlF,IAC/BsD,GAAa4B,EAAaA,EAAanJ,GAAAA,OAAmBiE,MACzD,GAIb,QAAejU,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAEgI,MAAOnF,OAAQoF,SAAUpF,OAAQpC,QAASkC,QAASuG,KAAM/F,QAClE+C,MAAM4U,GACF,MAAMzS,GAAU/B,EAAAA,EAAAA,MAAI,GACdsC,GAAKtC,EAAAA,EAAAA,KAAYwU,EAAE5R,MAAMN,KAAO,GAChCnG,GAAO6D,EAAAA,EAAAA,KAAYwU,EAAE5R,MAAMzG,MAAQ,IAEnC0c,GAAiB7Y,EAAAA,EAAAA,KAAI,CACvByP,GAAAA,aACAA,GAAAA,cACAA,GAAAA,UACAA,GAAAA,QACAA,GAAAA,QACAA,GAAAA,OACAA,GAAAA,IACAA,GAAAA,OACAA,GAAAA,aACAA,GAAAA,kBAGEkH,GAAc3W,EAAAA,EAAAA,KAAkBkV,GAAQV,EAAE5R,OAE1CkW,GAAgCjb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,gBAC1EI,GAAgB7P,EAAAA,EAAAA,KAA8B+X,GAAiBvD,EAAE5R,MAAMkS,kBAEvEiE,GAAgClb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,gBAC1EU,GAAgBnQ,EAAAA,EAAAA,KAA8BgY,GAAiBxD,EAAE5R,MAAMgS,kBAEvEoE,GAA2Bnb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,WACrEkB,GAAW3Q,EAAAA,EAAAA,KAA8BkY,GAAY1D,EAAE5R,MAAMyU,gBAE7D4B,GAA2Bpb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,WACrEQ,GAAWjQ,EAAAA,EAAAA,KAA8BmY,GAAY3D,EAAE5R,MAAM0U,gBAE7D4B,GAA0Brb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,UACpEgB,GAAUzQ,EAAAA,EAAAA,KAA8BoY,GAAW5D,EAAE5R,MAAM6N,UAE3D0I,GAA6Btb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,aACvEsB,GAAc/Q,EAAAA,EAAAA,KAA8BqY,GAAe7D,EAAE5R,MAAMmO,cAEnEqI,GAAmCvb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,mBAC7EoB,GAAoB7Q,EAAAA,EAAAA,KAA8BsY,GAAqB9D,EAAE5R,MAAMiO,oBAE/EwI,GAAgCxb,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,iBAC1E6J,GAAgBtZ,EAAAA,EAAAA,KAA8BuY,GAAiB/D,EAAE5R,MAAM2U,qBAEvEgC,GAAuB1b,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,OACjEwG,GAAejW,EAAAA,EAAAA,KAA8B0Y,GAAgBlE,EAAE5R,MAAMqT,eAErEuD,GAA0B3b,EAAAA,EAAAA,WAAS,IAAM8Y,EAAYpc,MAAMsL,SAAS4J,GAAAA,UACpEc,GAAUvQ,EAAAA,EAAAA,KAA8B2Y,GAAWnE,EAAE5R,MAAM2N,UAE3DjX,GAAOuE,EAAAA,EAAAA,WAAS,KACX,CACHyE,GAAIA,EAAG/H,MACP4B,KAAMA,EAAK5B,MACXua,gBAAiBjF,EAActV,MAAM0O,IAAI2N,IACzChC,gBAAiBzE,EAAc5V,MAAM0O,IAAI2N,IACzCS,cAAe1G,EAASpW,MAAM0O,IAAI2N,IAClCU,cAAerH,EAAS1V,MAAM0O,IAAI2N,IAClCnG,QAASA,EAAQlW,MAAM0O,KAAKH,GAAMA,EAAEiO,OACpChG,YAAaA,EAAYxW,MAAM0O,KAAKH,GAAMA,EAAEgO,KAC5CjG,kBAAmBA,EAAkBtW,MAAM0O,KAAKH,GAAMA,EAAEiO,OACxDQ,mBAAoB+B,EAAc/e,MAAM0O,KAAKH,GAAMA,EAAEgO,KACrDb,aAAcA,EAAa1b,MAAM0O,KAAKH,GAAMA,EAAEgO,KAC9CvG,QAASA,EAAQhW,MAAM0O,KAAKoI,GAAMA,EAAEyF,SAG5C,MAAO,CACHxU,KACAnG,OACA0T,gBACAM,gBACAQ,WACAV,WACAQ,UACAM,cACAF,oBACAyI,gBACArD,eACA1F,UACAxO,UACAzI,OACAqd,cACAmC,gCACAK,6BACAC,mCACAJ,2BACAK,gCACAH,0BACAD,2BACAF,gCACAQ,uBACAC,0BACAX,iBAER,EACA5b,MAAO,CACH,UAAW,SAAUwc,EAAQC,GACzBve,KAAKmH,GAAKmX,CACd,EACA,YAAa,SAAUA,EAAQC,GAC3Bve,KAAKgB,KAAOsd,CAChB,EACA,uBAAwB,SAAUA,EAAQC,GACtCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,cAC3DtU,KAAK0U,cAAgBkI,GAAiB0B,EAC1C,EACA,uBAAwB,SAAUA,EAAQC,GACtCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,cAC3DtU,KAAKgV,cAAgB6H,GAAiByB,EAC1C,EACA,qBAAsB,SAAUA,EAAQC,GACpCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,SAC3DtU,KAAKwV,SAAWuH,GAAYuB,EAChC,EACA,qBAAsB,SAAUA,EAAQC,GACpCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,SAC3DtU,KAAK8U,SAAWkI,GAAYsB,EAChC,EACA,eAAgB,SAAUA,EAAQC,GAC9Bve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,QAC3DtU,KAAKsV,QAAU2H,GAAWqB,EAC9B,EACA,mBAAoB,SAAUA,EAAQC,GAClCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,WAC3DtU,KAAK4V,YAAcsH,GAAeoB,EACtC,EACA,yBAA0B,SAAUA,EAAQC,GACxCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,iBAC3DtU,KAAK0V,kBAAoByH,GAAqBmB,EAClD,EACA,0BAA2B,SAAUA,EAAQC,GACzCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,eAC3DtU,KAAKme,cAAgBf,GAAiBkB,EAC1C,EACA,oBAAqB,SAAUA,EAAQC,GACnCve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,KAC3DtU,KAAK8a,aAAeyC,GAAgBe,EACxC,EACA,eAAgB,SAAUA,EAAQC,GAC9Bve,KAAKwb,YAAca,GAAcrc,KAAKwb,YAAa8C,EAAQhK,GAAAA,QAC3DtU,KAAKoV,QAAUoI,GAAWc,EAC9B,GAEJ5b,SAAU,CACN8b,qBACI,OAAOxe,KAAK0d,eAAe5P,KAAKmM,IAAa,CACzC9S,GAAI8S,EACJjZ,KAAMhB,KAAKiQ,GAAG,qBAAqBuE,GAASyF,eAEpD,KC3S2S,M,uBCAxF,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCHhC,IACA1b,MAAAA,CACAa,MAAAA,CACAnB,KAAAA,QACAS,SAAAA,GAEAsc,WAAAA,CACA/c,KAAAA,OACAS,QAAAA,MAEAM,QAAAA,CACAf,KAAAA,QACAS,SAAAA,IAGA6F,WAAAA,CAAAka,eAAAA,KClC6Q,MCOzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5Btf,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,mBAAmB,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAAY,CAAC3gB,EAAIG,GAAG,IAAIH,EAAI0S,GAAG1S,EAAI+R,GAAG,qCAAqC,MACzS,EACI3R,GAAkB,GCsBtB,IACAC,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,qCACA,IC7B6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCehC,IACA6E,WAAAA,CAAAua,qBAAAA,GAAAC,qBAAAA,IACAxgB,MAAAA,CACAa,MAAAA,CACAnB,KAAAA,QACAS,SAAAA,GAEAsc,WAAAA,CACA/c,KAAAA,OACAS,QAAAA,OAGAO,QAAAA,CACAqc,yBAAAA,IACA1b,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,iDAAAA,CAAAof,eAAAA,EAAAA,QACA,wBACA,yCACA,ICtD6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCrBzB,MAAMC,GAAgBC,IACzB,MAAMC,EAAOC,GAAaF,GAC1B,OAAOG,GAAiBF,EAAK,EAIpBC,GAAgBF,GAClB,IAAII,KAAK,CAACJ,GAAS,CAAEjhB,KAAM,eAIzBohB,GAAoBF,GACtB,IAAI5Z,SAAoB,CAACC,EAASC,KACrC,MAAM8Z,EAAS,IAAIC,WACnBD,EAAOE,OAAS,SAAU5b,GACtB2B,EAAQ,IAAIka,WAAW7b,EAAM8b,OAAOC,QACxC,EACAL,EAAOM,QAAU,SAAUvW,GACvB7D,EAAO6D,EACX,EACAiW,EAAOO,kBAAkBX,EAAK,IAKzBY,GAAgBZ,GAClB,IAAI5Z,SAAgB,CAACC,EAASC,KACjC,MAAM8Z,EAAS,IAAIC,WACnBD,EAAOE,OAAS,SAAU5b,GACtB2B,EAAQ3B,EAAM8b,OAAOC,OACzB,EACAL,EAAOM,QAAU,SAAUvW,GACvB7D,EAAO6D,EACX,EACAiW,EAAOS,WAAWb,EAAK,ICpBlBc,GAAW9a,MACpBuV,EACAwF,UAEaC,EAAAA,EAAAA,KAAAA,IAAe,cAAczF,EAAY0F,gBAAiB,CACnEF,WACDxS,MAAMG,GACLA,EAAE9O,OAIGshB,GAAWlb,UAMhB+a,EAAOI,QAAUtK,MAAMC,QAAQiK,EAAOI,UACtCJ,EAAOI,OAASJ,EAAOI,OAAOvH,KAAK,MAEnCmH,EAAOxF,aAAe1E,MAAMC,QAAQiK,EAAOxF,eAC3CwF,EAAOxF,YAAcwF,EAAOxF,YAAY3B,KAAK,YAEpCoH,EAAAA,EAAAA,KAAAA,IAAe,aAAc,CAAED,WAAUxS,MAAMG,GACxDA,EAAE9O,QAIGwhB,GAAcpb,MACvB+a,EACAhH,EAAuB,KACvBM,EAA2B,QAE3B,OAAQN,GACJ,IAAK,SACD,OAAO,KACX,IAAK,YACL,IAAK,YACL,IAAK,MACD,MACJ,QACI,GAAIA,EAAazB,SAAS,MAAQyB,EAAazB,SAAS,KAAM,CAC1D,IAAI+I,EAAmB,EACnBC,EAAkC,OAEtC,GAAIjH,EAAkB,CAClB,MAAMkH,EAAQlH,EAAiBkH,MAAM,gBACrC,GAAIA,EAAO,CACP,MAAO,CAAEthB,EAAOuhB,GAAQD,EACxBF,EAAmBI,SAASxhB,EAAO,IACnCqhB,EAAwB,MAATE,EAAe,SAAW,M,EAKjD,GAAIT,EAAO5I,cAAgBuJ,GAAAA,QAA4B,CACnD,MAAMC,EAA+B,SAAjBL,EACdrP,KAAK2P,KAAKP,EAAmB,IAC7BA,GAAoB,EAC1BN,EAAS,IACFA,EACHrI,OAAQX,GAAON,MAAMqB,IAAI6I,EAAa,UAAU3I,MAC5C,SACFN,SAAS+C,c,MAEZ,GAAIsF,EAAO5I,cAAgBuJ,GAAAA,MAA0B,CACxD,MAAMG,EAA6B,WAAjBP,EACO,GAAnBD,EACAA,GAAoB,EAC1BN,EAAS,IACFA,EACHrI,OAAQX,GAAON,MAAMqB,IAAI+I,EAAW,QAAQnJ,SACvC+C,c,EAIjB,MAER,aAAauF,EAAAA,EAAAA,KAAAA,IAAe,gBAAiB,CAAED,WAC1Ce,OAAOrb,IACwB,MAAxBA,EAAI2D,SAASC,QACb0X,QAAQ5X,MAAM,8BAA+B1D,GAE1C,CAAE7G,KAAM,CAAC,MAEnB2O,MAAMG,IAEH,MAAMsT,EAAetT,EAAE9O,KAAKqiB,WAAavT,EAAE9O,KAAKqiB,UAAUpK,OAAS,EAC7DnJ,EAAE9O,KAAKqiB,UAAUC,QAAO,CAACC,EAAKlN,IACrB,IAAI+E,KAAK/E,EAAKmN,WAAa,IAAIpI,KAAKmI,EAAIC,WACzCnN,EACAkN,IACPC,WACD,IAAIpI,MAAOyB,cACX7b,EAAO8O,EAAE9O,KAEf,OADAA,EAAKoiB,aAAeA,IAAgB,IAAIhI,MAAOyB,cACxC7b,CAAI,GACb,EAGGyiB,GAAgBrc,MACzBuV,EACAwF,EACA5Q,UAEa6Q,EAAAA,EAAAA,KAAAA,IACJ,mBAAmBzF,EAAY0F,iBAAiB9Q,IAAS,CAC1D4Q,OAAQ,IAAKA,EAAQI,OAAQ,UAEhC5S,MAAMG,GACHA,EAAE9O,OAEL2O,MAAMG,IACHA,EAAE4T,UAAUzH,SAAS0H,IACjBA,EAAE3b,QAAQiU,SAASnM,IACfA,EAAE8T,IAAM,GAAG,GACb,IAEC9T,KAIN+T,GAAUzc,MACnBuV,EACAwF,UAEaC,EAAAA,EAAAA,KAAAA,IACJ,aAAazF,EAAY0F,gBAAiB,CAAEF,WAChDxS,MAAMG,GACHA,EAAE9O,OAID8iB,GAAkB1c,MAC3B+a,EACAhH,EAAuB,QAEvB,OAAQA,GACJ,IAAK,SACL,IAAK,YACL,IAAK,YACL,IAAK,MACD,MACJ,SACQA,EAAazB,SAAS,MAAQyB,EAAazB,SAAS,QAChDyI,EAAO5I,cAAgBuJ,GAAAA,QACvBX,EAAS,IACFA,EACHrI,OAAQX,GAAON,MAAMqB,IAAI,EAAG,UAAUE,MAAM,SACvCN,SAAS+C,eAEXsF,EAAO5I,cAAgBuJ,GAAAA,QAC9BX,EAAS,IACFA,EACHrI,OAAQX,GAAON,MAAMqB,IAAI,EAAG,QAAQJ,SAC/B+C,iBAIjB,MAER,aAAauF,EAAAA,EAAAA,KAAAA,IAAe,qBAAsB,CAAED,WAC/Ce,OAAOrb,IACuB,KAAvBA,EAAI2D,SAASC,QACb0X,QAAQ5X,MAAM,8BAA+B1D,GAE1C,CAAE7G,KAAM,CAAC,MAEnB2O,MAAMG,IACH,MAAMsT,EAAetT,EAAE9O,KAAKqiB,WAAavT,EAAE9O,KAAKqiB,UAAUpK,OAAS,EAC7DnJ,EAAE9O,KAAKqiB,UAAUC,QAAO,CAACC,EAAKlN,IACrB,IAAI+E,KAAK/E,EAAKmN,WAAa,IAAIpI,KAAKmI,EAAIC,WACzCnN,EACAkN,IACPC,WACD,IAAIpI,MAAOyB,cACX7b,EAAO8O,EAAE9O,KAEf,OADAA,EAAKoiB,aAAeA,IAAgB,IAAIhI,MAAOyB,cACxC7b,CAAI,GACb,EAGG+iB,GAAc3c,MACvB4c,EACAT,EACAU,EACA1K,EAAkCuJ,GAAAA,QAE3BV,EAAAA,EAAAA,KAAAA,IACH,+BAA+B4B,EAAInH,qBAAqB0G,EAAI1G,4BACxDlC,GAAyB,GAAIsJ,kBACjB1K,KAEf5J,MAAMG,GAAMA,EAAE9O,OAGVkjB,GAAgB9c,SAGlBgb,EAAAA,EAAAA,KAAAA,IAAe,kBAAkBzS,MAAMG,GAC1CA,EAAE9O,OAIGmjB,GAAY/c,MAMvBuV,EAAoBwF,UAWLC,EAAAA,EAAAA,KAAAA,IACJ,sBAAsBzF,EAAY0F,gBAAiB,CAAEF,WACzDxS,MAAMG,GAAMA,EAAE9O,OAGVojB,GAAmBhd,MAC5BuV,EACAwF,UAEaC,EAAAA,EAAAA,KAAAA,IACJ,sBAAsBzF,EAAY0F,wBAAyB,CAC5DF,WAEHxS,MAAMG,GAAMA,EAAE9O,OAGVqjB,GAAqBjd,MAC9B4c,EACAT,KAEA,MAAMpB,EAAS,CAAE6B,IAAKA,EAAInH,cAAe0G,IAAKA,EAAI1G,eAClD,aAAauF,EAAAA,EAAAA,KAAAA,IACJ,yBAA0B,CAAED,WAChCxS,MAAMG,GAAMA,EAAE9O,MAAK,EAWfsjB,GAAuBld,eAGnBgb,EAAAA,EAAAA,KAAAA,IACJ,yBAA0B,CAAED,WAChCxS,MAAMG,GAAMA,EAAE9O,OAGVujB,GAAkBnd,eAGdgb,EAAAA,EAAAA,KAAAA,IAAe,qBAAqBzS,MAAMG,GAAMA,EAAE9O,OAGtDwjB,GAAiBpd,eAGbgb,EAAAA,EAAAA,KAAAA,IAAe,qBAAqBhZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OAS5DyjB,GAAiBrd,eACbgb,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBzS,MAAMG,GAAMA,EAAE9O,OAGrD0jB,GAAgBtd,eAGZgb,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBhZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OA0B3D2jB,GAAavd,eACTgb,EAAAA,EAAAA,KAAAA,IACJ,eACJzS,MAAMG,GAAMA,EAAE9O,OAGV4jB,GAAoBxd,eAGhBgb,EAAAA,EAAAA,KAAAA,IACJ,qBACJzS,MAAMG,GAAMA,EAAE9O,OAGV6jB,GAAmBzd,gBACtBgb,EAAAA,EAAAA,KAAAA,UAAkB,oBAAoBhZ,IAAK,EAGxC0b,GAAmB1d,MAC5BgC,EACA5H,UAEa4gB,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBhZ,IAAM5H,GAAOmO,MAAMG,GAC/DA,EAAE9O,OAIG+jB,GAAmB3d,eAGfgb,EAAAA,EAAAA,KAAAA,KAAgB,mBAAoB5gB,GAAOmO,MAAMG,GAAMA,EAAE9O,OAG7DgkB,GAAqB5d,eAGjBgb,EAAAA,EAAAA,KAAAA,KAAgB,4BAA6B6C,GAAQtV,MAC7DG,GAAMA,EAAE9O,OAIJkkB,GAAoB9d,eAGhBgb,EAAAA,EAAAA,KAAAA,IAAe,4BAA4BzS,MAAMG,GAAMA,EAAE9O,OAG7DmkB,GAAgB/d,eACZgb,EAAAA,EAAAA,KAAAA,IAAe,eAAezS,MAAMG,GAAMA,EAAE9O,OAGhDokB,GAAuBhe,eAGnBgb,EAAAA,EAAAA,KAAAA,IAAe,mBAAmBhZ,aAAcuG,MAAMG,GAC/DA,EAAE9O,OAIGqkB,GAAYje,eACRgb,EAAAA,EAAAA,KAAAA,IAAe,eAAehZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OAatDskB,GAAele,eAGXgb,EAAAA,EAAAA,KAAAA,KAAgB,gBAAiBmD,GAAa5V,MAAMG,GAC7DA,EAAE9O,OAIGwkB,GAAYpe,eAGRgb,EAAAA,EAAAA,KAAAA,IAAe,iBAAiBmD,EAAYnc,KAAMmc,GAC1D5V,MAAMG,GAAMA,EAAE9O,OAGVykB,GAAere,eACXgb,EAAAA,EAAAA,KAAAA,IAAe,iBAAiBzS,MAAMG,GAAMA,EAAE9O,OAGlD0kB,GAAiBte,eAGbgb,EAAAA,EAAAA,KAAAA,IAAe,yBAAyBzS,MAAMG,GAAMA,EAAE9O,OAG1D2kB,GAAYve,eACRgb,EAAAA,EAAAA,KAAAA,IAAe,iBAAiBhZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OAGxD4kB,GAAoBxe,eAGhBgb,EAAAA,EAAAA,KAAAA,IAAe,iBAAiBhZ,aAAcuG,MAAMG,GAC7DA,EAAE9O,OAaG6kB,GAAmBze,eAGfgb,EAAAA,EAAAA,KAAAA,IAAe,wBAAwBzS,MAAMG,GAAMA,EAAE9O,OAGzD8kB,GAAiB1e,eACbgb,EAAAA,EAAAA,KAAAA,IAAe,4BAA4BzS,MAAMG,GAAMA,EAAE9O,OAG7D+kB,GAA2B3e,SAC7B4e,KAAcrW,MAAMG,GAAMA,EAAEC,KAAKH,GAAMA,EAAE3M,SAGvCgjB,GAAkB7e,eAGdgb,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBzS,MAAMG,GAAMA,EAAE9O,OAGrDglB,GAAc5e,eACVgb,EAAAA,EAAAA,KAAAA,IAAe,gBAAgBzS,MAAMG,GAAMA,EAAE9O,OAGjDklB,GAAa9e,eAGTgb,EAAAA,EAAAA,KAAAA,IAAe,gBAAgBhZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OASvDmlB,GAAoB/e,eAGhBgb,EAAAA,EAAAA,KAAAA,KAAgB,mBAAoBgE,GAAMzW,MAAMG,GAAMA,EAAE9O,OAG5DqlB,GAAiBjf,eAGbgb,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBgE,EAAKhd,KAAMgd,GAAMzW,MAAMG,GACnEA,EAAE9O,OAIGslB,GAAiBlf,eAGbgb,EAAAA,EAAAA,KAAAA,IAAe,oBAAoBhZ,KAAMuG,MAAMG,GAAMA,EAAE9O,OAG3DulB,GAAqBnf,MAC9Bof,EACAC,UAEarE,EAAAA,EAAAA,KAAAA,IAAe,iBAAiBoE,aAAoBC,KAC5D9W,MAAMG,GAAMA,EAAE9O,OAGV0lB,GAAqBtf,MAC9Buf,EACAC,EACAC,UAEazE,EAAAA,EAAAA,KAAAA,KAAgB,qBAAqBuE,YAAoB,CAClEC,SACAE,YAAaD,IAIRE,GAAuB3f,eAGnBgb,EAAAA,EAAAA,KAAAA,IAAe,mBAAmBzS,MAAMG,GAC1CA,EAAE9O,OAIJgmB,GAAwB5f,MACjCuW,EACAsJ,KAEA,MAAMC,EAAY5e,KAAKC,UAAU0e,GAC3BE,QAAkBjG,GAAagG,GAC/BE,EAAO,IAAI7F,KAAK,CAAC4F,GAAY,CAAEjnB,KAAM,6BACrC8J,EAAW,IAAIqd,SAIrB,OAHArd,EAASsd,OAAO,OAAQ3J,EAAE1a,MAC1B+G,EAASsd,OAAO,cAAe3J,EAAE3I,aACjChL,EAASsd,OAAO,OAAQF,SACXhF,EAAAA,EAAAA,KAAAA,KAAgB,kBAAmBpY,EAAU,CACtD1I,QAAS,CACL,eAAgB,yBAErBqO,MAAMG,GAAMA,EAAE9O,MAAK,EAGbumB,GAAqBngB,MAC9BgC,EACAuU,EACAsJ,KAEA,MAAMC,EAAY5e,KAAKC,UAAU0e,GAC3BE,QAAkBjG,GAAagG,GAC/BE,EAAO,IAAI7F,KAAK,CAAC4F,GAAY,CAAEjnB,KAAM,6BACrC8J,EAAW,IAAIqd,SACrBrd,EAASsd,OAAO,OAAQ3J,EAAE1a,MAC1B+G,EAASsd,OAAO,cAAe3J,EAAE3I,aACjChL,EAASsd,OAAO,OAAQF,GACxB,MAAMI,QAAoBpF,EAAAA,EAAAA,KAAAA,IACtB,mBAAmBhZ,IACnBY,EACA,CACI1I,QAAS,CACL,eAAgB,yBAG1BqO,MAAMG,GAAMA,EAAE9O,OAChB,OAAOwmB,CAAW,EAGTC,GAAwBrgB,UACjC,MAAMoE,QAAiB4W,EAAAA,EAAAA,KAAAA,IAAe,mBAAmBhZ,YAAc,CACnEse,aAAc,gBAEZC,EAAa,IAAIhG,WAAWnW,EAASxK,MACrCkmB,QAAkBlF,GAAa,IAAIT,KAAK,CAACoG,KACzCV,EAAM3e,KAAKsf,MAAMV,GACvB,OAAOD,CAAG,EAGDY,GAAkBzgB,eACdgb,EAAAA,EAAAA,KAAAA,KAAgB,kCAAmC,CAC5D0F,aAActlB,IAGTulB,GAAmB3gB,eACfgb,EAAAA,EAAAA,KAAAA,KAAgB,mCAAoC,CAC7D0F,aAActlB,IAITwlB,GAAe5gB,eACXgb,EAAAA,EAAAA,KAAAA,KAAgB,+BAAgC,CACzD0F,aAActlB,IAGTylB,GAAiB7gB,eACbgb,EAAAA,EAAAA,KAAAA,KAAgB,iCAAkC,CAC3D0F,aAActlB,I,gBCtkBf,MAAM0lB,GAAsBC,IAAgB,CAC/ClK,KAAMkK,EAAEjoB,KACR0d,GAAIuK,EAAE/e,GACNyU,KAAMsK,EAAEllB,KACR8a,YAAaoK,EAAEnT,YACfgJ,SAAUmK,EAAEC,SACZlK,YAAaiK,EAAEE,cAyCNC,GAA8BH,IAEvC,IAAKA,EAAG,OAAO,KACf,IAAKA,EAAElP,OAAQ,OAAO,KAEtB,MAAMsP,EAAyB,CAC3BpK,cAAe,GACfzC,gBAAiB,GACjBE,gBAAiB,GACjBwC,cAAe,GACfrB,aAAc,GACdxF,QAAS,GACTF,QAAS,GACTQ,YAAa,GACbwG,mBAAoB,GACpB1G,kBAAmB,IAwBvB,OArBAwQ,EAAElM,SAAS5F,IACHA,EAAK4H,OAAS1H,GAAAA,QACdgS,EAAGnK,cAAcre,KAAK,CAAEqJ,GAAIiN,EAAKuH,GAAI3a,KAAMoT,EAAKwH,OACzCxH,EAAK4H,OAAS1H,GAAAA,QACrBgS,EAAGpK,cAAcpe,KAAK,CAAEqJ,GAAIiN,EAAKuH,GAAI3a,KAAMoT,EAAKwH,OACzCxH,EAAK4H,OAAS1H,GAAAA,aACrBgS,EAAG7M,gBAAgB3b,KAAK,CAAEqJ,GAAIiN,EAAKuH,GAAI3a,KAAMoT,EAAKwH,OAC3CxH,EAAK4H,OAAS1H,GAAAA,aACrBgS,EAAG3M,gBAAgB7b,KAAK,CAAEqJ,GAAIiN,EAAKuH,GAAI3a,KAAMoT,EAAKwH,OAC3CxH,EAAK4H,OAAS1H,GAAAA,IACrBgS,EAAGxL,aAAahd,KAAKsW,EAAKwH,MACnBxH,EAAK4H,OAAS1H,GAAAA,OACrBgS,EAAGhR,QAAQxX,KAAKsW,EAAKwH,MACdxH,EAAK4H,OAAS1H,GAAAA,UACrBgS,EAAG1Q,YAAY9X,KAAKsW,EAAKwH,MAClBxH,EAAK4H,OAAS1H,GAAAA,cACrBgS,EAAGlK,mBAAmBte,KAAKsW,EAAKuH,IACzBvH,EAAK4H,OAAS1H,GAAAA,iBACrBgS,EAAG5Q,kBAAkB5X,KAAKsW,EAAKwH,K,IAGhC0K,CAAE,EAGb,QACI/nB,MAAO,CACHa,MAAO,CACHmnB,MAAO,CAAC7kB,OAAQsU,OAChBtX,QAAS,MAEb8nB,MAAO,CACHvoB,KAAMmD,OACN1C,QAAS,MAEbgV,SAAU,CACN6S,MAAOrlB,QACPxC,SAAS,GAEb+nB,UAAW,CACPxoB,KAAMiD,QACNxC,SAAS,GAEb6nB,MAAO,CACHA,MAAOvQ,MACPtX,QAAS,IAAM,CACX4V,GAAAA,QACAA,GAAAA,aACAA,GAAAA,aACAA,GAAAA,IACAA,GAAAA,OACAA,GAAAA,QACAA,GAAAA,UACAA,GAAAA,gBAGRb,KAAM,CACFxV,KAAMiD,QACNxC,SAAS,GAEb8U,MAAO,CACHvV,KAAMiD,QACNxC,SAAS,GAEbkV,OAAQ,CACJ3V,KAAMiD,QACNxC,SAAS,GAEbgoB,KAAM,CACFzoB,KAAMiD,QACNxC,SAAS,GAEbioB,aAAc,CACV1oB,KAAMiD,QACNxC,SAAS,GAEbG,SAAU,CACNZ,KAAMiD,QACNxC,SAAS,GAEbiV,MAAO,CACH1V,KAAMiD,QACNxC,SAAS,GAEb6U,YAAa,CACTtV,KAAMiD,QACNxC,SAAS,GAEb4U,YAAa,CACTrV,KAAMmD,OACN1C,QAAS,UAEbkoB,aAAc,CACV3oB,KAAMmD,OACN1C,QAAS,IAEbmoB,cAAe,CACX5oB,KAAMiD,QACNxC,SAAS,GAEb0I,SAAU,CACNnJ,KAAMiD,QACNxC,SAAS,GAEbmV,MAAO,CACH5V,KAAM+X,MACNtX,QAAS,MAEbuV,sBAAuB,CACnBhW,KAAMiD,QACNxC,SAAS,IAGjBgE,SAAU,CACNokB,UAAW,CACP1c,MACI,OAAKpK,KAAKZ,MACNY,KAAK0T,SACE1T,KAAKZ,MAAM0O,KAAKmM,GAAMA,EAAE0B,KAExB3b,KAAKZ,MAAMuc,GAJE,IAM5B,EACAoL,IAAI/e,GACKA,EAIDhI,KAAK0T,SACL1T,KAAKgE,MACD,QACAhE,KAAKgnB,MAAMjP,QAAQkC,GAAMjS,EAAI0C,SAASuP,EAAE0B,OAG5C3b,KAAKgE,MACD,QACAhE,KAAKgnB,MAAMvK,MAAMxC,GAAMA,EAAE0B,KAAO3T,KAXpChI,KAAKgE,MAAM,QAAS,KAc5B,GAEJijB,kBAAmB,CACf7c,MACI,MAAMxM,EAAUyoB,GAA2BrmB,KAAKZ,OAEhD,OAAOxB,CACX,IAGR2G,WAAY,CAAE2iB,qBAAoBA,IAClCnoB,OACI,MAAO,CACHgV,WAAY,GACZiT,MAAO,GACPG,eAAgBlW,GAAiBmW,SACjCjT,YAAY,EAEpB,EACArS,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACJ,GAAKA,EACL,GAAIhI,KAAK0T,SAAU,CACf,MAAM2T,EAAQrnB,KAAKZ,MAAM2Y,QAAQ3D,IAAUpU,KAAKgnB,MAAMvK,MAAM6K,GAAMA,EAAE3L,KAAOvH,EAAKuH,OAC5E0L,EAAMrQ,QAAQhX,KAAKgnB,MAAMlpB,QAAQupB,E,KAClC,CACH,IAAKrnB,KAAKZ,MAAMuc,GAAI,OACf3b,KAAKgnB,MAEEhnB,KAAKgnB,MAAMvK,MAAM6K,GAAMA,EAAE3L,KAAO3b,KAAKZ,MAAMuc,MACnD3b,KAAKgnB,MAAMlpB,KAAKkC,KAAKZ,OAFrBY,KAAKgnB,MAAQ,CAAChnB,KAAKZ,M,CAK/B,EACA6I,WAAW,EACXlG,MAAM,GAEVgS,WAAW/L,EAAKuf,GACPvf,GAAQuf,GACbvnB,KAAKgU,+BACT,EACA4S,aAAa5e,EAAKuf,GACTvf,GAAQuf,GACbvnB,KAAKgU,+BACT,GAEJ/U,QAAS,CACL6U,YAAY9L,GACHA,EAIDhI,KAAK0T,SACL1T,KAAKgE,MACD,QACAgE,EAAI8F,KAAKuC,GAAMrQ,KAAKgnB,MAAMvK,MAAMxC,GAAMA,EAAE0B,KAAOtL,OAGnDrQ,KAAKgE,MACD,QACAhE,KAAKgnB,MAAMvK,MAAMxC,GAAMA,EAAE0B,KAAO3T,KAXpChI,KAAKgE,MAAM,QAAS,KAc5B,EACAkQ,kBAAkBH,GACd/T,KAAKgE,MAAM,QAAS,CAChB2X,GAAI5H,EACJ6H,KAAM7H,EACN+H,YAAa,KACbC,SAAU,GACVC,KAAM,YACNC,YAAa,GAErB,EACAjI,gCACIhU,KAAKwnB,cACDxnB,KAAK+T,WACL/T,KAAKumB,OAAS,CACVjS,GAAAA,QACAA,GAAAA,aACAA,GAAAA,aACAA,GAAAA,IACAA,GAAAA,OACAA,GAAAA,QACAA,GAAAA,WAEJ,EACA,GAER,EACAnP,oBAAoBsiB,EAAalB,EAAOmB,EAAMC,GAC1C,IAAI3nB,KAAKib,MAAMC,GAAG,iBAAiBlb,KAAKmnB,kBACxC,IACInnB,KAAKib,MAAM2M,MAAM,iBAAiB5nB,KAAKmnB,kBACvC,MAAMU,EAAe,IAAIC,gBACnBC,EAAc,GAAG/nB,KAAK4mB,cAAgB,KAAKa,GAAe,KAChEI,EAAaxC,OAAO,IAAK0C,GACJ,qBAAVxB,GAAyBA,EAAMxN,MACtC8O,EAAaxC,OAAO,QAASkB,EAAMxN,QAEnB,qBAAT2O,GACPG,EAAaxC,OAAO,OAAQqC,GAER,qBAAbC,GACPE,EAAaxC,OAAO,WAAYsC,GAEpC,MAAMK,EAAehoB,KAAKgnB,YAAcvZ,EAAAA,EAAAA,KAAAA,IAC/B,eAAeoa,EAAavW,cAChC5D,MAAMG,GAAMA,EAAE9O,KAAK+O,IAAImY,MAC5B,GAAKjmB,KAAKZ,MAEH,GAAIY,KAAK0T,SAAU,CACtB,MAAMuU,EAAM,IAAIC,IAAIF,EAAYla,KAAKqa,GAAMA,EAAExM,MAC7C3b,KAAKgnB,MAAQ,IAAIgB,KAAgBhoB,KAAKZ,MAAM2Y,QAAQoQ,IAAOF,EAAIG,IAAID,EAAExM,M,MAErE3b,KAAKgnB,OAASgB,GAAe,IAAIlP,OAAO,CAAC9Y,KAAKZ,aAL9CY,KAAKgnB,MAAQgB,C,CAOnB,QACEhoB,KAAKib,MAAMoN,IAAI,iBAAiBroB,KAAKmnB,iB,CAE7C,EACAmB,uBACItoB,KAAKmU,YAAa,EAClBnU,KAAKgE,MAAM,mBAAoBhE,KAAK+T,WACxC,EACAwU,aAAaC,EAAAA,GAAAA,IAAQ,sBAAsBrjB,iBACvC,IACInF,KAAKyoB,oBAAqB,EAC1BzoB,KAAK0oB,kBAAoBlG,KACzBxiB,KAAKyoB,oBAAqB,C,CAC5B,MAAO7iB,IACLlG,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,4B,CAE3B,MCpWkT,M,uBCAxF,GAAe,KCO7O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYzP,GAAOK,WAAS,MAAU,KAAU7C,EAAK,EAAC,S,OAAC,EAAM,IAAKoV,CAAI,OAAIlV,KAAOA,EAAI0S,OAEjHtS,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,EAAK,aAExB,E,MCCA,IACAC,MAAAA,CACAa,MAAAA,OACAgU,KAAAA,SAEA1Q,SAAAA,CACA2Q,YACA,uBACA,mBACA,oBACA,sBACA,iBACA,cACA,sBACA,mBACA,oBACA,uBACA,aACA,oBACA,WACA,iBACA,UACA,aACA,aACA,gBACA,eACA,kBACA,wBACA,iBACA,mBACA,OACA,QACA,eAEA,ICvCuQ,MCOnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBY7S,GAAOK,WAAS,MAAU,KAAU7C,EAAK,EAAC,S,OAAC,EAAM,IAAKoV,C,MAAK,CAAe,YAAIlV,KAAOA,EAAI0S,OAEjItS,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,EAAK,aAExB,E,MCCA,IACAC,MAAAA,CACAa,MAAAA,OACAgU,KAAAA,QACAuV,KAAAA,CAAAA,OAAAA,SAEAjmB,SAAAA,CACA2Q,YACA,uBACA,YACA,6BACA,aACA,2BACA,aACA,2BACA,cACA,gCACA,aACA,2BACA,gBACA,iCACA,OACA,QACA,oBAEA,IC9B8Q,MCO1Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,wBClB2DrV,GAAM,W,IAAC,O,EAA+B,QAAY,G,OAAoB,OAAW,C,IAAG,OAAmB,MAAC,CAACyI,0BAAoB,EAAClG,WAAI,mBAAYmG,WAAG,G,YAAa,S,YAAU,O,IAAC,Y,GAAyC1I,UAAM,G,kBAAkF,QAAkB,EAACsV,GAAAA,EAAAA,GAAW,C,MAAC,CAAc,QAAYpV,mBAAwB,MAAQA,EAAIsV,MAAM,YAAWkT,kBAAK,eAAe7nB,EAAAA,YAAS,SAAW4U,GAAK,YAAevV,KAAIqV,EAAAA,SAAY,MAAQrV,EAAI2V,MAAM,KAAQ,EAAC3V,KAAW,oBAACuI,KAAAA,EAAYvI,KAAwBqC,eAAa,cAACmG,MAAG,Q,OAAmBlG,EAAG,Q,YAAuC,kB,kCAA0CtC,CAAAA,EAAI8K,GAAAA,EAAO,C,YAAC,O,MAACvJ,CAAgB,YAAI,qBAAC,OAAM,EAAW,WAAO,SAA4C,EAAO,UAAQvB,MAAS,UAACoC,eAAmBsoB,GAAK,O,WAAenpB,CAAiB,aAAIe,SAAG,SAAgB,GAAI,EAAC,KAAQ,CAACxC,EAAO,WAAW,S,CAAmC,OAAa,C,IAAC,S,MAAgB,CAAuB,MAAQE,EAAI6Y,oBAAM,MAAU,IAAc,UAAG,KAAC,OAAC,WAAW,EAAC8R,QAAK,MAAQ,EAAI,MAAK,qBACxpC,IACGvqB,MAAAA,EAAe,KAEnB,OAAe,EAAEA,S,UC6CjB,IACAC,MAAAA,CACAa,MAAAA,CAAAA,KAAAA,OAAAA,OAAAA,OACA0pB,SAAAA,CACA7qB,KAAAA,QACAS,SAAAA,GAEA8U,MAAAA,CACAvV,KAAAA,QACAS,SAAAA,GAEAgoB,KAAAA,CACAzoB,KAAAA,QACAS,SAAAA,GAEAG,SAAAA,CACAZ,KAAAA,QACAS,SAAAA,GAEA+U,KAAAA,CACAxV,KAAAA,QACAS,SAAAA,GAEA6U,YAAAA,CACAtV,KAAAA,QACAS,SAAAA,GAEA8nB,MAAAA,CACAvoB,KAAAA,OACAS,QAAAA,QAEA4U,YAAAA,CACArV,KAAAA,OACAS,QAAAA,SAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,QAEAmV,MAAAA,CACA5V,KAAAA,MACAS,QAAAA,IAAAA,IAEAqqB,QAAAA,CACA9qB,KAAAA,QACAS,SAAAA,GAEAqY,MAAAA,CACA9Y,KAAAA,QACAS,SAAAA,GAEA0I,SAAAA,CACAnJ,KAAAA,QACAS,SAAAA,GAEAqjB,IAAAA,CACA9jB,KAAAA,OACAS,QAAAA,cAEA4iB,IAAAA,CACArjB,KAAAA,OACAS,QAAAA,cAEAkV,OAAAA,CACA3V,KAAAA,QACAS,SAAAA,IAGAK,KAAAA,KAAAA,CACAiqB,MAAAA,EACAhgB,KAAAA,IAEAtG,SAAAA,CACAumB,sBACA,kBACA,WACA,kDAEA,sCAJA,IAMA,EACAC,qBACA,kBACA,mBACA,WACA,WACAnR,QAAAA,KAAAA,IACAjK,KAAAA,GAAAA,GAAAA,IAAAA,GAAAA,OAAAA,iBACAiL,KAAAA,OAEA,yCAEA,oBACA,WACA,WACAhB,QAAAA,KAAAA,IACAjK,KAAAA,GAAAA,GAAAA,IAAAA,GAAAA,OAAAA,cACAiL,KAAAA,KAEA,sCAGA,WACA,WACAhB,QAAAA,KAAAA,IACAjK,KAAAA,GAAAA,EAAAA,gBACAiL,KAAAA,OAEA,yBA1BA,IA6BA,GAEAjX,MAAAA,CACAknB,KAAAA,GACA,2DACA,EACAhgB,IAAAA,GACA,2BACA,GAEA/J,QAAAA,CACA4pB,KAAAA,GACA,eACA,wDACA,sBACA,sCACA,MACA,wBACA,+BAEA,ICpLuQ,MCOnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,WClBYroB,GAAOK,WAAS,MAAU,KACrE,aACD,OAAIvC,EAAAA,WAAoB,0DAExB,E,MCIA,IACAS,OAAA,OAAAoqB,SAAAA,EAAA,EACArnB,MAAAA,CACAsnB,OAAAA,CACApnB,QAAAA,GAAA,+BAAAiG,WAAAA,EAAAlG,MAAAA,KCZyQ,MCOrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCUhCmH,EAAAA,WAAAA,UAAc,iBAAkBmgB,GAChCngB,EAAAA,WAAAA,UAAc,cAAeogB,GAC7BpgB,EAAAA,WAAAA,UAAc,eAAgBqgB,IAC9BrgB,EAAAA,WAAAA,UAAc,aAAcsgB,IAC5BtgB,EAAAA,WAAAA,UAAc,uBAAwBugB,IACtCvgB,EAAAA,WAAAA,UAAc,qBAAsBuH,IACpCvH,EAAAA,WAAAA,UAAc,uBAAwBwH,IACtCxH,EAAAA,WAAAA,UAAc,cAAewgB,IAC7BxgB,EAAAA,WAAAA,UAAc,YAAaygB,IAC3BzgB,EAAAA,WAAAA,UAAc,cAAe0gB,IAC7B1gB,EAAAA,WAAAA,UAAc,cAAe2gB,IAC7B3gB,EAAAA,WAAAA,UAAc,oBAAqB4gB,IACnC5gB,EAAAA,WAAAA,UAAc,mBAAoB6gB,GAAAA,GAClC7gB,EAAAA,WAAAA,UAAc,qBAAsB8gB,GAAAA,GACpC9gB,EAAAA,WAAAA,UAAc,kBAAmB+gB,IACjC/gB,EAAAA,WAAAA,UAAc,cAAeghB,IAC7BhhB,EAAAA,WAAAA,UAAc,cAAeihB,IAC7BjhB,EAAAA,WAAAA,UAAc,QAASkhB,EAAAA,OACvBlhB,EAAAA,WAAAA,UAAc,cAAemhB,IAC7BnhB,EAAAA,WAAAA,UAAc,eAAgBohB,IAC9BphB,EAAAA,WAAAA,UAAc,kBAAmBqhB,IACjCrhB,EAAAA,WAAAA,UAAc,6BAA8BshB,IAC5CthB,EAAAA,WAAAA,UAAc,mBAAoBuhB,IAClCvhB,EAAAA,WAAAA,UAAc,2BAA4BwhB,IAC1CxhB,EAAAA,WAAAA,UAAc,mBAAoByhB,IAClCzhB,EAAAA,WAAAA,UAAc,qBAAsB0hB,ICnDpC1hB,EAAAA,WAAAA,UAAc,aAAc,CACxB2hB,KAAKC,EAAGC,EAASC,GACb,MAAM3iB,EAAW2iB,EAAMrlB,QAAQslB,gBAC/BD,EAAME,MAAMC,IAAI,SAAS,IAAM9iB,EAASuf,MAAMmD,EAAQ3rB,SACtD4rB,EAAME,MAAMC,IAAI,QAAQ,IAAM9iB,EAASggB,IAAI0C,EAAQ3rB,QACvD,I,kECPoP,W,MAAW,K,IAAwBpB,MAAM,G,SAAC,KAAO,EAAC,KAAa,C,YAAC,C,OAAS,Q,MAAyBA,C,IAAO,G,SAA6B,G,MAAO,M,KAA4BA,EAAM,oB,YAAsB,O,IAAG,U,GAAkCyC,W,MAA6B,GAAC,M,MAAC,CAAU,oBAAkB,KAAO,KAAgF,qBAAClB,MAAM,CAACH,KAAOlB,EAAIktB,uB,GAAkD,EAACA,uBAAwB,C,MAAC,CAAC3rB,MAAAA,EAAW,aAA0B,gCAAC,wBAACqR,MAAM,CAAM,QAAK,eAAQ,GAAI,QAAW,MAAW,WAAc5S,eAAImtB,eAAwBC,UAAc9qB,eAA+BxC,MAAM,CAAC,MAAO,EAAC,qBAAgB,SAAQ,SAAE,GAAC,EAAM,qBAAG,CAAC,EAAe,qC,SAA4D,G,KAAI,S,GAAcA,W,MAAO,GAAM,MAAC,0CAAE,mBAAE,MAAMK,CAAgFL,MAAM,gBAAC,MAAQE,GAAM,QAAI,cAAE4S,GAAM,CAAO,kBAAO,wBAAM,IAA0C,CAACya,EAAAA,EAAAA,EAAO3C,CAAI,OAACnpB,KAAW,KAAe,yBAAgB,qDAAM,MAAC,CAAC,MAAc,QAAwD,EAAwJ,OAAS,KAAa,MAAM,CAAgBzB,MAAM,S,SAAQ,SAACwtB,GAAoC,SAAS,CAAM,EAAE,WAAK,WAA6B,GAAEttB,gBAAcstB,CAAmG,MAAMC,CAAwDztB,MAAM,KAAC,0BAAQ,4BAAUwC,GAAG,uBAAsB,kGAACC,OAAAA,EAAAA,MAAY,CAAOzC,IAAM,GAAC,QAAgB,CAAG,MAAM,CAAG,4BAAKE,OAAIutB,SAAsNlrB,CAAAA,EAAIgY,EAAAA,EAAK,CAAC9X,YAAY,QAAOzC,CAAAA,EAAK,GAAC,sE,MAAC,YAAQ,gC,MAAM,CAAE,MAAS,SAA2HyC,CAAAA,EAAAA,GAAAA,EAAY,CAAO,YAAS,OAAyP,MAAOD,CAAUD,cAAI0Z,GAAE,KAAK,M,EAAuB,YAAQ,eAAS,iJ,OAAC,SAAS,CAAM,MAAE,YAAY,OAAyI,MAAI/b,CAAuDF,MAAM,SAAa,mE,IAAG,EAAC,wC,YAAC,QAAyB,yNAAG,OAAK8Q,EAAG,MAAK,CAAgB9Q,IAAM,GAAC,QAAQ,CAAM,OAACuB,MAAM,UAACH,OAAWssB,S,CAA8CxtB,EAAIwtB,GAAAA,IAAAA,EAAAA,GAAAA,EAAmB,GAAC9C,0CAAG,6C,KAAC,mD,MAACnpB,CAAgC,SAAiBzB,GAAAA,CAAO,gBAAQ,EAAS,SAAU,mBAAE,MAAK,CAAgByC,MAAW,OAA0BzC,MAAM,CAAC,MAAM,EAAC,oBAAE,qBAAIE,EAAM,oBAAoBA,CAA6CuC,EAAqBvC,WAAO,wB,CAAqF,OAAQ,C,MAAoB,CAA4B,gBAAC,UAA+BF,CAAAA,EAAK,KAAC,C,YAAU,W,CAAC,MAAQ,CAA2C,OAAIwC,KAAG,K,CAAiB,KAAM,mBAAC,6BAAE,oBAAG,CAACtC,EAAIG,GAAG,0CAAuC,EAAE,KAAO,kBAC9oH,IACGC,MAAAA,SAAoB,GAExB,EAASa,qBAAuB,C,6NCJuI,W,IAAc,OAACI,EAAK,EAAC,S,OAACH,EAAK,KAAMusB,C,MAAUrrB,C,UAA6BqrB,K,CAAclsB,EAAAA,GAAAA,EAAW,CAAU,OAAGvB,eAAY0tB,gBAAsC,SAAU,IAA0B,MAAM,CAAerrB,MAAI,WAA4BvC,SAAM,YAAC,WAAQ,CAAE,EAAE,WAAY,a,EAAuEA,GAAK,EAAC,yB,OAAC,aAAQ,CAAE,OAAG,CAACE,EAAG,KAAW8oB,CAAwB,mBAAU,E,MAAmB/M,CAAEjc,MAAM,K,CAAa,4CAAC,YAAM,OAAmK,MAAI,CAAK,MAAI,MAEtyBM,EAAAA,GAAAA,EAAe,OAAK,cAExB,OAASa,EAAM,KAAEb,C,sKCqCjB,MAAMutB,GAAkB,iBAwDXC,GACTL,IAEA,MAAMM,EACFpnB,EAAAA,EAAAA,iBAAwB,kBACxB8mB,EAAYO,iBAAiB,iBAC3BC,EAAkBtnB,EAAAA,EAAAA,iBAAwB,kBAC5C8mB,EAAYO,iBAAiB,mBAC5BD,EACCG,EAAsBvnB,EAAAA,EAAAA,iBAAwB,sBAChD8mB,EAAYO,iBAAiB,sBAC7BP,EAAYO,iBAAiB,wBAC5BD,EACL,MAAO,CAAEG,sBAAqBD,kBAAiB,EAGtCE,IAAiBC,EAAAA,GAAAA,IAAY,CACtCjlB,GAAI,SACJklB,MAAO,IACIC,KAEXC,QAAS,CACLP,iBAAiBK,GACb,OAAQG,IACC7nB,EAAAA,EAAAA,iBAAwB,0BAGrB0nB,EAAMI,UAAY,IAAI/hB,SAAS8hB,EAE/C,EACAE,cAAcL,GACV,OAAQM,IACHN,EAAMO,aAAe,IAAIliB,SAASiiB,EAC3C,GAEJE,QAAS,CACL1nB,0BAA0BsE,SAChBlE,QAAQwI,IAAI,CACd/N,KAAK8sB,WAAWrjB,GAChBzJ,KAAK+sB,iBAAiBtjB,IAE9B,EACAK,mBACI,QAAST,GAAAA,EAAAA,QACb,EACAlE,iBAAiBsE,GACTA,IAAUJ,GAAAA,EAAAA,SAAsBI,GACpC,MAAMujB,QAAsB7M,EAAAA,EAAAA,KAAAA,IACxB,yCACFzS,MAAMG,GAAMA,EAAE9O,OACZiuB,GACAhtB,KAAKitB,iBAAiBD,EAE9B,EACA7nB,uBAAuBsE,GACfA,IAAUJ,GAAAA,EAAAA,SAAsBI,GACpC,MAAMD,QAAe2W,EAAAA,EAAAA,KAAAA,IAAe,gDAAgDzS,MAAMG,GAAMA,EAAE9O,OAClGiB,KAAKitB,iBAAiB,CAAEzjB,UAC5B,EACAyjB,iBAAiBluB,GACbiB,KAAKktB,OAAOnuB,GACZ,MAAMouB,EAAkB9mB,KAAKC,UAAUtG,KAAKotB,QAC5C1jB,aAAaE,QAAQiiB,GAAiBsB,EAC1C,EACAE,uBAAuBtuB,GACnB,MAAMuuB,EAAgB,CAClBtsB,KAAMjC,EAAKiC,KACXusB,QAASxuB,EAAKyuB,aAAa,SAAMngB,EACjCogB,QAAS1uB,EAAKyuB,aAAa,SAAMngB,EACjCqgB,QAAS3uB,EAAKyuB,aAAa,SAAMngB,GAErCrN,KAAKitB,iBAAiBK,EAC1B,EACAK,eACI,MAAMzY,EAAO,CAAClV,KAAKutB,QAASvtB,KAAKytB,QAASztB,KAAK0tB,SAC/C,OAAKxY,EAAKuH,MAAMvG,GAAMA,IACfhB,EAD0B,EAErC,KAIFoX,GAAmB,KACrB,MAAMsB,EAAsBlkB,aAAaC,QAAQkiB,IACjD,IAAIgC,EAAgBxnB,KAAKsf,MAAMiI,GAwB/B,OAvBKC,IACDA,EAA8B,CAC1BpkB,SAAU,GACVqkB,WAAY,GACZC,aAAc,MACdR,QAAS,KACTE,QAAS,KACTC,QAAS,KACTM,WAAY,GACZC,uBAAwB,EACxBC,sBAAuB,KACvBC,wBAAyB,KACzBC,uBAAwB,KACxB3B,SAAU,GACVG,YAAa,GACbyB,eAAe,EACfC,uBAAuB,EACvB9kB,OAAQ,CACJ+kB,kBAAkB,EAClBC,iBAAkB,MAIvBX,CAAa,EC5MxB,IAAKY,IAAL,SAAKA,GACDA,EAAAA,gBAAAA,yBACAA,EAAAA,2BAAAA,0BACAA,EAAAA,oBAAAA,4BACH,EAJD,CAAKA,KAAAA,GAAY,KAKjB,UC8DA,IACAlwB,MAAAA,CACAmwB,sBAAAA,CACAzwB,KAAAA,QACAS,SAAAA,IAGAK,OACA,OACA4vB,eAAAA,EACAC,qBAAAA,EACAC,eAAAA,EACAlD,SAAAA,GACA8C,aAAAA,GAEA,EACA/rB,SAAAA,KACA,aACAkpB,YAEA,sBAAAK,EAAAA,oBAAAC,GAAA,qBACA,IACA,IACA,IACA,qDACA,EACAA,GAAAA,KAAAA,YAAAA,iBAAAA,sBACA,EACA,oDAEA,GACA,kEACA,kDACA,mDACA,GACA,0DACA,EACA4C,GACAC,GACAC,GACA,2CACA,EACA/C,GAAAA,KAAAA,YAAAA,SAAAA,SAAAA,oBACA,2EACA,OACA6C,EACA,CACAvoB,MAAAA,sCACAygB,MAAAA,CACA,CAAAiI,GAAAA,GAAAA,YAAA9c,KAAAA,UAAA5L,MAAAA,gCACA,CAAA0oB,GAAAA,GAAAA,YAAA9c,KAAAA,WAAA5L,MAAAA,4BACA,CAAA0oB,GAAAA,GAAAA,WAAA9c,KAAAA,YAAA5L,MAAAA,+BACA2oB,EACA,CAAAD,GAAAA,GAAAA,eAAA9c,KAAAA,qBAAA5L,MAAAA,0BACA,KACA,CAAA0oB,GAAAA,GAAAA,iBAAA9c,KAAAA,OAAA5L,MAAAA,qCACA,CAAA0oB,GAAAA,GAAAA,mBAAA9c,KAAAA,QAAA5L,MAAAA,+BACA,iBAEA,KACAwoB,EACA,CACAxoB,MAAAA,gCACAygB,MAAAA,CACA,CAAAiI,GAAAA,GAAAA,uBAAA9c,KAAAA,MAAA5L,MAAAA,+BACA,CACA0oB,GAAAA,GAAAA,sBACA9c,KAAAA,WACA5L,MAAAA,+BAEA,CAAA0oB,GAAAA,GAAAA,kBAAA9c,KAAAA,QAAA5L,MAAAA,0BACA4oB,EACA,CAAAF,GAAAA,GAAAA,mBAAA9c,KAAAA,uBAAA5L,MAAAA,8BACA,MACA,iBAEA,KACA,CACAA,MAAAA,kCACAygB,MAAAA,CACAoI,EACA,CAAAH,GAAAA,GAAAA,oBAAA9c,KAAAA,YAAA5L,MAAAA,+BACA,KACA8oB,EACA,CAAAJ,GAAAA,eAAA9c,KAAAA,aAAA5L,MAAAA,2BACA,KACA+oB,GAAAA,EACA,CACAL,GAAAA,GAAAA,YACA9c,KAAAA,cACA5L,MAAAA,EAAAA,sBAAAA,2BAEA,KACAgpB,EACA,CAAAN,GAAAA,GAAAA,aAAA9c,KAAAA,aAAA5L,MAAAA,wBACA,MACA,iBAEA,CACAA,MAAAA,mCACAygB,MAAAA,CACAgI,EACA,CAAAC,GAAAA,GAAAA,mBAAA9c,KAAAA,WAAA5L,MAAAA,6BACA,KACAipB,EACA,CAAAP,GAAAA,GAAAA,gBAAA9c,KAAAA,OAAA5L,MAAAA,2BACA,KACAkpB,EACA,CAAAR,GAAAA,GAAAA,iBAAA9c,KAAAA,YAAA5L,MAAAA,4BACA,MACA,iBAEA,CACAA,MAAAA,mCACAygB,MACA0I,GAAAA,KAAAA,YAAAA,cAAAA,iBACA,CACA,CAAAT,GAAAA,GAAAA,qBAAA9c,KAAAA,WAAA5L,MAAAA,sBACA,CACA0oB,GAAAA,GAAAA,oBACA9c,KAAAA,eACA5L,MAAAA,kCAGA,KAEA,gCACA,IClMoQ,M,uBCA/C,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,eCtBwI,W,MAAyGvI,K,IAAO,MAAM,G,SAAI,KAAO,C,MAAiB,C,WAAO,G,IAAOA,I,YAAkC,EAAC,K,6BAAoD,G,IAA8C,MAAKwC,CAAAA,EAAG,QAAW,yCAACxC,MAAM,CAAC,KAAO,GAAG,MAAQ,mBAAmB,CAACwC,EAAG,MAAM,CAACxC,MAAM,CAAC,IAAM,cAA8C,IAAM,SAAS,aAAa,uBAAuB,MAAQ,uBAAuB,KAAO,oBAAqB,EAAE,KAAI,CAAyP,OAAG,QAAO,MAAS,mBAAQ,GAAQ,MAAE,CAAC,MAAW,CAAG,kDAAO,aAAkF,oCAAC,MAAQ,uBAAiB6R,KAAO8f,qBAA8C,mKAAC,MAAiQlpB,CAAAA,EAAAA,GAAAA,EAAW,C,MAAc,CAAYC,MAAG,G,UAAWhG,K,GAAM,KAAW,QAAa,GAACxC,EAAM,GAAG,yBAAS,OAA0B,C,GAAiI,CAAE,MAAC,YAAiB,OAAhBqC,EAAI,kBAAa,mB,OAAoB,MAAW,GAAY,uL,YAAO,O,6BAAiC,G,UAAmG,GAAC,KAAS,iH,+BAA6C,M,WAAwC,e,MAAI,OAAC,wBAACuQ,SAAM,gEAAkB,YAAK,OAAyB9S,IAAM,UAAC,cAAqB,MAAS,GAACE,cAAa,CAAmB,GAAQ,CAA2D,kBAAQ,eAAiB,EAA8BoC,OAAS,IAAoBsvB,MAAAA,IAA2B,4BAACnwB,MAAU,CAAyB,iBAAO,QAAae,EAAG,4BAAqB,oEAAe,GAAIA,KAE11ElC,MAAAA,CAEJ,MAASa,EAAQb,uB,6NCJ2BkC,GAAOK,WAAS,MAAU,KAAgB7C,EAAK,EAAC,S,OAAC,OAAcgB,C,MAAQ,CAAsB,QAAQd,EAAI2xB,QAAc,QAAU,EAAC,QAAK,sBAAkC,WAAU3xB,KAAa,iBAAgB4xB,EAAAA,aAAW,qBAAG,YAAC,c,GAAwC5xB,CAAuB,sBAAC,YAAC,gB,EAAgE,wBAAC,YAAC,eAAgB,C,EAAoC,gBAAC,YAAC,WAAgB,C,EAAqC,iBAAC,YAAC,WAAiB,C,EAAuC,kBAAC,YAAC,aAAkB,C,EAAuC,+BAAE,cAACuI,G,YAAsC,KAAU,E,IAAC,UAA0E,GAAC,WAACqK,MAAM,iEAAK,EAAEvQ,OAAK,GAAwBmG,C,IAAc0N,yBAAK,GAAE,eAAC,I,MAAiD,iCAAkB,C,MAAC,CAAqB,cAAC7U,UAAM,U,MAAgCe,C,MAA6ByvB,EAAK3b,kBAA+B,SAAC,YAAC3U,EAAAA,KAAU,EAAC,sBAAwB,EAAI,uCAAIc,GAAqCmG,C,IAAc0N,iCAAK,GAAE,eAAC,I,MAAiD,iCAAkB,C,MAAC,CAA6B,cAAC7U,UAAM,kB,MAAwCe,C,MAA6ByvB,EAAK3b,0BAAuC,SAAC,YAAC3U,EAAAA,KAAU,EAAC,8BAAgC,EAAI,+CAAIc,GAAmBmG,C,IAAc0N,eAAK,GAAE,eAAC,IAA4C,MAAG,iCAAgB,IAC58C,UAGD,E,MCJ4C5T,GAAOK,WAAS,MAAU,KAAc7C,EAAK,EAAC,S,OAAC,OAAcE,C,MAAU,CAAsB,cAAc,EAACc,MAAQ,kBAAG,SAAC,W,GAA2B,CAAiC,mBAAC,0BAAG,IAIpO,E,MCGA,IACAT,MAAAA,CAAAA,QAAAA,WAAAA,aACAQ,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA+wB,eAAAA,GACA,IACA,uBACA,gBACA,EAQAviB,EAAAA,EAAAA,KAAAA,UACA8C,eAAAA,KAAAA,aACA7C,MAAAA,KACA,iBACA9N,EAAAA,EAAAA,IAAAA,2CAAAA,IAXA6N,EAAAA,EAAAA,KAAAA,KACAwiB,eAAAA,KAAAA,aACAviB,MAAAA,KACA,iBACA9N,EAAAA,EAAAA,IAAAA,+CAAAA,IAUA,+BAGA,CAFA,UACAF,EAAAA,EAAAA,IAAAA,0CACA,CACA,ICpCkR,MCO9Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCehC,IACAnB,MAAAA,CAAAA,QAAAA,UAAAA,UACAgG,WAAAA,CAAA2rB,0BAAAA,IACAxtB,SAAAA,CACAmtB,gBACA,kBACA,qDADA,EAEA,EACAxwB,UACA,OACA,CACAS,KAAAA,KAAAA,GAAAA,QACAV,MAAAA,OACA+wB,UAAAA,GAEA,CACArwB,KAAAA,mBACAV,MAAAA,sBACA+wB,UAAAA,GAEA,CACArwB,KAAAA,iBACAV,MAAAA,oBACA+wB,UAAAA,GAEA,CACArwB,KAAAA,0BACAV,MAAAA,4BACA+wB,UAAAA,GAEA,CACArwB,KAAAA,UACAV,MAAAA,UACA+wB,UAAAA,IAEA,wDACA,GAEApxB,OACA,OACAqxB,aAAAA,EACAC,SAAAA,OACAP,YAAAA,EACAQ,aAAAA,GAEA,GC9E4Q,MCQxQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCjBjB,SAAS,GAACpK,GACrB,SAASqK,EAAEC,EAAGC,GACV,IAAI9iB,EAAGwa,EAAGjC,EAAGwK,EAAGhP,EAMhB,OALAwE,EAAQ,WAAJsK,EACJE,EAAQ,WAAJD,EACJ9iB,EAAQ,WAAJ6iB,EACJrI,EAAQ,WAAJsI,EACJ/O,GAAS,WAAJ8O,IAAuB,WAAJC,GACjB9iB,EAAIwa,EAAQ,WAAJzG,EAAiBwE,EAAIwK,EAAI/iB,EAAIwa,EAAQ,WAAJzG,EAAqB,WAAJA,EAAiBwE,EAAIwK,EAAQ,WAAJhP,EAAiBwE,EAAIwK,EAAIhP,EAAIwE,EAAIwK,CAC/H,CAEA,SAASC,EAAEH,EAAGC,EAAG9iB,EAAGwa,EAAGjC,EAAGwK,EAAGhP,GAEzB,OADA8O,EAAID,EAAEC,EAAGD,EAAEA,EAAEE,EAAI9iB,GAAK8iB,EAAItI,EAAGjC,GAAIxE,IAC1B6O,EAAEC,GAAKE,EAAIF,IAAM,GAAKE,EAAGD,EACpC,CAEA,SAASG,EAAEJ,EAAGC,EAAG9iB,EAAGwa,EAAGjC,EAAGwK,EAAGhP,GAEzB,OADA8O,EAAID,EAAEC,EAAGD,EAAEA,EAAEE,EAAItI,EAAIxa,GAAKwa,EAAGjC,GAAIxE,IAC1B6O,EAAEC,GAAKE,EAAIF,IAAM,GAAKE,EAAGD,EACpC,CAEA,SAAS/U,EAAE8U,EAAGC,EAAGtI,EAAGxa,EAAGuY,EAAGwK,EAAGhP,GAEzB,OADA8O,EAAID,EAAEC,EAAGD,EAAEA,EAAEE,EAAItI,EAAIxa,EAAGuY,GAAIxE,IACrB6O,EAAEC,GAAKE,EAAIF,IAAM,GAAKE,EAAGD,EACpC,CAEA,SAASI,EAAEL,EAAGC,EAAGtI,EAAGxa,EAAGuY,EAAGwK,EAAGhP,GAEzB,OADA8O,EAAID,EAAEC,EAAGD,EAAEA,EAAEpI,GAAKsI,GAAK9iB,GAAIuY,GAAIxE,IACxB6O,EAAEC,GAAKE,EAAIF,IAAM,GAAKE,EAAGD,EACpC,CAEA,SAASpX,EAAEmX,GACP,IAEI7iB,EAFA8iB,EAAI,GACJtI,EAAI,GAER,IAAKxa,EAAI,EAAG,GAAKA,EAAGA,IAAKwa,EAAIqI,IAAM,EAAI7iB,EAAI,IAAKwa,EAAI,IAAMA,EAAE7W,SAAS,IAAKmf,GAAKtI,EAAE2I,OAAO3I,EAAEnR,OAAS,EAAG,GACtG,OAAOyZ,CACX,CACA,IACIM,EAAGljB,EAAGmjB,EAAG9a,EAAGsa,EAAGC,EAAG9iB,EAAGwa,EADrBuI,EAAI,GAwBR,IAtBAxK,EAAI,SAAUsK,GACVA,EAAIA,EAAErf,QAAQ,QAAS,MACvB,IAAK,IAAIsf,EAAI,GAAItI,EAAI,EAAGA,EAAIqI,EAAExZ,OAAQmR,IAAK,CACvC,IAAIxa,EAAI6iB,EAAES,WAAW9I,GACrB,IAAMxa,EAAI8iB,GAAKrvB,OAAO8vB,aAAavjB,IAAM,IAAMA,GAAK,KAAOA,EAAI8iB,GAAKrvB,OAAO8vB,aAAavjB,GAAK,EAAI,MAAQ8iB,GAAKrvB,OAAO8vB,aAAavjB,GAAK,GAAK,KAAM8iB,GAAKrvB,OAAO8vB,aAAavjB,GAAK,EAAI,GAAK,MAAO8iB,GAAKrvB,OAAO8vB,aAAiB,GAAJvjB,EAAS,KACtO,CACA,OAAO8iB,CACX,CAPI,CAOFvK,GACFwK,EAAI,SAAUD,GACV,IAAID,EAAG7iB,EAAI8iB,EAAEzZ,OACbwZ,EAAI7iB,EAAI,EACR,IAAK,IAAIwa,EAAI,KAAOqI,EAAIA,EAAI,IAAM,GAAK,GAAItK,EAAIlQ,MAAMmS,EAAI,GAAIuI,EAAI,EAAGhP,EAAI,EAAGA,EAAI/T,GAAI6iB,GAAK9O,EAAIA,EAAI,GAAK,EAAGgP,EAAIhP,EAAI,EAAI,EAAGwE,EAAEsK,IAAMC,EAAEQ,WAAWvP,IAAMgP,EAAGhP,IAKrJ,OAJA8O,GAAK9O,EAAIA,EAAI,GAAK,EAClBwE,EAAEsK,IAAM,KAAO9O,EAAI,EAAI,EACvBwE,EAAEiC,EAAI,GAAKxa,GAAK,EAChBuY,EAAEiC,EAAI,GAAKxa,IAAM,GACVuY,CACX,CATI,CASFA,GACFsK,EAAI,WACJC,EAAI,WACJ9iB,EAAI,WACJwa,EAAI,UACCjC,EAAI,EAAGA,EAAIwK,EAAE1Z,OAAQkP,GAAK,GAAI6K,EAAIP,EAAG3iB,EAAI4iB,EAAGO,EAAIrjB,EAAGuI,EAAIiS,EAAGqI,EAAIG,EAAEH,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIwI,EAAExI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAIgjB,EAAEhjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,WAAYuK,EAAIE,EAAEF,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAIG,EAAEH,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIwI,EAAExI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAIgjB,EAAEhjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAIE,EAAEF,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAIG,EAAEH,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIwI,EAAExI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAIgjB,EAAEhjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAIE,EAAEF,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAIG,EAAEH,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,IAAK,EAAG,YAAaiC,EAAIwI,EAAExI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,GAAI,YAAavY,EAAIgjB,EAAEhjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAIE,EAAEF,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAII,EAAEJ,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIyI,EAAEzI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,EAAG,YAAavY,EAAIijB,EAAEjjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,WAAYuK,EAAIG,EAAEH,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAII,EAAEJ,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIyI,EAAEzI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,EAAG,UAAWvY,EAAIijB,EAAEjjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAIG,EAAEH,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAII,EAAEJ,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,WAAYiC,EAAIyI,EAAEzI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,EAAG,YAAavY,EAAIijB,EAAEjjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAIG,EAAEH,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAII,EAAEJ,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,IAAK,EAAG,YAAaiC,EAAIyI,EAAEzI,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,EAAG,YAAavY,EAAIijB,EAAEjjB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAIG,EAAEH,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAI9U,EAAE8U,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIzM,EAAEyM,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAI+N,EAAE/N,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAI/U,EAAE+U,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAI9U,EAAE8U,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIzM,EAAEyM,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAI+N,EAAE/N,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAI/U,EAAE+U,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAI9U,EAAE8U,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,IAAK,EAAG,WAAYiC,EAAIzM,EAAEyM,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAI+N,EAAE/N,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAI/U,EAAE+U,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,UAAWsK,EAAI9U,EAAE8U,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAIzM,EAAEyM,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,GAAI,YAAavY,EAAI+N,EAAE/N,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,WAAYuK,EAAI/U,EAAE+U,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAIK,EAAEL,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAI0I,EAAE1I,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAIkjB,EAAEljB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAII,EAAEJ,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAIK,EAAEL,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,IAAK,EAAG,YAAaiC,EAAI0I,EAAE1I,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,GAAI,GAAI,YAAavY,EAAIkjB,EAAEljB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,IAAK,GAAI,YAAauK,EAAII,EAAEJ,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAIK,EAAEL,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAI0I,EAAE1I,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,GAAI,YAAavY,EAAIkjB,EAAEljB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,YAAauK,EAAII,EAAEJ,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,IAAK,GAAI,YAAasK,EAAIK,EAAEL,EAAGC,EAAG9iB,EAAGwa,EAAGuI,EAAExK,EAAI,GAAI,EAAG,YAAaiC,EAAI0I,EAAE1I,EAAGqI,EAAGC,EAAG9iB,EAAG+iB,EAAExK,EAAI,IAAK,GAAI,YAAavY,EAAIkjB,EAAEljB,EAAGwa,EAAGqI,EAAGC,EAAGC,EAAExK,EAAI,GAAI,GAAI,WAAYuK,EAAII,EAAEJ,EAAG9iB,EAAGwa,EAAGqI,EAAGE,EAAExK,EAAI,GAAI,GAAI,YAAasK,EAAID,EAAEC,EAAGO,GAAIN,EAAIF,EAAEE,EAAG5iB,GAAIF,EAAI4iB,EAAE5iB,EAAGqjB,GAAI7I,EAAIoI,EAAEpI,EAAGjS,GACz6F,OAAQmD,EAAEmX,GAAKnX,EAAEoX,GAAKpX,EAAE1L,GAAK0L,EAAE8O,IAAI/H,aACvC,CCmBA,QACA7hB,MAAAA,CAAAA,OAAAA,SACAgG,WAAAA,CAAA4sB,oBAAAA,IACApyB,OACA,OACAkL,MAAAA,KAAAA,MAAAA,KAAAA,MACA2lB,wBAAAA,EACAwB,SAAAA,GAEA,EACArxB,UACA,mBACA,EACA2C,SAAAA,CACA2uB,cACA,2BACA,qCACA,qCAEA,OADA,gDACA,CACA,GAEApyB,QAAAA,CACAqyB,kBACA,mDACA,yBACA5nB,aAAAA,QAAAA,aAAAA,QAEAA,aAAAA,QAAAA,aAAAA,QAEA,EACA6nB,cAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,iBACA,+EACA,KAEAzvB,MAAAA,CACA,oBACA,QACA,iCAEA,EACAC,MAAAA,IC9HwQ,M,uBCA/C,GAAe,KCOpO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBwH,W,IAAY2E,EAAG,K,EAAWhG,EAAAA,MAAAA,G,OAAK,gB,MAAC,C,WAAuC,G,OAAC,I,YAA6DF,EAAG,K,IAAmCxC,Y,aAAc,G,IAAuN,oBAAI,OAAO,sDAAwBsC,GAAS,QAAe,QAACpC,MAAIszB,CAAe,kBAAwB,mIAAIhxB,K,MAA2F,CAAY,mBAAIA,SAAG,YAAsPxC,EAAM,YAAC,EAAc,0BAC3gC,8DACGM,MAAAA,CAEJ,GAASa,c,2VCKF,MAAMsyB,IAAkBrF,EAAAA,GAAAA,IAAY,CACvCjlB,GAAI,UACJklB,MAAO,MACHpiB,MAAO,KACPynB,QAAS,KAEbnF,QAAS,CACLoF,WAAaC,GAAQA,EAAIF,QAAQ1a,QAErC6V,QAAS,CACL1nB,2BACInF,KAAK0xB,cAAgBvR,EAAAA,EAAAA,KAAAA,IAAe,yBAAyBzS,MAAKG,GAAKA,EAAE9O,MAC7E,KCmCR,QACAR,MAAAA,CAAAA,SACAQ,OACA,OAAAyyB,YAAAA,EACA,EACA9uB,SAAAA,KACA,kBC9D0Q,M,uBCA/C,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC0FhC,IACA1B,KAAAA,MACAuD,WAAAA,CACAstB,YAAAA,GACAC,kBAAAA,GACAC,gBAAAA,IAEAhyB,UACA,aACA,2BACA,wBACA0xB,KAAAA,qBACA,0BACA,IACA,sBAIA,CAHA,SACAO,cAAAA,IACAtyB,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,iCACA,IACA,KACAC,GAAAA,EAAAA,IAAAA,0BAAAA,KAAAA,kBACAA,GAAAA,EAAAA,IAAAA,eAAAA,KAAAA,cACAA,GAAAA,EAAAA,IAAAA,gBAAAA,KAAAA,cACA,EACAS,YACAT,GAAAA,EAAAA,KAAAA,0BAAAA,KAAAA,kBACAA,GAAAA,EAAAA,KAAAA,eAAAA,KAAAA,cACAA,GAAAA,EAAAA,KAAAA,gBAAAA,KAAAA,cACA,EACAV,QAAAA,CACA+S,eACA,wBACA,EACAigB,gBACA,gCACA,EACAC,iBAAAA,GACA,sBACA,EACAC,OAAAA,EAAAA,GAAAA,IAAAA,aAAAA,iBACA,wEACA,IACAC,qBAAAA,EAAAA,GAAAA,IAAAA,uBAAAA,iBACA,SACA,wBACA,wBACA,yBACA,2BACA,qBACA,4BACA,6CAEA,mFACAvkB,KACA,iBACA,iBACA,qBACA,SAGA,aAGA,IACAwkB,kBAAAA,EAAAA,GAAAA,IAAAA,oBAAAA,iBACA,sFACA,MAGA,GAFA,qCAEA,wEAEA,YADA,uCAIA,uFAEA,YADA,sCAKA,4CAEA,YADA,8BAGA,CACA,IACAC,iBAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,iBACA,2CACA,mCACA,KAEAvzB,OACA,OACAwsB,QAAAA,EACAH,qBAAAA,KACAmH,GAAAA,CAAAA,EACA7D,uBAAAA,EACAhD,qBAAAA,EACAJ,aAAAA,EAAAA,EAAAA,MAAAA,cACAD,iBAAAA,EAAAA,EAAAA,iBAAAA,sBAAAA,EAAAA,EAAAA,MAAAA,cACAmH,mBAAAA,EAAAA,EAAAA,MAAAA,0BAAAA,EAEA,EACA9vB,SAAAA,KACA,aACA+vB,uBACA,uCACA,KACAC,EAAAA,SAAAA,IACA,qBAAAvY,EAAAA,MAAAwY,EAAAA,KAAAC,GAAA,EACA,qDAEA,OACAC,EAAAA,GAAAA,CAAAA,GAGA,UACAA,EAAAA,GAAAA,GAAAA,CAAA7xB,KAAAA,EAAA8xB,OAAAA,KAGAD,EAAAA,GAAAA,GAAAA,OAAAA,KAAAA,EAAAA,IAGA,WAqCA,OAnCAnxB,OAAAA,QAAAA,GAAAA,SAAAA,EAAAA,EAAAA,MACAA,OAAAA,QAAAA,GAAAA,SAAAA,EAAAA,EAAAA,MACA,oCACA,KAEA,WACA,IAEA,2BACA,WACAqxB,EAAAA,EAAAA,IAEAC,EAAAA,KACAC,IAAAA,EACA,+BACA,6DAEAA,EAAAA,EAAAA,GACAF,EAAAA,GAIAC,EAAAA,KACAC,IAAAA,EACA,+BACA,6DAGArT,EAAAA,KAAAA,CACAsT,iBAAAA,EAAAA,KACAC,YAAAA,GAAAA,EAAAA,KAAAA,SAAAA,EAAAA,OAAAA,MACA,GACA,IAGA,CACA,GAEArxB,MAAAA,CACAspB,qBAAAA,CACAppB,QAAAA,GACA,IACA,mBACA,+CACA,wBACA,oDACA,eACA,2CACA,wBACA,qDACA,mBACA,+CACA,uBACA,0CAGA,qBACA,kCAEA,EACAD,MAAAA,EACAkG,WAAAA,KC1SwP,M,uBCA5C,GAAe,KCOvN,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBuU,W,MAAW,K,EAAwG,W,OAAC6I,EAAK,WAAC,kBAAI,MAAE,CAACvQ,MAAI,KAAU,mBAACmG,KAAG,a,OAAwC0sB,CAAAA,EAAAA,eAAAA,CAAAA,EAAAA,cAAkC,C,MAAiC,C,MAA4B,EAAC,iC,cAASl1B,EAAIm1B,gB,SAA8C,I,YAAkHC,EAAU,GAAEp1B,CAAG,C,IAA8By0B,U,GAA4B,WAAY,4FAAC7hB,EAAY,UAAItQ,CAAkBxC,IAAM,WAAC,cAAoDu1B,MAAAA,CAAAA,EAAAA,OAAmBA,CAAgB,qEAAC,qBAAeC,CAAkB,OAAC/sB,MAAgBwI,EAAI,kBAAK,QAAS,oBAAe,EAAQ/Q,GAAG,IAAI,EAAIA,GAAG,EAAIA,GAAG,EAAI,4BAA8B,EAACA,qBAAgB6vB,qBAAoB,CAAC,yCAACjd,MAAM,mBAAM,SAAK5S,EAA6EuC,OAAAA,OAAmC,gBAAe,C,MAAqC,CAAc,8CAACgzB,cAAS,kB,SAAoC,EAACC,mBAA4C,YAAC,OAACjtB,IAAAA,UAAqBlG,GAAG,WAAa,MAAC,MAAU,6E,EAA0O,OAAC,OAAY,EAAC,uE,YAAK,gB,MAAc,C,MAAkB,EAAI,wC,SAAgC,I,SAAoF,C,MAAO,SAAQrC,GAA2C,mDAAC4S,GAAqC,YAAW,EAAC,KAAC9S,IAAM,UAAC,cAAY,MAAK,qMAAG,EAAIwC,OAAG,GAAWC,CAAmBoL,IAAAA,WAAa,cAAqB,mCAAO,MAAM,CAACpL,MAAY,uEAAgDA,EAAW,GAAC,0CAAwBD,EAAqBC,OAAAA,IAAoD,MAAM,EAAM,cAA0BzC,EAAK,KAAC,C,MAAC,CAAuB,UAAuB,S,GACj3EuZ,GAAAA,EAAOrZ,C,YACC,O,YACX,CAAE,sB,CAAsBqC,EAAG,MAAC,C,YAAmB,0B,GAAW,QAAU,EAAC,MAAQ,C,YAAQ,uB,WAAC,EAAQ,MAAG,C,YAAC,qC,cAAc,yB,MAACkG,C,MAAwB,EAAC,W,aAAe,U,QAAW/F,EAAAA,MAAAA,GAAAA,yB,QAAK,+B,MAAC,sBAAuBge,QAAG,G,SAACje,EAAAA,YAAY,gB,YAA2B,O,2CAA4B,KAAO,C,MAAE,C,OAAQpC,GAA6E,eAAK,YAAa,EAAEmC,GAAG,EAA2D,IAAC,YAAC,aAAQ,GAAiB,I,MAAuDqX,CAAM,EAAE,IAAM,EAAF,IAAED,YAAU,OAAO,qBAAQ,WAA4C,MAAC,CAAC,KAAa,KAA+C,0EAAI,M,CAA2E,OAAQ,QAAe,CAAC,8B,GAAC,C,MAAmCsB,SAAc,G,OAAMrB,EAAQ,sBAAI,CAAED,aAAU,KAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAA8C,YAAI,MAAmC,OAA5B,gCAAoE,KAAO,MAAUqP,CAAM,EAAC,6B,GAAC,C,MAAmCqJ,SAAc,G,OAAOrB,EAAQ,sBAAI,CAAED,aAAU,KAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAA+C,YAAI,MAAmC,OAA5B,gCAA2E,KAAQ,MAAG,gC,GAAC,CAAc,kBAACiG,OAAW,EAACvI,sBAAQ,CAAI,aAAY,MAAI,YAAWwC,SAAAA,M,YAA0D,S,gBAAc,G,MAAoB,QAAd,EAAI,aAAU,iB,KAAQ,MAAO,yC,MAAE,C,OAAQrC,GAAmK,eAAK,YAAa,EAAEmC,GAAG,EAA2D,IAAC,YAAC,aAAQ,GAAiBtC,IAA2B,mBAAO,mBAA8Q,OAAC,SAAQ,KAAyC,WAAC,OAAO,UAAkP,gJAAM,MAAmC,+CAAC,IAA6B,MAAKy1B,SAAY,GAAC,aAAkBC,SAAyB,IAAK,GAAQ11B,GAAAA,EAAI21B,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,mBAAAA,GAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,qBAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,oEAAAA,IAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAoB,IAAQrzB,MAAG,SAAe,GAACC,EAAY,WAAM,OAAO,IAAoD,QAAmB,yJAAC,EAAuD,a,CAAuEF,EAAG,qBAAgB,C,MAAI,C,WAAqB,EAAC,Q,KAASvC,EAAM,a,YAAC,EAAY,aAAE,a,UAAe,2B,GAAmC,kB,YAAO,O,MAAUA,C,MAAO,EAAM,GAAC,oC,aAAE,O,QAAQK,EAAG,0C,YAAuG,oDAAK,IAAC,gBAAmBmC,GAAG,WAAmBC,MAAW,GAAC,IAAM,CAAM,MAAC,CAAC,UAAYqzB,GAAc,KAAc,IAAyE,IAAuB,MAAS,2BAAkB,CAAC,EAAE,IAAI,CAAertB,MAAYvI,CAAa,KAAS,KAAewR,CAAAA,EAAAA,GAAAA,cAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAAA,+CAAAA,MAAAA,GAAM,E,OAAG,G,MAAmC,MAAC,I,qBAAaqkB,C,YAAa,O,aAA2F,gB,eAAwD,EAAc,WAAC,Y,gBAAM,2B,oBAAiB9kB,G,OAAQ,e,OAAyBrI,EAAAA,cAAO,C,YAAEzI,EAAI,K,2BAAUa,M,WAAqC0B,EAAE,kBAAC,C,aAAc,e,QAAO,QAAW,GAAG,kB,MAA2B,EAAC,sC,SAAC,EAAQ,yC,cAASqzB,G,YAAuB,O,2BAAiB,Q,EAAkB,K,EAAc,O,EAAI,Q,WAAuE,EAAG71B,cAAI61B,C,UAAyB,KAAC,+BAAG,MAAC,WAAS,EAAI,gBAAI,GAAI,QAAO,UAAYC,KAAQC,GAA+C,GAAI,CAA+B,oBAAY,sCAAsB,kBAAqB,KAAgB,KAC1qI,IACG31B,MAAgB,K,iNCLwC,GAAU,W,IAAaN,EAAM,K,EAAC,QAAS,G,OAAG,QAACyI,MAAAA,CAAqBlG,OAAI,I,YAA4B,O,IAAEvC,YAAM,GAAE,aAAC,Q,UAA+D,kBAAE,MAAC,CAAkE,oBAAU,SAAW,GAAO,GAAQk2B,GAAAA,CAAAA,EAAAA,GAAa,IAAI,wBAC/V,MAGD,GAAS/0B,OAAQb,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,mB,QCoBhC,IACAC,MAAAA,CACAa,MAAAA,CAAAA,OAAAA,QACA+0B,gBAAAA,CACAl2B,KAAAA,OACAS,QAAAA,oBAGAgE,SAAAA,CACAsQ,YACA,4BACA,2CADA,KAEA,iDACA,uDACA,sDACA,IACA,EACAohB,WACA,4BACA,2CADA,OAEA,kDACA,oDACA,sDACA,MACA,EACAF,cACA,2EACA,2CACA,oDAAAC,gBAAAA,KAAAA,kBAEA,uCACA,gDAAAA,gBAAAA,KAAAA,kBAEA,6CACA,sDAAAA,gBAAAA,KAAAA,kBAEA,8CACA,uDACAA,gBAAAA,KAAAA,kBAGA,+CACA,IClE6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5Bh1B,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,QAC9G,EACIvG,GAAkB,GCKf,MAAMg2B,IAAelI,EAAAA,GAAAA,IAAY,QAAQ,KAC5C,MAAMmI,GAAQ1vB,EAAAA,EAAAA,KAAc,IACtB+iB,EAASrnB,IACNg0B,EAAMn1B,MAAMsL,SAASnK,IACtBg0B,EAAMn1B,MAAMtB,KAAKyC,EAAI,EAEvBi0B,EAAQj0B,IACV,MAAMkY,EAAU8b,EAAMn1B,MAAMqZ,QAAQlY,IACnB,IAAbkY,GACA8b,EAAMn1B,MAAMq1B,OAAOhc,EAAS,EAAE,EAEhCyC,EAAM3a,GACDg0B,EAAMn1B,MAAMsL,SAASnK,GAE1Bm0B,EAASvvB,MAAmD5E,EAAaD,KAC3E,GAAwB,oBAAbA,EAEP,OADA4gB,QAAQyT,KAAK,sCACNr0B,EAEX,IAEI,OADAsnB,EAAMrnB,SACOD,G,CACf,QACEk0B,EAAKj0B,E,GAGb,MAAO,CAAE2a,KAAI0M,QAAO4M,OAAME,SAAQH,QAAO,ICtBhCK,IAAiBxI,EAAAA,GAAAA,IAAY,CACtCjlB,GAAI,SACJklB,QACI,MAAO,CACHzuB,QAASi3B,KAEjB,EACAhI,QAAS,CACLiI,UAAU/1B,GACNiB,KAAKpC,QAAU,IAAKoC,KAAKpC,WAAYmB,EACzC,EACAoG,kCACI,GAAGnF,KAAKpC,QAAQm3B,UAAY/0B,KAAKpC,QAAQm3B,SAAS/d,OAAS,EACvD,OAAOhX,KAAKpC,QAAQm3B,SAExB,IAAIC,EAAK,GACT,MAAMC,EAAa,GACnB,GAAIj1B,KAAKpC,QAAQ6b,iBAAiBzC,OAC9B,MAAO,OAAOke,GAAsBl1B,KAAKpC,QAAQ6b,gBAAgB,KAC9D,GAAIzZ,KAAKpC,QAAQuc,eACpB,MAAO,OAAOgb,GAAsBn1B,KAAKpC,QAAQuc,iBAC9C,GAAIna,KAAKpC,QAAQwc,UACpB,MAAO,OAAOgb,GAAiBp1B,KAAKpC,QAAQwc,YA2BhD,GA1BWpa,KAAKpC,QAAQ2c,aACpB0a,EAAWn3B,KAAKwW,GAAAA,KAChB0gB,EAAKh1B,KAAKpC,QAAQ2c,aACXva,KAAKpC,QAAQyc,YACpB4a,EAAWn3B,KAAKwW,GAAAA,QAChB0gB,EAAKh1B,KAAKpC,QAAQyc,YACXra,KAAKpC,QAAQ4c,cACpBya,EAAWn3B,KAAKwW,GAAAA,eAChB0gB,EAAKh1B,KAAKpC,QAAQ4c,cAEbxa,KAAKpC,QAAQ0c,eAClB2a,EAAWn3B,KAAKwW,GAAAA,WAChB0gB,EAAKh1B,KAAKpC,QAAQ0c,eAEbta,KAAKpC,QAAQ6X,iBAClBwf,EAAWn3B,KAAKwW,GAAAA,iBAChB0gB,EAAKh1B,KAAKpC,QAAQ6X,iBAEbzV,KAAKpC,QAAQsc,WAClB+a,EAAWn3B,KAAKwW,GAAAA,SAChB0gB,EAAKh1B,KAAKpC,QAAQsc,WAEbla,KAAKpC,QAAQ2b,cAClB0b,EAAWn3B,KAAKwW,GAAAA,YAChB0gB,EAAKh1B,KAAKpC,QAAQ2b,aAEZ,IAANyb,EAAU,CACV,MAAMnnB,QAAU2Z,GAAcwN,EAAIC,EAAY,EAAG,IACjD,OAAOpnB,C,CAEX,OAAO,IACX,EACA+D,QACI5R,KAAK80B,UAAUD,KACnB,GAEJQ,QAAS,CACLC,aAAa1D,GACLA,EAAI2D,MAAM33B,QAAQga,WAClBga,EAAI2D,MAAM33B,QAAQga,SAAW,IAAIuB,KAAKyY,EAAI2D,MAAM33B,QAAQga,WACxDga,EAAI2D,MAAM33B,QAAQia,SAClB+Z,EAAI2D,MAAM33B,QAAQia,OAAS,IAAIsB,KAAKyY,EAAI2D,MAAM33B,QAAQia,QAC9D,KAIF2P,GAAgBriB,MAAOsiB,EAAalB,EAAOmB,EAAMC,KACnD,MAAME,EAAe,IAAIC,gBACnBC,EAAc,GAAGN,GAAe,KACtCI,EAAaxC,OAAO,IAAK0C,GACJ,qBAAVxB,GAAyBA,EAAMxN,MACtC8O,EAAaxC,OAAO,QAASkB,EAAMxN,QAEnB,qBAAT2O,GACPG,EAAaxC,OAAO,OAAQqC,GAER,qBAAbC,GACPE,EAAaxC,OAAO,WAAYsC,GAEpC,MAAMK,QAAoBva,EAAAA,EAAAA,KAAAA,IACjB,eAAeoa,EAAavW,cAChC5D,MAAMG,GAAMA,EAAE9O,KAAK+O,IAAImY,MAE5B,OAAO+B,CAAW,EAGhBkN,GAAwB/vB,UAC1B,MAAM4P,QAAqBtH,EAAAA,EAAAA,KAAAA,IAClB,+BAA+BtG,KACnCuG,MAAKG,GAAKA,EAAE9O,OAEXy2B,EAAwB,CAC1BruB,GAAIA,EACJnG,KAAM+T,EAAa0gB,iBACnBx3B,KAAMqW,GAAAA,aACNvB,YAAa,GACboT,SAAUpR,EAAasI,kBACvB+I,YAAa,GAEjB,OAAOH,GAAmBuP,EAAO,EAG/BL,GAAwBhwB,UAC1B,MAAMsP,QAAqBhH,EAAAA,EAAAA,KAAAA,IAClB,+BAA+BtG,KACnCuG,MAAKG,GAAKA,EAAE9O,OAEXy2B,EAAwB,CAC1BruB,GAAIA,EACJnG,KAAMyT,EAAazT,KACnB/C,KAAMqW,GAAAA,aACNvB,YAAa0B,EAAaihB,gBAC1BvP,SAAU1R,EAAa+F,aACvB4L,YAAa,GAEjB,OAAOH,GAAmBuP,EAAO,EAG/BJ,GAAmBjwB,UACrB,MAAM0P,QAAgBpH,EAAAA,EAAAA,KAAAA,IACb,0BAA0BtG,KAC9BuG,MAAKG,GAAKA,EAAE9O,OAEXy2B,EAAwB,CAC1BruB,GAAIA,EACJnG,KAAM6T,EAAQ8gB,YACd13B,KAAMqW,GAAAA,aACNvB,YAAa,GACboT,SAAUtR,EAAQwI,kBAClB+I,YAAa,GAEjB,OAAOH,GAAmBuP,EAAO,EAG/BX,GAAmB,KACrB,MAAMe,EAAmC,CACrC1c,aAAcvU,EAAAA,EAAAA,iBAAwB,yBAA2B,MAAQ,MACzE2S,YAAa,QACbgC,YAAa,GACboB,YAAanG,GAAiBiB,SAC9BqC,OAAQ,KACRD,SAAU,KACVuC,eAAgB,KAChBV,gBAAiB,KACjBW,UAAW,KACXF,UAAW,KACXM,aAAc,KACdH,WAAY,KACZC,cAAe,KACfC,YAAa,KACbO,aAAa,GACbrF,gBAAiB,KACjBsf,SAAU,MAEd,OAAOa,CAAa,ECrKXC,GAAuB,kBACvBC,GAAwB,mBAExBC,GAAqB,wBACrBC,GAAsB,yBACtBC,GAAwB,2BACxBC,GAAwB,2BAExBC,GAAuB,0BACvBC,GAAyB,4BACzBC,GAAyB,4B,2BCZtC,MAAMC,GAAiB3xB,EAAAA,EAAAA,MAAa4xB,aAAaxe,QAAOpK,GAAW,KAANA,IAEvD6oB,GAAYC,IACd,MAAMC,EAAaD,EAAItlB,QAAQ,KAAM,IAC/BwlB,EAAS/V,SAAS8V,EAAY,IAC9B7oB,EAAK8oB,GAAU,GAAM,IACrBjV,EAAKiV,GAAU,EAAK,IACpBlG,EAAa,IAATkG,EACV,MAAO,CAAE9oB,IAAG6T,IAAG+O,IAAG,EAGTmG,GAAoBN,IAAkBA,GAAetf,OAAS,EAAIsf,GAAiB,CAC5F,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAESO,GAAoBD,GAAkB9oB,KAAI2oB,IACnD,MAAMK,EAAMN,GAASC,GACrB,MAAO,CAAEK,EAAIjpB,EAAEyD,WAAYwlB,EAAIpV,EAAEpQ,WAAYwlB,EAAIrG,EAAEnf,WAAY,I,uCCrBnE,MAAMylB,GAAU,CACdC,SAAU,yBACVC,YAAa,gBACbC,OAAQ,YACRC,OAAQ,SACRC,KAAM,KACNC,IAAK,QACLC,KAAM,KACN3E,MAAO,WACP4E,QAAS,cACT3E,KAAM,QAGR4E,GAAAA,GAAAA,MAAAA,SAA2C,oBAAXtgB,IAAwB,CACtDugB,IAAK,SAELC,QAAS,WACP,OAAOX,EACT,EAEApR,MAAO,SAASvmB,EAAOmP,GAMrB,MALqB,kBAAVnP,GAAwC,kBAAXmP,EACtCnP,EAAQ8X,IAAO9X,EAAOmP,GACXnP,aAAiB8X,MAC5B9X,EAAQ8X,IAAO9X,IAEVA,EAAMwH,UAAYxH,EAAMu4B,UAAY,IAC7C,EAEAppB,OAAQ,SAASqpB,EAAMrpB,GACrB,OAAO2I,IAAO0gB,GAAMrpB,OAAOA,EAC7B,EAEA0J,IAAK,SAAS2f,EAAMC,EAAQlX,GAC1B,OAAOzJ,IAAO0gB,GAAM3f,IAAI4f,EAAQlX,GAAMgX,SACxC,EAEAxgB,KAAM,SAASmK,EAAKS,EAAKpB,GACvB,OAAOzJ,IAAOoK,GAAKnK,KAAKD,IAAO6K,GAAMpB,EACvC,EAEAtI,QAAS,SAASuf,EAAMjX,EAAMmX,GAE5B,OADAF,EAAO1gB,IAAO0gB,GACD,YAATjX,GACFmX,EAAU1mB,KAAK2mB,MAAM3mB,KAAK2Q,IAAI3Q,KAAKkQ,IAAI,EAAGwW,GAAU,IAC7CF,EAAKI,WAAWF,GAASzf,QAAQ,OAAOsf,WAE1CC,EAAKvf,QAAQsI,GAAMgX,SAC5B,EAEAxf,MAAO,SAASyf,EAAMjX,GACpB,OAAOzJ,IAAO0gB,GAAMzf,MAAMwI,GAAMgX,SAClC,GACE,CAAC,GCvDL,MAAMM,GAAwB,CAACzoB,EAAOrI,KAClC,MAAM+wB,EAAkBntB,SAASotB,eAAehxB,GAChD,IAAIixB,EAAgBF,EAAgBG,cAAc,MAelD,OAbKD,IACHA,EAAgBrtB,SAASutB,cAAc,MACvCF,EAAct3B,MAAMy3B,QAAU,OAC9BH,EAAct3B,MAAM03B,cAAgB,SACpCJ,EAAct3B,MAAM23B,OAAS,IAC7BL,EAAct3B,MAAM43B,QAAU,IAC9BN,EAAct3B,MAAM63B,WAAa,OACjCP,EAAct3B,MAAM83B,cAAgB,OAEpCR,EAAct3B,MAAM+3B,SAAW,QAC/BX,EAAgBY,YAAYV,IAGvBA,CAAa,EAGhBW,GAAmB,CACvB5xB,GAAI,aACJ6xB,YAAYxpB,EAAOypB,EAAMr7B,GACvB,MAAMs7B,EAAKjB,GAAsBzoB,EAAO5R,EAAQu7B,aAGhD,MAAOD,EAAGE,WACRF,EAAGE,WAAWC,SAIhB,MAAMrS,EAAQxX,EAAM5R,QAAQ07B,QAAQC,OAAOC,OAAOC,eAAejqB,GAEjEwX,EAAMhN,SAAQ5F,IACZ,MAAMslB,EAAK3uB,SAASutB,cAAc,MAClCoB,EAAG54B,MAAM64B,WAAa,SACtBD,EAAG54B,MAAM84B,OAAS,UAClBF,EAAG54B,MAAMy3B,QAAU,OACnBmB,EAAG54B,MAAM03B,cAAgB,MACzBkB,EAAG54B,MAAM+4B,WAAa,OACtBH,EAAG54B,MAAMg5B,aAAe,MAExBJ,EAAGK,QAAU,KACX,MAAM,KAAC97B,GAAQuR,EAAMtH,OACR,QAATjK,GAA2B,aAATA,EAEpBuR,EAAMwqB,qBAAqB5lB,EAAKmE,OAE7B3a,EAAQq8B,aACTr8B,EAAQq8B,aAAa,KAAM,CAAC,CAACC,aAAc9lB,EAAK8lB,aAAc3hB,MAAO,IAAK/I,GAG1EA,EAAM2qB,qBAAqB/lB,EAAK8lB,cAAe1qB,EAAM4qB,iBAAiBhmB,EAAK8lB,eAI/E1qB,EAAM6qB,QAAQ,EAIhB,MAAMC,EAAUvvB,SAASutB,cAAc,QACvCgC,EAAQx5B,MAAMy5B,WAAanmB,EAAKomB,UAChCF,EAAQx5B,MAAM25B,YAAcrmB,EAAKsmB,YACjCJ,EAAQx5B,MAAM65B,YAAc,QAC5BL,EAAQx5B,MAAM85B,YAAcxmB,EAAKymB,UAAY,KAC7CP,EAAQx5B,MAAMy3B,QAAU,eACxB+B,EAAQx5B,MAAMg6B,WAAa,IAC3BR,EAAQx5B,MAAMQ,OAAS,OACvBg5B,EAAQx5B,MAAMi6B,YAAc,OAC5BT,EAAQx5B,MAAMK,MAAQ,OAGtB,MAAM65B,EAAgBjwB,SAASutB,cAAc,KAC7C0C,EAAcl6B,MAAMlC,MAAQwV,EAAK6mB,UACjCD,EAAcl6B,MAAM23B,OAAS,IAC7BuC,EAAcl6B,MAAM43B,QAAU,IAC9BsC,EAAcl6B,MAAMo6B,eAAiB9mB,EAAK+mB,OAAS,eAAiB,GAEpE,MAAMr7B,EAAOiL,SAASqwB,eAAehnB,EAAKtU,MAC1Ck7B,EAAclC,YAAYh5B,GAE1B45B,EAAGZ,YAAYwB,GACfZ,EAAGZ,YAAYkC,GACf9B,EAAGJ,YAAYY,EAAG,GAEtB,GAGF,U,YC7EFtP,GAAAA,GAAAA,SAAeiR,GAAAA,GAEf,MAAMC,GAAa,IACbC,GAAuB,MACvBC,GAA4B,MAS3B,IAAKC,IAAZ,SAAYA,GACRA,EAAAA,WAAAA,UACAA,EAAAA,SAAAA,QACAA,EAAAA,WAAAA,SACH,EAJD,CAAYA,KAAAA,GAAgB,KAa5B,MAAMC,GAAWxlB,IACb,OAAQA,GACJ,KAAKulB,GAAiBE,MAClB,OAAQC,GAAMA,EAAED,MACpB,KAAKF,GAAiBI,QAClB,OAAQD,GAAMA,EAAEC,QACpB,KAAKJ,GAAiBK,QAClB,OAAQF,GAAMA,EAAEE,QACpB,QACI,MAAM,IAAIC,MAAM,6BAA6B,EAIvD,SAASC,GAAYpK,EAAqCqK,EAA6BC,GACrF,MAAM1sB,EAAQoiB,EAAIpiB,OACZ,MAACrO,EAAK,OAAEG,GAAUkO,EAAM2sB,UACxBC,EAAW5sB,EAAM6sB,eAAe,GAAGt9B,KAAK,GAC9C,GAAGq9B,EAAS,SAAU,CAClB,GAAa,WAAVH,EAAqB,CACpB,MAAMK,EAASF,EAAS,SAAW,GACnC,OAAGE,EAASJ,EACDA,EAEJI,C,CAEN,GAAc,SAAXL,EAAmB,CACvB,MAAMK,EAASF,EAAS,SAAW,EACnC,OAAGE,EAASJ,EACDA,EAEJI,C,EAIf,MAAMC,EAAOnrB,KAAKorB,KAAKprB,KAAKqrB,IAAIt7B,EAAO,GAAKiQ,KAAKqrB,IAAIn7B,EAAQ,IAC7D,IAAIqnB,EAAMvpB,EAQV,OAPKwyB,EAAIjJ,MAIPA,EAAOiJ,EAAIjJ,KACXvpB,EAAQm9B,EAAO5T,EAAOuT,IAJtBtK,EAAIjJ,KAAOA,EAAO4T,EAClBn9B,EAAQ88B,GAKP98B,EAAQ88B,EACAA,EAEI,SAAXD,EACK,CAACtT,KAAMvpB,GAETA,CACT,CAEK,MAAMs9B,GAAiC,CAACC,EAA6DC,KACxG,MAAM,YAAEC,EAAW,WAAEC,EAAU,YAAEC,EAAW,WAAEC,GAAeJ,GAAQ,CAAC,EAChEK,EAAqD,GACrDC,EAAUH,GAA4BlG,GA4B5C,OA3BC8F,GAAalb,WAAa,IAAI0b,UAAUnjB,SAAQ,CAAC0H,EAAGzH,KACjD,MAAMrb,EAAQs+B,EAAQjjB,EAAIijB,EAAQlmB,QAC5BomB,EAAY,OAAOx+B,KAEnBy+B,EAAkD,CACpDt+B,KAAM,GACNynB,OAAmB,KAAX9E,EAAEzjB,KAAc,SAAWyjB,EAAE1gB,OAAS67B,EAAc,KAAKA,KAAiB,IAClFS,gBAAiB5b,EAAE6b,QAAUC,KAAAA,KAAa,WAAY,UAAW,WAAaJ,EAC9E3C,YAAa,QACbgD,qBAAsB/b,EAAE6b,QAAUC,KAAAA,KAAa,WAAY,UAAW,WAAa,UACnF5C,YAAa,EACb8C,MAAOhc,EAAE6b,QAAUhC,GAAwBD,GAAarhB,EACxDyc,YAAY,EACZiH,MAAOb,GAA0B,UAE/Bc,EAAmCZ,EAAwChnB,MAAMC,QAAQ+mB,GAAcA,EAAa,CAACA,GAArE,CAACvB,GAAiBE,QAClE,GAAEx0B,EAAE,KAAElJ,GAASyjB,EACrBA,EAAEmc,aAAa7jB,SAAQ4hB,IACnB,MAAMtU,EAAI,IAAInO,KAAKyiB,EAAEra,WAAWuc,UAChCF,EAAY5jB,SAAQ9D,IAChB,MAAMxP,EAAKg1B,GAAQxlB,GACb6nB,EAAIr3B,EAAGk1B,GACbyB,EAAQt+B,KAAKjB,KAAK,CAAEwpB,IAAGyW,IAAG52B,KAAIlJ,QAAO,GACvC,IAENg/B,EAASn/B,KAAKu/B,EAAQ,IAEnB,CACH7D,OAAQ,GACRyD,WACH,EAGQe,GAAsC,CAACC,EAA2CpB,EAA6BC,EAA4BoB,KACpJ,IAAKD,EACD,MAAO,CACHzE,OAAQ,GACRyD,SAAU,IAGlB,MAAMI,EAAwC,CAC1Ct+B,KAAM,GACNynB,MAAO,aAAeqW,EAAc,KAAKA,KAAiB,IAC1DS,gBAAiBE,KAAAA,KAAa,WAAaU,GAA4B,UAAY,QACnFzD,YAAa,QACbG,YAAa,EACb8C,MAAOlC,GACPmC,MAAOb,GAA0B,UASrC,OAPCmB,GAAmB7c,WAAa,IAAIrJ,QAAOuP,GAAKA,EAAE6W,SAAW,IAAGnkB,SAAS4hB,IACtE,MAAMwC,EAAoB,IAAIjlB,KAAKyiB,EAAEra,WAAWuc,UAChDT,EAAQt+B,KAAKjB,KAAK,CACdwpB,EAAG8W,EACHL,EAAGnC,EAAEuC,UACP,IAEC,CACH3E,OAAQ,GACRyD,SAAU,CAACI,GACd,EAGC,SAAUgB,GAA2BC,EAAuCC,EAAuD,MACrI,MAAMC,EAAeF,EAAcG,MAAK,CAACjO,EAAGC,KACxC,MAAMiO,EAAQ,IAAIvlB,KAAKqX,EAAEoC,KAAMpC,EAAEmC,MAAQ,EAAGnC,EAAE6G,KACxCsH,EAAQ,IAAIxlB,KAAKsX,EAAEmC,KAAMnC,EAAEkC,MAAQ,EAAGlC,EAAE4G,KAC9C,OAAO,IAAIle,KAAKulB,GAAOZ,UAAY,IAAI3kB,KAAKwlB,GAAOb,SAAS,IAE1Dc,EAAiC,GAoCvC,OAnCAJ,EAAaxkB,SAAS5a,IAClB,MAAMy/B,EAAc,IAAI1lB,KAAKA,KAAK2lB,IAAI1/B,EAAMwzB,KAAMxzB,EAAMuzB,MAAQ,EAAGvzB,EAAMi4B,MACnE0H,EAAY,IAAI5lB,KAAK0lB,GAC3BE,EAAUC,QAAQH,EAAYI,UAAY,GAC1C,IAAIC,GAAW,EACf,MAAMC,EAAeP,EAAUA,EAAU5nB,OAAS,GAUlD,GATKmoB,EAEMA,EAAaC,MAAQP,EAAYf,YAEjCqB,EAAaC,MAAQL,EAAUjB,UACtCqB,EAAaE,KAAOR,EAAYf,UAEhCoB,GAAW,GANXA,GAAW,EAQXA,EAAU,CACV,MAAMI,EAA8B,CAChCrhC,KAAM,MACNmhC,KAAMP,EAAYf,UAClBuB,KAAMR,EAAYf,UAClBR,gBAAiB,2BACjBiC,QACShB,GACLA,EAAQe,EAASF,KAAgBE,EAASD,KAC9C,GAEJT,EAAU9gC,KAAKwhC,E,KAGvBV,EAAU5kB,SAASwlB,IACf,MAAMC,EAAW,IAAItmB,KAAKqmB,EAAKJ,MAC/BI,EAAKJ,KAAO,IAAIjmB,KAAKsmB,EAASC,SAAS,EAAG,EAAG,EAAG,IAAI5B,UACpD,MAAM6B,EAAW,IAAIxmB,KAAKqmB,EAAKH,MAC/BG,EAAKH,KAAO,IAAIlmB,KAAKwmB,EAASD,SAAS,GAAI,GAAI,GAAI,MAAM5B,SAAS,IAE/Dc,CACX,CAEM,SAAUgB,GAA8BtB,EAA6Bv/B,EAAuCuY,EAA0BinB,EAAuD,MAC/L,MAAMsB,EAAW9gC,EAAK+gC,SAAQ,EAAE/gC,OAAM4+B,WAAW5+B,EAAK+O,KAAIiwB,IAC/C,CAACzW,EAAIyW,EAAEzW,EAAEyW,EAAGA,EAAEA,EAAGJ,cAEtBa,EAAeF,EAAcxwB,KAAIwZ,GAAK,IAAInO,KAAKmO,EAAEyY,kBAAiBtB,MAAK,CAACjO,EAAGC,IACtED,EAAEsN,UAAYrN,EAAEqN,YAE3B,IAAIkC,EAAU,EACd,MAAMC,EAAUJ,EAAS/xB,KAAIwZ,IAAa,CAACA,EAAGA,EAAEA,EAAGqW,MAAOrW,EAAEqW,UAAS5lB,QACjE,CAAC3Y,EAAOmZ,EAAOC,IAASA,EAAKvK,WAAUiyB,GAAS9gC,EAAMu+B,OAASuC,EAAMvC,OAASv+B,EAAMkoB,GAAK4Y,EAAM5Y,MAAO/O,IACpG4nB,EAAqC,CAAC,EAC5CF,EAAQjmB,SAAQsN,IACZ,MAAM/P,EAAQsoB,EAAS9nB,QAAO3D,GAAQA,EAAKkT,GAAKA,EAAEA,GAAKlT,EAAKupB,OAASrW,EAAEqW,QAAO7vB,KAAIiwB,GAAKA,EAAEA,IAAG1c,QAAO,CAACmP,EAAGC,IAAOD,EAAIC,KAAM,EACrHlZ,EAAQyoB,IACPA,EAAUzoB,KAEV4oB,EAAO7Y,EAAEA,IAAM6Y,EAAO7Y,EAAEA,GAAK/P,KAC7B4oB,EAAO7Y,EAAEA,GAAK/P,E,IAKtB,MAAMqnB,EAAsC,GAyE5C,OAxEAJ,EAAaxkB,SAAS5a,IAClB,MAAMqgC,EAAW,IAAItmB,KAAK/Z,GAC1BqgC,EAASC,SAAS,EAAG,EAAG,EAAG,GAC3B,MAAMC,EAAW,IAAIxmB,KAAK/Z,GAC1BugC,EAASD,SAAS,GAAI,GAAI,GAAI,KAE3BpoB,GAAe9F,GAAAA,UACdiuB,EAAST,QAAQ,GACjBW,EAASX,QAAQ9nB,IAAOyoB,GAAUxnB,MAAM,SAASkf,QAErD,MAAM0H,EAAY,IAAI5lB,KAAKsmB,GAC3BV,EAAUC,QAAQS,EAASR,UAAY,GACvC,IAAIC,GAAW,EACf,MAAMC,EAAeP,EAAUA,EAAU5nB,OAAS,GAUlD,GATKmoB,EAEMA,EAAaC,MAAQK,EAAS3B,YAE9BxmB,GAAe9F,GAAAA,SAAuB2tB,EAAaC,MAAQL,EAAUjB,UAC5EqB,EAAaE,KAAOI,EAAS3B,UAE7BoB,GAAW,GANXA,GAAW,EAQXA,EAAU,CACV,MAAMkB,EAAUX,EAAS3B,UACnBuC,EAAUV,EAAS7B,UACzB,IAAIwC,EAASppB,IAAO,IAAIiC,KAAK/Z,IAC7B,MAAMmhC,EAASD,EAAOE,YAElBF,EADDC,GAAU,EACAD,EAAOjoB,QAAQ,OAGfioB,EAAOnoB,MAAM,OAE1BmoB,EAASA,EAAOroB,IAAIqoB,EAAOE,YAAa,KACxC,MAAMC,EAAaZ,EAAS9nB,QAAOuP,GAAKA,EAAEA,GAAK8Y,GAAW9Y,EAAEA,GAAK+Y,IAASvyB,KAAIwZ,GAAKA,EAAEA,IAAGvP,QACpF,CAAC3Y,EAAOmZ,EAAOC,IAASA,EAAKvK,WAAUiyB,GAAS9gC,GAAS8gC,MAAW3nB,IACxE,IAAIhB,EAAQ,EACZkpB,EAAWzmB,SAAQsN,IACZ6Y,EAAO7Y,GAAK/P,IACXA,EAAQ4oB,EAAO7Y,G,IAIvB,MAAMgY,EAAgB,CAClBrhC,KAAM,QACNq/B,gBAAiB,qBACjBoD,QAAS,IACTC,KAAO/O,GAAQoK,GAAYpK,EAAK,OAAQta,GAAe9F,GAAAA,QAAsB,GAAK,IAClFknB,QAAU9G,GAAQoK,GAAYpK,EAAK,UAAWta,GAAe9F,GAAAA,QAAsB,EAAI,GACvF4tB,KAAMK,EAAS3B,UACfuB,KAAMM,EAAS7B,UACf8C,SAAU,CACNtZ,EAAG,SACHyW,EAAG,UAEP8C,OAAQvpB,GAAe9F,GAAAA,QAAsBiuB,EAAS3B,UAAYwC,EAAOzoB,SAASimB,UAClFgD,OAAQvpB,EAAmB,IAAVyoB,EACjBT,QACShB,GACLA,EAAQe,EAASF,KAAgBE,EAASD,KAC9C,GAEJT,EAAU9gC,KAAKwhC,E,KAGvBV,EAAU5kB,SAASwlB,IACf,MAAMC,EAAW,IAAItmB,KAAKqmB,EAAKJ,MAC/BI,EAAKJ,KAAO,IAAIjmB,KAAKsmB,EAASC,SAAS,EAAG,EAAG,EAAG,IAAI5B,UACpD,MAAM6B,EAAW,IAAIxmB,KAAKqmB,EAAKH,MAC/BG,EAAKH,KAAO,IAAIlmB,KAAKwmB,EAASD,SAAS,GAAI,GAAI,GAAI,MAAM5B,SAAS,IAE/Dc,CACX,CAwBA,SAASmC,GAASC,EAAOC,EAAQC,GAC7B,MAAMC,EAAKH,EAAMI,iBAAiBH,GAC5BI,EAAKL,EAAMI,iBAAiBF,GAClC,MAAO,CACLnf,IAAK3Q,KAAK2Q,IAAIof,EAAIE,GAClB/f,IAAKlQ,KAAKkQ,IAAI6f,EAAIE,GAEtB,CAEF,QAAgBC,EAA8B1jC,EAAmB2jC,KAC7D,MAAM,aAAExT,EAAY,QAAEwQ,EAAO,YAAEjnB,EAAW,KAAErZ,EAAI,iBAAEujC,EAAgB,oBAAEC,EAAmB,QAAEpB,GAAWziC,EAC9FkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBAAiBC,IACvCC,EAAehhC,EAAM8gC,iBAAiBC,IAC5C,IAAIE,EACJC,GAAAA,GAAAA,cAAAA,WAAmC,CAAChB,EAAOiB,EAAMC,EAAQC,KAAW,EACpEH,GAAAA,GAAAA,kBAAAA,WAAuC,CAAChB,EAAOoB,EAAMnT,EAAIkT,KACrD,MAAMprB,EAAQgqB,GAASC,EAAOoB,EAAMnT,GAGpC,OAFA8S,EAAgBhrB,GAET,CAAI,EAEfirB,GAAAA,GAAAA,aAAAA,WAAkC,CAAChB,EAAOqB,EAAOF,KAAW,EAC5D,MAAMG,EAAmB,CAACxX,GAAIyX,GAAY/yB,KACtC,IAAK+yB,EAAW,OAChB,MAAMC,EAAgBhzB,EAAMzQ,KAAKk+B,SAASsF,EAAUrI,cACpD,IAAKsI,GAAiBA,EAAc9E,QAAUlC,GAA2B,OACzE,MAAM7b,EAA0B6iB,EAAczjC,KAAKwjC,EAAUhqB,OACxDoH,GACe,KAAhBA,EAAO1hB,MACPsgC,GACAA,EAAQ,CACJhmB,MAAOiqB,EAAc9E,MACrBH,QAASiF,EAAc9E,QAAUnC,GACjCv6B,KAAMwhC,EAAchc,MACpBic,eAAgB9iB,EAAOxY,I,EAM7BqI,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAMA,GAAQ,MACdc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL68B,YAAa,kBACbnB,QAAS,CAGLoJ,WAAY,CAERvJ,YAAaoI,GAEjBU,KAAM,CACFA,KAAM,CACFU,KAAM,CACFC,QAASnB,GAEfoB,KAAM,IACNC,eAAetzB,GACb,GAAGgyB,QAAqCn0B,GAAjB00B,EAA4B,CAC/C,MAAMgB,EAAW,IAAI5pB,KAAK/H,KAAK4xB,MAAMjB,EAAchgB,MACnDghB,EAASrD,SAAS,EAAE,EAAE,EAAE,GAExB,MAAMuD,EAAW,IAAI9pB,KAAK/H,KAAK2P,KAAKghB,EAAczgB,MAClD2hB,EAASvD,SAAS,GAAG,GAAG,GAAG,KAE3B,MAAMwD,EAAOH,EAASjF,UAEhBqF,EAAOF,EAASnF,UAChBb,EAAWztB,EAAMA,MAAMzQ,KAAKk+B,SAC5B3f,EAAS2f,EAAS6C,SAAQxY,GAAKA,EAAEvoB,KAAKgZ,QAAQgmB,GAAaA,EAAEzW,GAAK4b,GAAQnF,EAAEzW,GAAK6b,MACvF,GAAG7lB,GAAQtG,OAAS,EAAG,CACnB,MAAMosB,EAAa9lB,EAAOvF,QAAOuP,GAAKA,IAAGxZ,KAAKwZ,GAAaA,EAAEyW,KAAI1c,QAAO,CAACmP,EAAEC,IAAOD,EAAIC,KAAM,EAC5F+Q,EAAiB,CACbpC,KAAM8D,EACN7D,KAAM8D,EACNE,WAAYD,G,EAIxBrB,OAAgB10B,CAClB,IAGN9G,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,EACTiB,OAAQ,CACJ56B,MAAOkjC,IAGfwB,QAAS,CACLC,UAAW,CACP/c,MAAMpS,GACF,MAAO,CAACA,EAAKipB,QAAQ7W,MACzB,EACAgd,WAAWpvB,GACP,MAAMipB,EAAUjpB,EAAKipB,QACfoG,EAAkBpG,EAAQt+B,KAC1B2kC,EAAoBD,EAAOrvB,EAAKuvB,WAChCC,EAAeH,EAAO31B,KAAK0iB,GAAaA,EAAEuN,IAAG1c,QAAO,CAACmP,EAAGC,IAAMD,EAAIC,IAClEoT,EAAiBD,EAAevG,EAAQt+B,KAAKiY,OAC7C8sB,GAAwBJ,EAAW3F,EAAI8F,GAAkBA,EAAiB,IAC1E5G,EAAW7oB,EAAK5E,MAAMzQ,KAAKk+B,SAC3B3f,EAAS2f,EAASllB,QAAOuP,GAAKA,EAAEqW,OAASN,EAAQM,QAAOmC,SAAQxY,GAAKA,EAAEvoB,KAAKgZ,QAAQgmB,GAAaA,EAAEzW,GAAKoc,EAAWpc,MACnH8b,EAAa9lB,EAAOvF,QAAOuP,GAAKA,IAAGxZ,KAAKwZ,GAAaA,EAAEyW,IAAG1c,QAAO,CAACmP,EAAEC,IAAOD,EAAIC,IACrF,MAAO,CACH,UAAUxjB,EAAey2B,EAAW3F,EAAGhQ,KACvC,GAAG+V,EAAsB,EAAI,IAAMA,EAAoBC,QAAQ,GAAKD,EAAoBC,QAAQ,kBAChG,iBAAiB92B,EAAem2B,EAAYrV,KAEpD,GAEJ8U,KAAM,SAEVmB,WAAY,CACRC,YAAa,CAAC,IAGtBC,YAAa,CACTC,WAAW,EACXtB,KAAM,WAEVuB,QAAQvgC,GAAQ6Y,IACZ,IAAI2nB,EAAY,UAChB,GAAI3nB,EAAS,CACT,MAAM8lB,EAAgBhzB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cAClD,IAAKsI,EAAe,OACpB,MAAM7iB,EAA0B6iB,EAAczjC,KAAK2d,EAAQnE,OAC3D,IAAKoH,EAAQ,OACb,GAAoB,KAAhBA,EAAO1hB,KAAa,OACpBukC,EAAc9E,QAAUlC,KACxB6I,EAAY,U,CAGnBxgC,EAAMygC,OAAO3kB,OAAuB7e,MAAM84B,OAASyK,CACxD,EACAE,YAAY,EACZC,qBAAqB,EACrBjG,QAAQzT,GAAIyX,GAAY/yB,GACrB8yB,EAAiBxX,EAAE,CAACyX,GAAY/yB,EACnC,EACAi1B,OAAQ,CACJnd,EAAG,CACCrpB,KAAM,OACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEXimC,KAAM,IACNjN,KAAM,CACFjX,KAAMrJ,GAAe9F,GAAAA,QAAsB,QAAU,OAEzDszB,OAAQ,QACRxjB,IAAM,IAAInI,KAAKknB,GAAWlnB,KAAK4rB,OAAOjH,WAE1CC,EAAG,CACC9/B,KAAM,SACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAO6N,EAAe7N,EAAO2uB,EACjC,GAEJ6W,KAAM,CACFhmC,MAAO+iC,GAEX5f,IAAK,EACL8iB,KAAM,IACNt+B,MAAO,CACHzG,KAAM,SAASiuB,KACfnvB,MAAOkjC,EACPvJ,SAAS,GAEboF,MAAO,IACPpF,SAAS,KAKrBe,QAAS,CAACP,GAAkBiJ,GAAAA,MAEhC,OAAOxyB,CACV,EC7eD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACH+Y,YAAalW,OACbrC,KAAM2C,OACNuiC,YAAajuB,MACb1U,OAAQF,OACRqgC,oBAAqBvgC,QACrBm/B,QAASj/B,QAEbqD,MAAM4U,GAAG,KAAE2rB,IACP,MAAMC,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,MAChC00B,GAAS10B,EAAAA,EAAAA,KAAoB,MAC7BsgC,GAAkBtgC,EAAAA,EAAAA,KAAoB,OAEtC,aAAEkpB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MAC/BkZ,EAAc,KAChB,IAAKhsB,EAAEta,KAAM,OACb,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBL,EAAK7lC,MAAMmmC,UAAUttB,IAAI,mBAEzBktB,EAAgB/lC,MAAQ2L,SAASutB,cAAc,OAC/C6M,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,0BAEpCitB,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC4M,EAAO9lC,MAAMmmC,UAAUttB,IAAI,gBACV,SAAboB,EAAE/X,QACF4jC,EAAO9lC,MAAMmmC,UAAUttB,IAAI,qBAC3BgtB,EAAK7lC,MAAMmmC,UAAUttB,IAAI,eACzBktB,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,sBAEpCitB,EAAO9lC,MAAM0B,MAAMQ,OAAS+X,EAAE/X,QAAU,QAG5Ci4B,EAAOn6B,MAAQ2L,SAASutB,cAAc,OACtCiB,EAAOn6B,MAAM+H,GAAMiK,KAAK4xB,MAAsB,IAAhB5xB,KAAKC,UAAoBC,WACvDioB,EAAOn6B,MAAMkmC,UAAW,GACxB/L,EAAOn6B,MAAMmmC,UAAUttB,IAAI,gBAC3BshB,EAAOn6B,MAAM0B,MAAM0kC,UAAYnsB,EAAE/X,QAAU,QAE3C6jC,EAAgB/lC,MAAM05B,YAAYoM,EAAO9lC,OACzC6lC,EAAK7lC,MAAM05B,YAAYqM,EAAgB/lC,OACvC6lC,EAAK7lC,MAAM05B,YAAYS,EAAOn6B,OAE9B,MAAMoQ,EAAQi2B,GAAoBP,EAAO9lC,MAAO,CAC5C2uB,aAAcA,EAAa3uB,MAC3BkY,YAAa+B,EAAE/B,YACfinB,QAAQ16B,GACJmhC,EAAK,QAASnhC,EAClB,EACA29B,iBAAiB39B,GACbmhC,EAAK,mBAAoBnhC,EAC7B,EACA49B,oBAA8C,GAAzBpoB,EAAEooB,oBACvBpB,QAAShnB,EAAEgnB,SAEf9G,EAAOn6B,MAAM+H,IACbqI,EAAMzQ,KAAOsa,EAAEta,KACfyQ,EAAM5R,QAAQ07B,QAAQ0K,WAAWC,YAAc5qB,EAAE4qB,aAAe,GAChEz0B,EAAM6qB,QAAQ,EAelB,OAbAqL,EAAAA,EAAAA,YAAU,KACNL,GAAa,KAEjBvjC,EAAAA,EAAAA,QACI,IAAMuX,EAAEta,OACR,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,KAE7BD,EAAAA,EAAAA,QACI,IAAMuX,EAAE4qB,cACR,IAAMoB,KACN,CAAEp9B,WAAW,EAAOlG,MAAM,IAEvB,CAAEkjC,OAAMC,SAAQG,cAAa9L,SACxC,EACAz3B,MAAO,CACH,sBAAuB,CACnBE,UACIhC,KAAKqlC,aACT,MCxGwS,MCOhT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBY7kC,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAiB,C,MAAC,CAAwB,MAAS,EAACE,MAAY,oBAACuI,QAAYvI,EAAI+Q,S,YAAsB,EAAS,K,IAAEW,U,GAAQgC,UAAAA,OAAO,EAAC,MAAC,I,MAC7M5Q,CAAI,EAAE9C,GAAI8C,UAAI,M,KACd2kC,CACAC,KAAAA,EAAAA,KACApY,oBAAmBqY,EAAAA,aACtB,0BAAC,aAAe,mDAAqB,OAAS,EAAa,QAAQj0B,EAAAA,MAAO,QAAC,oBAAerS,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAKvB,WAAI4nC,U,CAAwC,eAAYC,EAAS,M,MAAC,CAAc,QAAY,UAAG,SAAW,GAAY,aAACxmC,MAAM,c,MAAkBe,C,MAA6BU,EAAI,KAAI,SAAC,YAACvB,EAAAA,KAAW,CAAM,EAAG,WAAUe,UAAsCQ,EAAI,KAAC,EAAM,sB,WAAS,EAAS5B,KAAK,OAAcK,QAAAA,SAAqB,eAACzB,WAAM,WAA8B,MAAC,CAACuB,MAAM,qB,MAA0Be,C,MAA6BytB,EAAAA,aAAgB,SAAC,YAACtuB,EAAAA,aAAW,CAAc,EAAKvB,WAAI8nC,kBAAwDhoC,EAAK,iBAAC,Q,YAASE,OAA2B,MAAC,CAACqB,MAAM,2B,MAAyBe,C,MAA6BslC,EAAAA,YAAe,SAAC,YAACnmC,EAAAA,YAAW,CAAa,EAAG,WAAUe,iBAA8CxC,EAAM,+B,YAASE,O,MAAsC,CAAc,MAAQ,EAAC,GAAK,+BAAC,OAAQ,EAAM,UAACqB,OAAM,G,MAA2Be,C,MAA6BulC,EAAAA,cAAiB,SAAC,YAACpmC,EAAAA,cAAW,CAAe,EAAIe,WAAG,mBAA2CxC,EAAK,uBAAC,C,YAASE,O,MAAsC,CAAc,MAAQ,EAAC,GAAK,+BAAC,OAAQ,EAAM,UAACqB,OAAM,G,MAA2Be,C,MAA6B2lC,EAAAA,cAAiB,SAAC,YAACxmC,EAAAA,cAAW,CAAe,EAAIe,WAAG,mBAA2CxC,EAAK,uBAAC,C,YAASE,O,MAAsC,CAAc,MAAQ,EAAC,GAAK,+BAAC,OAAQ,EAAM,UAACqB,OAAM,G,MAA2Be,C,MAA6B4lC,EAAAA,cAAiB,SAAC,YAACzmC,EAAAA,cAAW,CAAe,EAAI,WAAG,oBAErmDnB,EAEJ,E,iBCT4D,GAAY,W,IAAiCN,EAAM,K,EAAC,QAAUE,G,OAA8B,EAAO,cAAmN,OAAY2V,C,MAAM,CAA4C,QAAa,MAAgD,cAAG,MAAC,kCAAC,YAAQ,EAAShE,GAAAA,yC,GAAyC,CAAC,kBAAG,yBAC/iB,KADwK,Q,MAAC,CAA0B,QAAQ3R,EAAM,MAAC,oBAA6B,MAAQA,EAAI2V,MAAM,sBAAG,MAAC,kCAAC,MAAQ,S,GAAkD,CAAC,kBAAIrT,OAAG,QAAc,QAAC,EAACxC,I,QCgCzV,IACAO,MAAAA,CAAAA,QAAAA,SACAQ,OACA,OACAonC,cAAAA,GACAC,eAAAA,EAEA,EACArmC,SAAAA,EAAAA,GAAAA,IAAAA,iBAAAA,iBACA,IACA,gDAGA,CAFA,SACA,qBACA,CACA,KC9CyQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5BZ,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,6BAA6BtC,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,OAASE,EAAI0V,OAAO,MAAQ,CAAC,UAAU,MAAQ1V,EAAImoC,aAAa,eAAe,KAAK,MAAQnoC,EAAIsoB,OAAStoB,EAAI+R,GAAG,mCAAmC,eAAe,GAAG,iBAAiB,IAAIvP,GAAG,CAAC,MAAQxC,EAAIooC,wBAAwB,6BAA6BpoC,EAAI0gB,QAAO,GAC5X,EACItgB,GAAkB,GCuBtB,IACAC,MAAAA,IACA,SACAqV,OAAAA,CACA3V,KAAAA,QACAS,SAAAA,GAEAU,MAAAA,QAEAmF,WAAAA,CAAAimB,yBAAAA,IACA9nB,SAAAA,CACA2jC,eACA,kBACA,CACA1qB,GAAAA,KAAAA,MACAC,KAAAA,KAAAA,MACAE,YAAAA,SACAC,SAAAA,GACAC,KAAAA,SACAC,YAAAA,GAPA,IASA,GAEAhd,QAAAA,CACAqnC,sBAAAA,GACA,EACA,yBADA,wBAEA,ICpD2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCyDhC,IACA/nC,MAAAA,CACAS,QAAAA,QACAI,MAAAA,OACAgI,SAAAA,QACAb,MAAAA,OACAC,SAAAA,OACAs/B,aAAAA,CACA7nC,KAAAA,QACAS,SAAAA,IAGA6F,WAAAA,CAAAgiC,iBAAAA,GAAAC,mBAAAA,IACAznC,OACA,OACAJ,OAAAA,EACAqC,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,gCACAhY,aAAAA,MACA6X,YAAAA,GACAI,kBAAAA,EACAS,kBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,wCACAZ,cAAAA,WACAI,cAAAA,UACAC,cAAAA,cAEA,EACApkC,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,8DACA,+BACA,wCACA,iBACA,qCACA,qCACA,sCAEA,EACAiG,WAAAA,EACAlG,MAAAA,KCzHsQ,M,sBCA/C,GAAe,KCOlO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5B5C,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kBAAkBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAOE,EAAIkB,MAAS,wBAAuBlB,EAAIkB,MAAM+H,KAAO,KAAK,QAAU,MAAMzG,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,kBAAkB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACnQ,EACIvgB,GAAkB,GCqBtB,IACAiG,WAAAA,CAAA0lB,cAAAA,IACA1rB,MAAAA,IAAA,UACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,gCACA,IC7BwQ,M,qBCA/C,GAAe,KCOpO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB8S,W,MAAGgB,K,IAAkB1C,MAAM,GAAC,QAAO,Y,SAAE,mDAAq6B,EAAO,KAA56B,Q,MAAG,CAAgI,cAAG,0BAAsB,GAAiByC,YAAY,OAASD,IAAG,YAA8BC,GAAAA,UAAY,GAAOzC,IAA0B,aAAiB,MAAC,MAAS,CAAC,SAAU,KAAiB,MAAc,IAAK,CAAC,MAAQE,CAAyC,KAAYwoC,KAA4C,gHAAG,IAAE,MAAO,EAAKC,aAAyB,SAACpnC,YAAM,Q,CAACH,EAAAA,6BAAgC,C,YAAU,O,MAAmB,CAAyB,gBAAC,GAACK,eAAW,GAAsB,QAAI,MAAO,GAAgFzB,UAAM,EAAC,eAAW,KAAC,QAAW,qCAAG,6BAACyI,SAAYvI,EAAI+Q,S,GAAuB,C,MAAYvO,EAAAA,0B,MAAM,C,MAA2BD,EAAAA,qB,SAAwB,SAAC,G,EAAC,qBAAW,C,aAAWvC,2B,IAAqD,GAAO,6D,MAAE,C,OAAQG,G,WAAqF,I,YAAU,O,IAAG,YAAiF,gBAAI,IAAmG,mBAAC,YAAQ,OAAiB,MAAOH,CAAmC,cAAQ,IAAuB,WAAvB,QAAkB,SAAsB,OAAsN,OAAC,KAAQ,KAA6D,oEAAC,OAAO,UAAyQ,GAAS,GAAE,+DAAC,IAAc,qBAACuI,CAAAA,EAAAA,GAAAA,EAAW,CAACvI,EAAG,KAAK,6B,GAACqC,CAAgBmG,MAAG,SAAS,GAAEhG,OAAAA,EAAAA,sBAAAA,SAAG,I,QAA0C,OAAM,yJ,UAAQ,SAAW,G,OAAE,mC,YAAmC,0K,MAAE,C,OAAQrC,GAAwE,eAAKkB,YAAM,OAACH,IAAK,YAA0BkB,GAAAA,UAAS,GAAgBpC,IAA4BuB,MAAAA,CAAU,EAAC,UAAoB,mBAAO,MAAQ,CAAiE,cAA0B,GAAOvB,CAAAA,EAAI0oC,EAAAA,EAAAA,CAAwB1tB,MAAAA,CAAqBrB,KAAQ,KAAuB,0EAAG,MAAK,CAAuC7Z,MAAM,qBAAC,SAAU,SAAG,GAAC,qBAAkBkb,CAAsB,EAAI,WAAO,uB,CAAmE,OAAQ,QAAe,CAAC,8B,GAAC,C,MAAmCA,SAAc,G,OAAOrB,EAAQ,sBAAI,CAAED,aAAU,MAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAAwC,YAAI,MAAkC,QAA3B,yBAAmE,KAAO,MAAUqP,CAAM,EAAC,4B,GAAC,C,MAAmCqJ,SAAc,G,OAAMrB,EAAQ,sBAAI,CAAED,aAAU,MAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAAuC,YAAI,MAAkC,QAA3B,yBAAoE,KAAO,MAAUqP,CAAM,EAAC,4B,GAAC,C,MAAmCqJ,SAAc,G,OAAMrB,EAAQ,sBAAI,CAAED,aAAU,KAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAAuC,YAAI,MAAkC,OAA3B,yBAAoE,KAAO,MAAUqP,CAAM,EAAC,6B,GAAC,C,MAAmCqJ,SAAc,G,OAAOrB,EAAQ,sBAAI,CAAED,aAAU,KAAO,2BAAKpX,I,CAAiD,OAAa,S,MAAC,CAAwC,YAAI,MAAkC,OAA3B,yBAAkE,WAAwB,GAAC,GAAK,0B,GAAC,CAAc,MAAQ,SAAC,GAAG,gCAACiG,aAAmB,MAAK,OAAC,KAAe,SAAS,MAAK,I,QAA2F,S,gBAAe,G,MAA2C,iCAAuD,2CAAC,MAAE,CAAIjG,0BAAmB,EAACxC,WAAM,GAAC,OAAQ,IAAI0C,YAAG,OAAC,gB,GAAyBmP,UAAOmH,G,UAI1/IY,CAAAA,EAAQ,KAAW/H,EAAAA,GAAQ,CAAC,sBAC9B,MACE,aAAE,0CAAe3R,GAAIkb,EAAAA,GAAAA,GAAM,sBAAC9Y,M,CAAsC,EAAC,M,MAACb,CAAkB,UAAmEzB,GAAAA,CAAO,MAAQ,SAAG,GAAY,IAAX,UAAW,yBAAG,sBAACyI,OAAYvI,IAAI+Q,KAAI,MAAI,SAAC,IAAW,Y,SAAqB,C,MAA2BxO,EAAAA,M,SAAwB,SAAC,G,EAAC,O,aAAqBvC,YAAqE,IAAK,IAAC,GAAgB,WAAV,QAAU,qBAACqB,MAAM,CAACH,OAAU,GAAyBkB,WAAS,I,YAA+C,OAACb,IAAAA,YAAmC,gBAAM,IAAqH,MAAQ,OAASoQ,EAAAA,GAAM,CAAE,YAAWg3B,OAA6B,OAAC,cAAoD,8DAAC,IAAc,MAAO,EAAKznC,WAA+B,OAAI,MAAM,EAAC,uBAAgE,SAAC,YAAC,yBAAwB,C,EAAyC,sCAAI,CAACoB,EAAG,aAAsBA,CAAAA,EAAG,yBAAa,uCAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,KAAS,IAAyEsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA+B,0CAAKF,GAAG,QAAoB,CAAC,EAAI,gBAAa,WAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,KAAU,IAA0EsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA+B,0CAAKF,GAAG,QAAoB,CAAC,EAAI,gBAAa,WAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,MAAU,IAA2HsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA8B,2CAAKF,GAAG,QAAoB,CAAC,EAAI,iBAAa,WAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,MAAS,IAA2EsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA8B,2CAAKF,GAAG,QAAoB,CAAC,EAAI,iBAAa,oDAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,KAAS,IAA2EsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA8B,0CAAKF,GAAG,QAAoB,CAAC,EAAI,kBAAa,WAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,KAAS,IAA2EsB,CAAE,EAAC,c,MAAC,C,SAAmC,GAA+B,0CAAKF,GAAG,QAAoB,CAAC,EAAI,kBAAa,WAACxC,GAAAA,CAAO,eAAa,GAAC,OAAQE,EAAIkB,wBAAsB,KAAU,IAAyHpB,CAAAA,EAAK,KAAC,S,MAAC,CAAY,SAAW,GAAG,0CAAsBuC,GAAI,QAAW,gC,GAAG,C,MAAYG,SAAAA,GAAI,OAAC,gC,YAAqD,S,gBAAc,G,MAAmC,QAA7B,EAAGxC,MAAIkB,qB,KAA+D,MAAO,kE,OAAA,Q,MAAE,C,OAAQf,G,WAAoF,I,YAAU,O,IAAG,Y,GAAwFL,UAAM,G,IAAW,MAAM,CAACK,EAAG,MAAU,GAAC,CAAmEL,YAAM,O,MAAC,CAAS,cAA8FA,GAAK,CAAC,iD,MAAC,CAAS,UAAkGA,CAAAA,EAAK,GAAC,6D,MAAC,CAAS,UAAqFA,CAAAA,EAAK,GAAC,kE,MAAC,CAAS,UAA+FA,CAAAA,EAAK,GAAC,gE,MAAC,CAAS,UAA0FA,CAAAA,EAAK,GAAC,qE,MAAC,CAAS,UAAiI,+EAAI,MAAK,CAAsB,KAASE,KAAiFqC,CAAAA,EAAG,+DAAI,OAAC,KAAQ,K,CAA6C,EAAGrC,GAAIkB,cAAK,wD,MAAEsb,CAAmB,UAAC,uEAAM,MAAC,CAAw3B,KAAM5L,KAAsE,kHAAC,IAAmB,MAAO,EAAC,YAAS,qDAAG,OAAKA,EAAG,KAAK,CAClrK,MACGxQ,GAAAA,CAEJ,MAAiBA,SAAAA,G,k0BCVwFN,GAAM,W,IAAC,O,EAA+B,QAAY,G,OAAG,OAAY,C,YAAY,OAAG,MAAC,CAAG,MAAC,qBAAC,UAAY,GAAqB,WAAGE,UAAY8oB,I,GAA6CzmB,CAAM,OAAW,yB,EAA6B,KAAO,OAAG,c,OAAC,aAAc,C,IAAC,G,CAAqB,WAAP,EAAW,O,MAAC,CAAuB,SAAIrC,UAAa,GAAsFF,SAAM,GAAC,QAAc,SAAW,aAAgC,+EAACyI,MAAAA,CAAqBlG,WAAI,GAAYmG,OAAG,G,0BAAWhG,G,YAAcF,EAAG,K,IAAgBxC,Y,aAAc,G,UAAiC,GAAO,IAAC,EAAQ,I,MAAC,CAAuB,SAAG0C,UAAY,GAAoE,YAAQ,MAAM,SAAO,sBAAkCJ,GAAS,UAAa,EAAE,0D,IAA8B,S,MAACb,CAAiC,6BAAIe,SAAG,SAAgB,GAACxC,EAAM,sBAAC,EAAW,oC,CAAQoB,EAAAA,GAAAA,EAAiB,C,MAACkB,C,MAA6B8Y,I,MAAW3Z,CAAkB,cAAIe,SAAU,SAAC,GAACxC,EAAM,OAAC,EAAW,WAAQ,WAAsB,OAAC0C,MAAG,CAAC,MAAQ,G,MAAwBxC,YAAoC,SAAG,GAAEA,CAAuF,kBAC5yC,uCACGI,I,2FCCG,MAAMwoC,GAAsB,CAAC,MAAO,MAAO,KAAM,UASxD,QACEvoC,MAAO,CACLa,MAAOsC,OACPslB,MAAO,CACL/oB,KAAM+X,MACNtX,QAAS,IAAMooC,IAEjB1/B,SAAU,CACRnJ,KAAMiD,QACNxC,SAAS,IAGbK,OACE,MAAO,CACLqa,MAAO,GACP2tB,sBAAsB,EAE1B,EACA9nC,QAAS,CACP+nC,qBAAqB9tB,GACnB,MAAM3Y,EAAM,IAAI6W,GAAQ8B,GACxB,IAAK3Y,EAAIqG,SAAWrG,EAAIiX,SAAU,OAClC,MAAMyvB,EAAiC,CACrC/tB,eACAtB,SAAU,KACVC,OAAQ,MAEV7X,KAAKgE,MAAM,QAASijC,EACtB,EACAL,sBAAsB7vB,GACpB,IAAKA,GAA0B,IAAjBA,EAAMC,OAElB,YADAtX,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,0CAGrB,MAAMg3B,EAAiC,CACrC/tB,aAAc,SACdtB,SAAUV,GAAON,IAAIG,EAAM,IAAIc,SAC/BA,OAAQd,EAAM,GAAKG,GAAON,IAAIG,EAAM,IAAIc,cAAWxK,GAErDrN,KAAKgE,MAAM,QAASijC,EACtB,ICpDmT,M,uBCAxF,GAAe,KCO1O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB8H,W,IAAe,OAAuB,EAAC,W,OAAI,Q,YAAU/oC,OAA2B,OAAIA,MAAQA,EAAIgpC,MAA2B,UAAU,GAAS3mC,QAAK,GAACvC,UAAM,G,SAAS,EAAE,U,GAAgB,C,OAAqB,EAAI,0B,CAAwB,gCAAC,OAAM,EAAG,IAAI,CAAkE,IAAKmpC,EAAyBnpC,MAAM,CAAC,MAAU,GAAI,UAAW,GAAC,YAA+B,QAACyI,SAAe,EAAI,WAAkBC,CAAE,EAAC,OAAS,uD,MAAEhG,W,OAAAA,EAAAA,GAAAA,EAAAA,C,MAAK,C,WAAW,G,OAAsB,G,0BAAY,G,YAAgB,KAAW,E,6BAAmB,G,UAAmE,GAAC,U,MAAC,CAAU,SAAIxC,UAAO,GAAqB,YAAQ,MAAO,QAAiB,sBAA6BoC,GAAS,iBAAe,OAACpC,MAAIkpC,CAAoB,WAA6B,2BAAI5mC,IAAqD,MAAU,a,MAAoB,CAAQE,MAAG,kB,SAAQ,SAAC,G,EAAiB,gBAAW2mC,C,EAA8B,+BAAyI,CAAC,EAAG,KAAInpC,EAAI4Q,GAAG,EAAG,YAAE,cACjwC,eACGxQ,IAAAA,KAAAA,IAEJ,GAASa,C,0KCFF,MAAMmoC,GAA4B,CACrC/yB,GAAiBiB,SACjBjB,GAAiBO,SACjBP,GAAiBS,cACjBT,GAAiBuB,OACjBvB,GAAiBG,cACjBH,GAAiBe,SAErB,QACI/W,MAAO,CACHa,MAAOgC,OACP4lB,MAAO,CACH/oB,KAAM+X,MACNtX,QAAS,IAAM4oC,IAEnBH,WAAY,CACRlpC,KAAMiD,QACNxC,SAAS,GAEb0I,SAAU,CACNnJ,KAAMiD,QACNxC,SAAS,GAEbgV,SAAU,CACNzV,KAAMiD,QACNxC,SAAS,IAGjBK,OACI,MAAO,CACHqoC,iBAAiB,EAEzB,EACA1kC,SAAU,CACNwkC,YACI,GAAIlnC,KAAKunC,SAASC,WAAWC,UACzB,MAAO,CAACznC,KAAKZ,OAASY,KAAKgnB,MAAM,IAGrC,IAAIA,EAAQhnB,KAAKgnB,MAIjB,OAHKhnB,KAAKgnB,MAAMtc,SAAS1K,KAAKZ,SAC1B4nB,EAAQA,EAAMlO,OAAO9Y,KAAKZ,QAEvB4nB,CACX,EACA0gB,aACI,OAAOJ,GAA0BvvB,QAAQ7B,IAAOlW,KAAKgnB,MAAMtc,SAASwL,IAAMA,IAAMlW,KAAKZ,OACzF,GAEJH,QAAS,CACLooC,wBAAwBM,GACA,UAAhBA,GACJ3nC,KAAKgE,MAAM,QAAS2jC,EACxB,ICvDiT,M,uBCAxF,GAAe,KCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICVYhxB,GDUZ,GAAe,GAAiB,SCVhC,SAAYA,GACRA,EAAAA,UAAAA,SACAA,EAAAA,YAAAA,WACAA,EAAAA,aAAAA,WACH,EAJD,CAAYA,KAAAA,GAAQ,KA+Bd,SAAUixB,GAAgBhqC,GAC5B,MAAMsb,EAAe,IAAI9B,GAAQxZ,EAAQsb,cACzC,OAAKA,EAAatS,QACXsS,EAAavB,sBAAsB/Z,EAAQga,SAAUha,EAAQia,QADlC,EAEtC,CAEM,SAAUgwB,GAA2BjqC,GACvC,MAAMmZ,EAAQ6wB,GAAgBhqC,GAC9B,GAAqB,IAAjBmZ,EAAMC,OAAc,OAAO,KAC/B,MAAMM,EAAe1Z,EAAQ0Z,aAAeR,GAAwBC,GAG9DmJ,EAAoC,CACtCtI,SAAUb,EAAM,GAAG6D,cACnB/C,OAAQd,EAAM,GAAG6D,cACjBtB,YAAa1b,EAAQ0b,aAAe,GACpChC,eAgBJ,OAdI1Z,EAAQ6b,iBAAmB7b,EAAQ6b,gBAAgBzC,OAAS,IAC5DkJ,EAAOzG,gBAAkB7b,EAAQ6b,gBAAgBV,QACjDnb,EAAQuc,iBAAgB+F,EAAOvG,gBAAkB/b,EAAQuc,gBACzDvc,EAAQwc,YAAW8F,EAAOxG,WAAa9b,EAAQwc,WAC/Cxc,EAAQsc,YAAWgG,EAAOtG,WAAahc,EAAQsc,WAC/Ctc,EAAQ4c,eAAc0F,EAAO1F,aAAe5c,EAAQ4c,cACpD5c,EAAQyc,aAAY6F,EAAOrG,YAAcjc,EAAQyc,YACjDzc,EAAQ0c,gBAAe4F,EAAOpG,eAAiBlc,EAAQ0c,eACvD1c,EAAQ2c,cAAa2F,EAAO3F,YAAc3c,EAAQ2c,aAClD3c,EAAQkd,cAAgBld,EAAQkd,aAAa9D,OAAS,IAAGkJ,EAAOpF,aAAeld,EAAQkd,aAAa/B,KAAK,MACzGnb,EAAQ6X,kBAAiByK,EAAOxK,kBAAoB9X,EAAQ6X,iBAC5D7X,EAAQkqC,WAAU5nB,EAAO4nB,SAAWlqC,EAAQkqC,UAC5ClqC,EAAQmd,gBAAemF,EAAOnF,cAAgBnd,EAAQmd,eACtDnd,EAAQ2b,cAAa2G,EAAO3G,YAAc3b,EAAQ2b,aAC/C2G,CACX,CAEM,SAAU6nB,GAA4B3oC,EAA0B6Q,GAClE,IAAK7Q,GAAOsb,YAAa,MAAO,cAChC,MAAMna,EAAM,IAAI6W,GAAQhY,EAAM8Z,cACxB8uB,EAAmBhyB,MAAMC,QAAQ7W,EAAMsb,aACvC,WACAtb,EAAMsb,YAAYutB,WAAW,SAC7B7oC,EAAMsb,YAAY7B,MAAM,KAAK,GAC7B5I,EAAG,uBAAuB7Q,EAAMsb,YAAY0F,uBAClD,GAAI7f,EAAIiX,SACJ,OAAOvH,EAAG,2CAA4C,CAClDyK,YAAastB,EACbpwB,SAAUV,GAAON,IAAIxX,EAAMwY,UAAUrJ,OAAO,cAC5CsJ,OAAQX,GAAON,IAAIxX,EAAMyY,QAAU,IAAIsB,MAAQ5K,OAAO,gBAEvD,GAAIhO,EAAI+W,cAAgB9F,GAAAA,MAC3B,OAAOvB,EAAG,0CAA2C,CACjDqH,YAAa/W,EAAI+W,YACjBoD,YAAastB,EACbzwB,MAAOhX,EAAIgX,MACX2wB,gBAAiB,SAElB,GAAI3nC,EAAI+W,cAAgB9F,GAAAA,QAC3B,OAAOvB,EAAG,0CAA2C,CACjDqH,YAAa/W,EAAI+W,YACjBoD,YAAastB,EACbzwB,MAAOhX,EAAIgX,MACX2wB,gBAAiB,WAGrB,MAAM,IAAInM,MAAM,6BAExB,CAEA,QAAez3B,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHa,MAAOsC,OACPymC,WAAY,CACRlqC,KAAMiD,QACNxC,SAAS,GAEbgoC,qBAAsB,CAClBzoC,KAAM+X,MACNtX,QAAS,IAAM,CACX4V,GAAAA,aACAA,GAAAA,aACAA,GAAAA,QACAA,GAAAA,IACAA,GAAAA,OACAA,GAAAA,UACAA,GAAAA,cACAA,GAAAA,aAGR8zB,kBAAmB,CACfnqC,KAAM+X,MACNtX,QAAS,IAAMooC,IAEnBuB,yBAA0B,CACtBpqC,KAAM+X,MACNtX,QAAS,IAAM4oC,IAEnBgB,gBAAiB,CACbrqC,KAAMiD,QACNxC,SAAS,GAEb6pC,sBAAuB,CACnBtqC,KAAMiD,QACNxC,SAAS,GAEbM,QAAS,CACLf,KAAMiD,QACNxC,SAAS,IAGjBgE,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACbsc,uBACI,GAAgC,QAA5BzoC,KAAKZ,MAAM8Z,aAAwB,MAAO,WAC9C,GAAgC,WAA5BlZ,KAAKZ,MAAM8Z,aAA2B,CACtC,MAAMtB,EAAWzJ,IAAMnO,KAAKZ,MAAMwY,UAC5BC,EAAS1J,IAAMnO,KAAKZ,MAAMyY,QAEhC,OAAID,EAASgb,SAAW/a,EAAO+a,QAAUhb,EAAS+a,UAAY9a,EAAO8a,QAE1D,GAAG/a,EAASrJ,OAAO,UAAUqJ,EAAS8wB,UAAU7wB,EAAO6wB,WAAW9wB,EAASgb,SAC3Ehb,EAASgb,SAAW/a,EAAO+a,OAE3B,GAAGhb,EAASrJ,OAAO,cAAcsJ,EAAOtJ,OAAO,iBAInD,GAAGqJ,EAASrJ,OAAO,oBAAoBsJ,EAAOtJ,OAAO,gB,CAEhE,OAAOvO,KAAKZ,MAAM8Z,YACtB,GAEJna,OACI,MAAO,CACHgoC,sBAAsB,EACtB4B,0BAA0B,EAC1BC,oBAAoB,EACpBC,wBAAwB,EACxBzd,qBAAsB,KACtBhS,MAAO,GAEf,EACAjU,gBACI,MAAM2jC,EAAclU,KACpB50B,KAAKorB,2BAA6B0d,EAAYC,2BAClD,EACAjnC,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACJ,IAAKA,EAAK,OACV,MAAMutB,EAAQX,KACdW,EAAMwT,4BAA4Br7B,MAAMG,GAAO7N,KAAKorB,qBAAuBvd,GAC/E,EACA5F,WAAW,EACXlG,MAAM,IAGd9C,QAAS,CACL+pC,sBAAsBn5B,GAClB7P,KAAKgE,MAAM,QAAS,IAAKhE,KAAKZ,MAAO0oC,SAAUj4B,GACnD,EACA+2B,sBAAsB/2B,GAClB,MAAMtP,EAAM,IAAI6W,GAAQvH,EAAOqJ,cACzB+vB,EAAY1oC,EAAIoX,sBAAsB9H,EAAO+H,SAAU/H,EAAOgI,QAC9DP,EAAcR,GAAwBmyB,GAC5C,IAAIzvB,EAA2C,WAAxB3J,EAAOqJ,kBAA4B7L,EAAYrN,KAAKZ,MAAMoa,kBAAoB,KACjF,UAAhBlC,GAA4BtX,KAAKZ,MAAMoa,kBAAkB/B,SAAS,KAE3C,YAAhBH,GAA8BtX,KAAKZ,MAAMoa,kBAAkB/B,SAAS,OAC3E+B,EAAmB,MAFnBA,EAAmB,KAIvBxZ,KAAKgE,MAAM,QAAS,IAAKhE,KAAKZ,SAAUyQ,EAAQyH,cAAakC,qBAC7DxZ,KAAK4oC,oBAAqB,CAC9B,EACA/B,wBAAwBh3B,GACpB7P,KAAKgE,MAAM,QAAS,IAAKhE,KAAKZ,MAAOoa,iBAAkB3J,GAC3D,EACA82B,yBAAyB5R,GACrB,MAAMmU,EAA8B,IAC7BlpC,KAAKZ,MACRqa,gBAAiB,GACjBU,eAAgB,KAChBC,UAAW,KACXG,YAAa,KACbO,aAAc,GACdT,WAAY,KACZG,aAAc,KACdF,cAAe,KACff,YAAa,MAGX4vB,EAAepU,EAAS/d,OACxBoyB,EAAyB,GAE/B,IAAK,IAAInvB,EAAI,EAAGA,EAAIkvB,EAAclvB,IAAK,CACnC,MAAMub,EAAST,EAAS9a,GAClBovB,EAAetU,EAASoU,EAAe,GAE7C,GAAI3T,EAAOxZ,OAAS1H,GAAAA,IAApB,CAKA,GAAI+0B,EAAartB,OAAS1H,GAAAA,aAAyB,CAC3C+0B,EAAartB,OAAS1H,GAAAA,aACtB40B,EAAS/uB,eAAiBkvB,EAAa1tB,GAChC0tB,EAAartB,OAAS1H,GAAAA,QAC7B40B,EAAS9uB,UAAYivB,EAAa1tB,GAC3B0tB,EAAartB,OAAS1H,GAAAA,QAC7B40B,EAAS7uB,WAAagvB,EAAaztB,KACnCstB,EAAS1uB,aAAe6uB,EAAattB,UAC9BstB,EAAartB,OAAS1H,GAAAA,UAC7B40B,EAAS5uB,cAAgB+uB,EAAaztB,KAC/BytB,EAAartB,OAAS1H,GAAAA,cAC7B40B,EAAS1uB,aAAe6uB,EAAaztB,KAC9BytB,EAAartB,OAAS1H,GAAAA,SAC7B40B,EAAShvB,UAAYmvB,EAAa1tB,GAClCutB,EAASI,YAAcD,EAAaztB,MAC7BytB,EAAartB,OAAS1H,GAAAA,gBAC7B40B,EAASzzB,gBAAkB4zB,EAAa1tB,GACjC0tB,EAAartB,OAAS1H,GAAAA,aAC7B40B,EAAS3vB,YAAc8vB,EAAa1tB,IAExC3b,KAAKorB,qBAAuB,CAACie,GAC7B,K,CAEAH,EAASzvB,gBAAgB3b,KAAK03B,EAAO7Z,IACrCytB,EAAuBtrC,KAAK03B,E,MA5B5B0T,EAASpuB,aAAahd,KAAK03B,EAAO7Z,G,CAgCtCytB,EAAuBpyB,OAAS,IAChChX,KAAKorB,qBAAuBge,GAEhCF,EAASnU,SAAW/0B,KAAKorB,qBACzBprB,KAAKgE,MAAM,QAASklC,EACxB,KCtRsT,M,uBCAxF,GAAe,KCOjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICtBYK,GDsBZ,GAAe,GAAiB,Q,GEtBgO,W,IAAyB,O,EAAsB,QAAUrrC,GAAY,oB,OAA6B,aAAkB,GAACA,YAAIsrC,C,IAAiB,S,MAA8C,kBAAgBC,EAAAA,SAAAA,MAAAA,KAAAA,QAAAA,WAAAA,EAAAA,UAAAA,GAAAA,gBAAS,MAAC,CAAG,WAAC,UAAC,UAAavrC,QAAe,kBAAIsC,kBAAc,SAACxC,iBAAM,mBAAC,oBAAiB,sBAAC,UAAY,EAAG,W,GAAiB,CAAwC,aAAaE,EAAIqpC,eAA4BhoC,EAAK,KAAC,C,MAAM,CAAqBe,YAAS,M,WAAoBopC,GAAiB,WAAC,GAACjqC,WAAW,2BAAe,yCAAyCgB,MAAAA,CAAmBzC,MAAM,gBAAC,SAASE,SAAIyrC,GAAiB,gBAAgB,CAAE,EAAInpC,WAAG,kBAA6C,CAAE,EAACtC,GAAAA,EAAIyrC,CAAAA,EAAAA,GAAAA,EAAwB,CAAkNlpC,YAAY,OAAOC,MAAG,CAAC,OAAQ,mB,cAA4BgP,MAAQ,QAAE,YAAakB,kBAAqF5S,CAAAA,EAAM,0M,YAAS,O,GAAY,CAAgB,kBAAI,gBAAC,I,CAAwC,qE,OAAA,OAAC,OAAIE,MAAO,YACj6C,eAGD,I,wICCA,IACI,MAAMiL,EAAMxE,EAAAA,EAAAA,MACZilC,GAAAA,EAAAA,cAA6BzgC,EAAI0gC,Y,CACnC,MAAOjkC,IACLsb,QAAQ5X,MAAM1D,G,EFTlB,SAAY2jC,GACRA,EAAAA,eAAAA,cACAA,EAAAA,QAAAA,MACH,EAHD,CAAYA,KAAAA,GAAa,KGYzB,MAAMO,GAAqB,iBAErBC,GAAyB7qB,GACpBA,EAAO8qB,OAAO,GAAGC,cAAgB/qB,EAAOgrB,MAAM,GAEnDC,GAAa,CAACC,EAAgBC,KACzB,CACHC,WAAYF,EACZG,MAAOF,EACPla,UAAU,EACVpY,QAAQ,EACRyyB,UAAU,EACVC,UAAU,EACVC,WAAW,EACXC,gBAAgB,EAChB1sC,KAAM,eACN2sC,aAAe1qB,GACJ,GAAGA,EAAO9gB,OAAO2kC,QAAQ,IAAM,QAIlD,QAAez/B,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEsmC,UAASA,GAAAA,WACvBtsC,MAAO,CACHyoB,MAAOtlB,OACP1C,QAASkC,QACT6sB,aAAc3sB,OACdsZ,YAAatZ,OACbkW,YAAalW,OACb0pC,gBAAiB1pC,OACjB+T,OAAQ/T,OACR2pC,cAAe3pC,OACfkvB,aAAc,CACVryB,KAAMoD,OACN3C,QAAS,IAEbssC,aAAc,CACV/sC,KAAMiD,QACNxC,SAAS,GAEbusC,kBAAmB/pC,QACnBgqC,WAAYhqC,QACZiqC,iBAAkBjqC,QAClBkqC,OAAQ,CACJntC,KAAMmD,OACN1C,QAAS,YAEb2sC,cAAejqC,OACfqoC,UAAW,CACPxrC,KAAMmD,OACN1C,QAAS,eAGjBK,OACI,MAAO,CACHusC,OAAQ,QACRC,UAAU,EACVC,QAAS,CAACC,GAAAA,IACV/B,eAAe,EACfC,kBAAkB,EAClB+B,SAAU,GACV/7B,WAAY,GACZg8B,QAAS,KACTC,cAAe,KACfC,eAAgBtC,GAExB,EACAtqC,QAAS,CACL6sC,YACQ9rC,KAAK2rC,SACL3rC,KAAK2rC,QAAQI,iBAErB,EACA5mC,WACInF,KAAK2pC,kBAAmB,EACxB,MAAMpgC,QAAiB4W,EAAAA,EAAAA,KAAAA,KACW,WAAY,CACtCurB,SAAU1rC,KAAK0rC,SACf/7B,WAAY3P,KAAK2P,aAEpBjC,MAAMG,GAAMA,EAAE9O,OAEfiB,KAAK0pC,gBACA1pC,KAAKgsC,OAAOhsC,KAAKiS,QAAQnU,KAAK,+BAA+ByL,EAAS0iC,UAC3EjsC,KAAKgE,MAAM,UAAWuF,GAE9B,EACAmG,QACI1P,KAAK2pC,kBAAmB,EACxB3pC,KAAK0pC,eAAgB,CACzB,EACAwC,YACIlsC,KAAK2rC,QAAQQ,kBACjB,EACAC,YAAYlsB,GACRlgB,KAAK2rC,QAAUzrB,EAAOmsB,IACtBrsC,KAAK4rC,cAAgB1rB,EAAOosB,UAC5BtsC,KAAKwC,WAAU,KACX,GAAIxC,KAAK4rC,cAAe,CACpB,MAAMW,EAAe,GACrBvsC,KAAK4rC,cAAcY,gBAAgBxyB,SAASyyB,IACxCF,EAAazuC,KAAK2uC,EAAOC,WAAW,IAExC1sC,KAAK4rC,cAAce,gBAAgBJ,GAAc,E,KAGzDvsC,KAAKksC,WACT,GAEJxpC,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACb9sB,UACI,MAAM0uB,EAAe/tB,KAAK+tB,aACpB6e,EAAkB5sC,KAAK0a,YAAY7B,MAAM,KACzCg0B,EAAyB7sC,KAAKqrC,eAAiB9B,GAAcuD,YAE7DztC,EAAoButC,EAAgB9+B,KAAK4M,IAAmB,CAC9D4vB,WAAYP,GAAsBrvB,GAClC6vB,MAAO,KAAK7vB,IACZyV,UAAU,EACVpY,QAAQ,EACRyyB,UAAU,EACVC,UAAU,EACVE,gBAAgB,EAChBoC,OAAQ,OACRrC,WAAW,EACXsC,eAAiBhlC,GAAkBA,EAAI5I,MACvCwrC,aAAe1qB,IACX,IAAKA,EAAOnhB,KACR,OAAOmhB,EAAO9gB,MAElB,MAAM0G,EAAwCoa,EAAOnhB,KAC/Cy2B,EAA0C1vB,EAAOivB,SAAStY,MAAMyJ,GAAMA,EAAEjoB,OAASyc,IACvF,IAAK8a,EAAQ,OAAOsU,GACpB,GAAIhkC,EAAOmnC,QACP,MAAO,qBAEX,GACInnC,EAAOy3B,SACNv9B,KAAKgnB,OAAShnB,KAAKgnB,MAAMkmB,UAC1BltC,KAAKgrC,cACLtwB,IAAgBnG,GAAiBuB,OAEjC,MAAO,SAAS0f,EAAOx0B,cAE3B,IAAIyN,EACAzN,EACJ,GAAI0Z,IAAgBnG,GAAiBW,KAAM,CACvC,MAAM3U,EAAM4sC,mBAAmBntC,KAAKmV,QACpC,IAAIhO,EAAKgmC,mBAAmB3X,EAAOruB,IAC/BquB,EAAOruB,IAAMnH,KAAKmV,QAAUqgB,EAAOruB,KACnCA,EAAKgmC,mBAAmB,GAAG3X,EAAOruB,gBAEtCsH,EAAQ,GAAGzO,KAAKorC,kBAAkB7qC,SAAW4G,GAAM5G,GAAO4G,EAAKA,EAAK,aACpEnG,EAAOw0B,EAAOruB,GAAKquB,EAAOruB,GAAK,Y,MAC5B,GAAIuT,EAAYutB,WAAW,SAAU,CACxC,MAAO1nC,EAAKyH,GAAOwtB,EAAOruB,GAAG0R,MAAM,KACnCpK,EAAQ,GAAGzO,KAAKorC,kBAAkB7qC,SAAWyH,GAAY,aACzDhH,EAAOgH,GAAY,Y,MAEnByG,EAAQ,GAAGzO,KAAKorC,UAAU5V,EAAOv3B,QAAQu3B,EAAOruB,KAChDnG,EAAOw0B,EAAOx0B,KAElB,MAAMosC,EAAOriC,SAASutB,cAAc,KAOpC,OANA8U,EAAK5uC,KAAOwB,KAAKiS,QAAQzM,QAAQiJ,GAAOjQ,KACxC4uC,EAAKC,UAAYrsC,EACjBosC,EAAKE,iBAAiB,SAAUpnB,IAC5BA,EAAEnV,iBACF/Q,KAAKiS,QAAQnU,KAAK2Q,EAAM,IAErB2+B,CAAI,MAKfptC,KAAK0a,cAAgBnG,GAAiBuB,QAAW+2B,GACjDxtC,EAAQvB,KAAK,CACTwsC,WAAY,QACZC,MAAO,OACPwC,OAAQ,OACRrC,WAAW,EACXC,gBAAgB,EAChBC,aAAe1qB,GACJ,MAAMA,EAAO9gB,OAAO2kC,QAAQ,IAAM,YAKjD/jC,KAAKutC,qBACLluC,EAAQvB,KAAK,CACTwsC,WAAY,eACZC,MAAO,eACPwC,OAAQ,OACRnC,aAAe1qB,IACX,MAAMpa,EAA+Coa,EAAOnhB,KAC5D,IAAK+G,GAAUA,EAAOmnC,SAAWnnC,EAAOy3B,QAAS,OAAOuM,GAExD,MAAMtU,EAAS1vB,EAAOivB,SAAS,GACzBqY,EAAOriC,SAASutB,cAAc,KAC9BnmB,EAAOpH,SAASutB,cAAc,KAWpC,OAVAnmB,EAAKozB,UAAUttB,OAAO,2CAA2CY,MAAM,MACvE1G,EAAKk7B,UAAY,aACjBD,EAAKtU,YAAY3mB,GAEjBi7B,EAAKE,iBAAiB,SAAUpnB,IAC5BA,EAAEnV,iBACF/Q,KAAK0rC,SAAWlW,EAAOruB,GACvBnH,KAAK2P,WAAaoG,GAAWyf,EAAOv3B,MACpC+B,KAAK0pC,eAAgB,CAAI,IAEtB0D,CAAI,IAKvB/tC,EAAQvB,KAAK,CACTwsC,WAAY,WACZC,MAAO,WACPpa,UAAU,EACVsO,KAAM,KACN1mB,QAAQ,EACRyyB,UAAU,EACVC,UAAU,EACVE,gBAAgB,EAChBD,WAAW,EACXzsC,KAAM,eACN2sC,aAAa1qB,GACT,OAAQA,EAAO9gB,OACX,IAAK,SACD,MAAO,SACX,IAAK,YACD,MAAO,YACX,IAAK,WACD,MAAO,WACX,KAAK,KACD,MAAO,QACX,QACI,OAAO8gB,EAAO9gB,MAE1B,IAGJC,EAAQvB,KAAK,CACTwsC,WAAY,UAAUvc,KACtBwc,MAAOsC,EAAyB,QAAU,mBAC1C1c,UAAU,EACVsO,KAAM,OACN1mB,QAAQ,EACRyyB,UAAU,EACVC,UAAU,EACVE,gBAAgB,EAChBD,WAAW,EACXzsC,KAAM,eACN2sC,aAAa1qB,GACT,MAAO,MAAMA,EAAO9gB,OAAO2kC,QAAQ,IAAM,SAC7C,IAGJ,MAAMyJ,EAAaxtC,KAAKgnB,OAAOwmB,YAAc,GAC7C,IAAK,MAAMn+B,KAAQm+B,EAAY,CAC3B,MAAMjD,EAAQsC,EACRx9B,EAAKo+B,kBACL,GAAGp+B,EAAKq+B,oBAAoBl3B,GAAyBC,uBAC3DpX,EAAQvB,KAAKqsC,GAAW96B,EAAK+6B,OAAQG,G,CAGzC,MAAMoD,EAA8C3tC,KAAKgnB,OAAO2mB,YAAc,GAC9E,IAAK,MAAMt+B,KAAQs+B,EAAY,CAC3B,MAAMpD,EAAQsC,EAAyBx9B,EAAKq+B,kBAAoBr+B,EAAKu+B,kBACrEvuC,EAAQvB,KAAKqsC,GAAW96B,EAAK+6B,OAAQG,G,CAEzC,OAAOlrC,CACX,EACAkuC,sBACI,MAAMX,EAAkB5sC,KAAK0a,YAAY7B,MAAM,KAC/C,OAC+B,IAA3B+zB,EAAgB51B,QAChBhX,KAAKyrB,YAAYO,iBAAiByC,GAAAA,2BACjCzuB,KAAK0a,cAAgBnG,GAAiBiB,UAAYxV,KAAK0a,cAAgBnG,GAAiBO,YACxF9U,KAAKmrC,gBAEd,EACAplC,UACI,OAAQ/F,KAAKgnB,OAAOjhB,SAAW,IAAIgS,QAAQlK,IAAsCA,EAAE0vB,SACvF,EACAiQ,aACI,OAAOxtC,KAAKgnB,OAAOwmB,YAAc,EACrC,EACAhE,mBACI,MAAO,EACX,EACAqE,sBACI,MAAMjB,EAAkB5sC,KAAK0a,aAAa7B,MAAM,MAAQ,GACxD,IAAK+zB,EAAgB51B,OAAQ,MAAO,GAEpC,MAAM82B,EAAmD9tC,KAAKgnB,OAAOjhB,SAAW,GAC1EgoC,EAA4C,CAC9ChZ,SAAU,CAAC,CAAE5tB,GAAI,GAAInG,KAAM,cAAe/C,KAAM2uC,EAAgB,KAChEr1B,MAAO,EACPgmB,SAAS,EACT0P,SAAS,EACTe,iBAAkB,EAClBrtB,KAAM,GACNstB,WAAW,IAAI90B,MAAO2kB,WAE1B,IAAK,MAAMoQ,KAAaJ,EAAiB,CACrCC,EAAWx2B,OAAS22B,EAAU32B,MAC9Bw2B,EAAWC,kBAAoBE,EAAUF,iBACzC,IAAK,MAAM3+B,KAAQrP,KAAKwtC,WACfO,EAAW1+B,EAAKo+B,qBACjBM,EAAW1+B,EAAKo+B,mBAAqB,GAEzCM,EAAW1+B,EAAKo+B,oBAAsBS,EAAU7+B,EAAKo+B,oBAAsB,C,CAGnF,MAAO,IAAIK,EAAgB/1B,QAAQlK,GAAMA,EAAE0vB,UAAUwQ,EACzD,KCxUyS,M,uBCAxF,GAAe,KCOpO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCR1B,MAAOI,GACTj9B,4BACIgP,EACAxF,EACAnR,EACAu+B,EAAW,UAEX,MAAM0F,EAAaW,GAAyBC,qBACxCluB,GAEEytB,EAAaQ,GAAyBE,qBACxCnuB,GAEEna,EAAU,GAChB,IAAK,MAAMuoC,KAAoB/kC,EAASkY,UAAW,CAC/C,MAAMsT,EACFuZ,EAAiBvZ,UAAYuZ,EAAiBvZ,SAAS/d,OACjDs3B,EAAiBvZ,SACjB,CAAC,CACC/zB,KAAMstC,EAAiBttC,KACvBmG,GAAImnC,EAAiBnnC,GACrBlJ,KAAM+X,MAAMC,QAAQyE,GAAeA,EAAY3B,KAAK,KAAO2B,IAEjE5U,EAEF,CACAyR,MAAO+2B,EAAiBC,cAAgBD,EAAiB/2B,MACzDgmB,QAAS+Q,EAAiB/Q,QAC1ByQ,iBAAkBM,EAAiBN,kBAAoB,EACvDrtB,KAAM2tB,EAAiB3tB,MAAQ,OAC/BoU,WACAkZ,UAAW/2B,GAAON,IAAI03B,EAAiBlO,SAASvoB,SAC3CimB,UACLgK,YAEJ,IAAK,MAAMtS,KAAUT,EACjBjvB,EAAO,KAAK0vB,EAAOv3B,QAAUu3B,EAAOx0B,KAExC,IAAK,MAAMqO,KAAQm+B,EAAY,CAC3B,MAAMgB,EACFF,EAAiBG,eAAep/B,EAAKujB,MACnC8b,GACDJ,EAAiBK,0BAA4B,CAAC,GAC3Ct/B,EAAKujB,OACJ,CAAC,EACN4b,GACA1oC,EAAOuJ,EAAKq+B,mBACRc,EAAqBn/B,EAAKsjB,QAAU,EACxC7sB,EACIuJ,EAAKq+B,kBACLl3B,GAAyBC,sBACzBi4B,EAA0Br/B,EAAKsjB,QAAU,OAE7C7sB,EAAOuJ,EAAKq+B,mBAAqB,EACjC5nC,EACIuJ,EAAKq+B,kBACLl3B,GAAyBC,sBACzB,K,CAGZ,GAAIk3B,EAAW32B,OACX,IAAK,MAAM43B,KAAeN,EAAiBzQ,aAAc,CACrD,MAAMgR,EAAS33B,GAAON,IAAIg4B,EAAYrtB,WAAWhT,OAC7CiI,GAAyBE,gBAE7B5Q,EAAO,MAAM+oC,KAAYD,EAAY/S,QACrC/1B,EACI,MAAM+oC,IAASr4B,GAAyBC,wBACxCm4B,EAAYE,a,CAGxB/oC,EAAQjI,KAAKgI,E,CAGjB,MAAO,CAAE0nC,aAAYG,aAAY5nC,UACrC,CAEAmL,4BACIgP,GAEA,GAAIA,EAAO5I,cAAgB9F,GAAAA,MAAmB,MAAO,GAErD,MAAMoG,EAAWV,GAAON,IAAIsJ,EAAOtI,UAC7BC,EAASX,GAAON,IAAIsJ,EAAOrI,QAC3BuB,EAAQ,GACd,IACI,IAAI21B,EAAW73B,GAAOU,GACtBm3B,EAASC,SAASn3B,GAClBk3B,EAAWA,EAAS92B,IAAI,EAAG,QAE3BmB,EAAMtb,KAAKixC,GAGf,OADA31B,EAAMtb,KAAK+Z,GACJuB,EAAMtL,KAAK46B,IACd,MAAMuG,EAAUvG,EAAKn6B,OACjBiI,GAAyBE,gBAEvBkc,EAAO8V,EAAKn6B,OAAO,QACnBokB,EAAQ+V,EAAKn6B,OAAO,MACpB8oB,EAAMqR,EAAKn6B,OAAO,MACxB,MAAO,CACH67B,OAAQ1B,EAAKn6B,OAAO,cAEpBqkB,OACAD,QACA0E,MAEA6X,aAAc,WAAWD,IACzBvB,kBAAmB,MAAMuB,IACzBrB,kBACI,MAAMqB,IAAUz4B,GAAyBC,uBAChD,GAET,CAEAvF,4BACIgP,GAEA,GAAIA,EAAO5I,cAAgB9F,GAAAA,QAAqB,MAAO,GACvD,MAAMoG,EAAWV,GAAON,IAAIsJ,EAAOtI,UAC7BC,EAASX,GAAON,IAAIsJ,EAAOrI,QAC3Bs3B,EAAYj4B,GAAON,IAAIsJ,EAAOtI,UAAUS,QAAQ,SAChD+2B,EAAUl4B,GAAON,IAAIsJ,EAAOrI,QAAQQ,QAAQ,SAE5Cg3B,EAAQ,GACd,IAAI3G,EAAOyG,EACX,IAAK,IAAIl1B,EAAI,GAAIyuB,EAAK4G,QAAQF,KAAYn1B,EAAG,CACzC,MAAMs1B,EAAY7G,EAAKn6B,OAAO,YACxBihC,EAAa9G,EAAKvwB,MAAM,SAE9B,IAAIs3B,EAMAC,EAMAtF,EAXAxyB,EAAS03B,QAAQ5G,EAAM,SAEvB+G,EAAwB73B,EAASrJ,OAAO,MAIxCsJ,EAAOm3B,SAASQ,EAAY,SAE5BE,EAAsB73B,EAAOtJ,OAAO,MAMpC67B,EAFAqF,GAAyBC,EAGrB,GAAGD,KAAyBC,KAAuBH,IAChDE,EAEE,GAAGA,KACRD,EAAWjhC,OAAO,QAClBghC,IACGG,EAEE,GACLhH,EAAKn6B,OAAO,QACZmhC,KAAuBH,IAGlBA,EAGb,MAAMlgC,EAAO,CACT+6B,SAEAxX,KAAM8V,EAAKn6B,OAAO,QAClBokB,MAAO+V,EAAKn6B,OAAO,MAEnB2gC,aAAc,aAAaj1B,IAC3BwzB,kBAAmB,QAAQxzB,IAC3ByzB,kBAAmB,QAAQzzB,KAE/Bo1B,EAAMvxC,KAAKuR,GACXq5B,EAAOA,EAAKzwB,IAAI,EAAG,I,CAEvB,OAAOo3B,CACX,ECiEJ,QACA9wC,MAAAA,CAAAA,MACAgI,MAAAA,GACA,8BACA,EACAhC,WAAAA,CACAorC,qBAAAA,GACAC,mBAAAA,GACAC,cAAAA,GACAC,gBAAAA,GACAC,gBAAAA,IAEAhxC,OACA,OACAixC,WAAAA,UACArc,aAAAA,CAAA6F,OAAAA,GAAAyD,SAAAA,IACAgT,2BAAAA,CAAAA,EACAC,kBAAAA,EACAC,oBAAAA,EACAC,mBAAAA,EACAC,eAAAA,EACAC,eAAAA,EACAC,iBAAAA,EACA77B,cAAAA,GACA87B,aAAAA,GACAC,cAAAA,GAAAA,MAAAA,OAAAA,QACAld,cAAAA,GAAAA,MAAAA,KAAAA,EAAAA,UAAAA,OAAAA,QACAmd,sBAAAA,CAAAA,EACAC,qBAAAA,CAAAA,EACA7c,cAAAA,KACA+J,aAAAA,GACA+S,YAAAA,GACAh5B,SAAAA,KACAyoB,QAAAA,KACAzM,aAAAA,CACA1a,aAAAA,KACAM,iBAAAA,KACAlC,YAAAA,GAAAA,QACAgC,YAAAA,GACAoB,YAAAA,gBACAotB,SAAAA,YAEA+I,WAAAA,CACA33B,aAAAA,KACAwB,YAAAA,GACApD,YAAAA,GAAAA,SAEAyc,aAAAA,KACAC,QAAAA,CACAC,cAAAA,GAGA,EACAl0B,UACA,wBACA,gCACA,8BACA,EACA+B,MAAAA,CACAywB,GAAAA,CACAvwB,QAAAA,GACA,aACA,qDACA,2CAEA,EACAiG,WAAAA,GAEA2rB,aAAAA,CACA5xB,QAAAA,GACA,IACA,wCACA,0BACA,EACAiG,WAAAA,EACAlG,MAAAA,GAEAiuC,WAAAA,CACAhuC,UACA,yCACA,IAGAU,SAAAA,CACA2wB,oBACA,kDACA,EACAD,8BACA,4BACA,kEADA,CAEA,EACAI,oBACA,kCACA,6CACA,yDACA,+BACA,6CAAAsI,QAAAA,IACAgV,CACA,EACAC,2BACA,wEACA,yDAEA,mDACA,kBACA,kDAEA,yBACA,sDAEA,qBACA,kDAEA,2BACA,wDAEA,4BACA,yDAEA,iDACA,EACAC,aACA,6CACA,kCAEA,6CAEA,MACA,cAEA/xC,QAAAA,CACAgyC,mBAAAA,EAAAA,GAAAA,IAAAA,yBAAAA,eAAAA,GACA,cACA,aACA,QACA,4BACA,wBACA,sBACA,iBAAAnJ,SAAAA,SAAAxnB,WACA,QACAuc,YAAAA,YAAAA,KAAAA,WAAAA,gBAAAA,YACAG,WAAAA,CAAAA,KAAAA,cAEA,MACA,4BACAN,GAAAA,EAAAA,CACAG,YAAAA,gBACAG,WAAAA,CAAAA,WACAD,YAAAA,CAAAA,cACAD,WAAAA,YAEA,CAAAG,SAAAA,GAAAzD,OAAAA,IAEA,gDACA0X,EAAAA,CAAAjU,SAAAA,GAAAzD,OAAAA,KAEA,mBACAA,OAAAA,IAAAA,EAAAA,UAAAA,EAAAA,QACAyD,SAAAA,IAAAA,EAAAA,YAAAA,EAAAA,WAGA,iBACA,MAAA6K,SAAAA,UACAlqC,EAAAA,aACAA,EAAAA,kBAEA,oBAMA,GALA,mBACA47B,OAAAA,IAAAA,EAAAA,UAAAA,EAAAA,UAAAA,EAAAA,QACAyD,SAAAA,IAAAA,EAAAA,YAAAA,EAAAA,YAAAA,EAAAA,WAGA,yDACA,8BACA5c,GAAAA,IAAA,EAAAynB,SAAAA,WAAAxnB,WACAC,GACA,MAAAunB,SAAAA,YACAlqC,EAAAA,aACAA,EAAAA,oBAGA,QACAi/B,YAAAA,iBACAC,WAAAA,WACAC,YAAAA,CAAAA,aACAC,WAAAA,CAAAA,KAAAA,cAEA,KACAmU,EACA,iBACA,WACA,WAEA,mBACA3X,OAAAA,IACA,YACA,YACA,YACA,YACA,UAEAyD,SAAAA,IACA,cACA,cACA,cACA,cACA,YAGA,MACA,mBACAzD,OAAAA,IAAAA,EAAAA,UAAAA,EAAAA,UAAAA,EAAAA,QACAyD,SAAAA,IAAAA,EAAAA,YAAAA,EAAAA,YAAAA,EAAAA,WAGA,mCACA,uCAEA,iBACA,4BACA,sEACA,qFACA,oBACAmU,EAAAA,iBAAAA,EAAAA,OAAAA,WAAAA,EAAAA,OAAAA,QAAAA,KAAAA,gBAAAA,EACA,sBACAA,EAAAA,iBAAAA,EAAAA,OAAAA,WAAAA,EAAAA,OAAAA,QAAAA,KAAAA,kBAAAA,EACA,oBACAA,EAAAA,iBAAAA,EAAAA,OAAAA,WAAAA,EAAAA,OAAAA,QAAAA,KAAAA,gBAAAA,EACA,6BACAC,EAAAA,OAAAA,GAAAA,IAAAA,EAAAA,WAAAA,WAEA,uCACA,IACAz0B,kBAAAA,EAAAA,GAAAA,IAAAA,oBAAAA,iBACA,sFACA,IACA00B,0BAAAA,EAAAA,GAAAA,IAAAA,4BAAAA,iBACA,2DACA,8CACAlnC,gCACAsD,MAAAA,GAAAA,EAAAA,KAAAA,OAEA,6BAEA,IACA6jC,yBAAAA,EAAAA,GAAAA,IAAAA,2BAAAA,iBACA,2DACA,6CACAnnC,yCACAsD,MAAAA,GAAAA,EAAAA,OAEA,4BAEA,IACA8jC,iBAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,eAAAA,GACA,IACA,qBACA,4BACA,aAEA,gCAEA,wCAEA,qBACA,EACA92B,YAAAA,EACA4F,OAAAA,CAAAA,GAAAA,QAAAA,GAAAA,SAGA,iDAGA,CAFA,WACA5gB,EAAAA,EAAAA,IAAAA,uCACA,CACA,IACA+xC,yBACA,sBACA,eACAjkB,aAAAA,IAAAA,KAAAA,GAAAA,OAAAA,eAEA,4BACA,EACAkkB,kBAAAA,GACA,8BACA,2CACA,oCACA,EACAhe,uBACA,6CACA,+BAEA,qCAEA,EACAG,sBAAAA,eAAA4O,EAAAA,QAAAlF,IACA,EACA,+DAEA,mEAEA,EACAoU,mBAAAA,GACA,IACA,8BACA,uCACA,EACA/K,sBAAAA,GACA,mBAAA1tB,EAAAA,SAAAtB,EAAAA,OAAAC,GAAA,EACA,YACA,+BACA,QACA,gCACA,iCACA,6BACA,0BACA,IC1jBgQ,M,uBCA5C,GAAe,KCQ/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvB4B0D,GAAOrd,WAAsB,MAAU,KAA8BF,EAAK,EAAC,SAAQ,EAACE,MAAO,Y,OAAyB,EAAM,WAAC,CAAW,iB,MAAC,CAAc,oCAAqB,iBAAIsC,SAAS,GAACC,mBAAY,K,CAAsB,QAAU,CAAG,2BAAE,MAAMpC,CAAyIL,SAAM,K,CAAwD,OAAU,GAACE,EAAM,GAAC,kCAA8B0zC,IAAW1zC,EAAIutB,GAAAA,EAAAA,gBAAwB,2CAAC,OAAKvtB,MAAI2zC,EAAAA,GAAAA,wCAAuD7zC,SAAM,0E,CAA6C,gBAAc6zC,kBAAcC,EAAAA,kBAAgB,C,MAAC,CAAU,wCAAG,QAAW5zC,EAAI2zC,cAAcE,iBAA8JlmC,MAAW,MAAwB,OAAS,iJAAG,YAAC,CAAC7N,SAAM,WAAC,OAASE,KAAmD,OAAI,OAAO,WAAc,oBAACF,cAAM,OAAyD,mBAAkB,CAAuE,OAAKE,MAAI8zC,EAAAA,GAAAA,yCAAwDh0C,SAAM,2E,CAA8C,iBAAcg0C,kBAAeF,EAAAA,kBAAgB,C,MAAC,CAAU,yCAAG,QAAW5zC,EAAI2zC,eAAcE,iBAA+JlmC,MAAW,MAAwB,OAAS,kJAAG,YAAC,CAAC7N,SAAM,WAAC,OAASE,KAAmD,OAAI,OAAO,WAAc,oBAACF,cAAM,OAAwD,mBAAkB,CAAsE,OAAKE,MAAI+zC,EAAAA,GAAAA,wCAAuDj0C,SAAM,0E,CAA6C,gBAAci0C,kBAAcH,EAAAA,kBAAgB,C,MAAC,CAAU,wCAAG,QAAW5zC,EAAI2zC,cAAcE,iBAA8JlmC,MAAW,MAAwB,OAAS,iJAAG,YAAC,CAAC7N,SAAM,WAAC,OAASE,KAAmD,OAAI,OAAQsC,EAAG,6BAAgBC,cAAkB,OAAQ,OAAQvC,EAAI+R,eAAG,C,YAAgC,O,MAA8B,CAAkD,2CAAIzP,aAAG,iBAAqBC,QAAY,KAAM,oC,CAAQ,OAAmBya,C,YAA6B,OAAkB,OAAI1a,OAAG,qCAAoCC,cAAkB,MAAQ,qCAAuB,C,YAA0B,OAAuC,MAAC,CAAG,QAAC,qCAAC,iBAAiBoP,EAAAA,kB,GAA2C,CAAE,kBAACtQ,OAAM,0BAACH,G,MAA6D,CAAyB,MAAC,uBAACK,SAAU,SAAC,GAAsB,wBAAIe,EAAoBxC,WAAM,0BAA0B,mBAAC0C,MAAG,CAAC,KAAO,EAAI,eAAoB,GAAExC,CAAqFF,MAAM,sBAAgE,aAAvC,uBAAeytB,YAAwB,+B,MAAC,CAAwB,oBAAG,SAAMymB,EAAAA,YAAqBx3B,aAA4D1c,eAAM,aAAgE,aAAvC,uBAAeytB,YAAwB,+B,MAAC,CAAwB,oBAAG,SAAMymB,EAAAA,YAAqBx3B,aAAoE1c,eAAM,aAAgE,kBAAvC,uBAAeytB,YAAwB,kC,MAAC,CAAwB,oBAAG,SAAMymB,EAAAA,YAAqBx3B,aAAoE1c,eAAM,aAAgE,kBAAvC,uBAAeytB,YAAwB,kC,MAAC,CAAwB,oBAAG,SAAW,EAAG,YAAO,aAAiB,eAAC,aAA+B,gCAAG,GAAG,CACj3H,+BAGD,E,QCJItsB,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,0BAA0B,CAACxC,MAAM,CAAC,MAAQE,EAAI8oB,MAAM,QAAU9oB,EAAIc,QAAQ,SAAWd,EAAIoP,SAAS,KAAOpP,EAAID,MAAMwI,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,WAAWmG,GAAG,UAAS,KAAE0N,IAAQ,MAAO,CAAC5T,EAAG,cAAc,CAACxC,MAAM,CAAC,GAAM,GAAEE,EAAIi0C,wBAAwB/9B,EAAKgG,cAAc,CAAClc,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAKuhB,aAAa,OAAO,MACvX,EACIr3B,GAAkB,GCFgEmC,GAAAA,WAAkB,IAAI,EAAKyqC,KAA2B77B,EAAI,EAAC,SAAe,OAAM,iBAAQ,CAACrR,YAAM,Q,CAAC,aAA2T,OAAnT,EAAW,Y,KAAC,iBAAU,QAAC0C,MAAG,CAAC,MAAQ,Y,KAAiB,IAAuB,IAAIF,MAAG,SAAS,GAACxC,OAAM,aAAC,IAAY,CAACE,EAAG,IAAI,CAA8HF,MAAM,CAAC,KAAO,K,CAAiC,yBAAe,gF,MACreo0C,CACJ,cAAE,kBAAC3rC,eAAgBwI,CAAK1O,oBAAa,gB,YAAiE,O,iBAAU,WAAC,MAAM,CAAClC,EAAG,MAA4G,gBAAE,MAAMA,CAA2BoC,MAAW,UAAmBvC,KAAO,KAA8C,GAAC,0BAAM,6BAAM,0CAAU,GAAzP,QAAmBA,CAAAA,EAAIG,EAAAA,EAAG,CAAgDL,MAAM,CAAC,KAAO,KAAoB,uDAA8I0I,E,OAAc0N,GAAM,C,IAAE,Y,GAAgC,UAAOA,KAAI,IAAM,6BAAI,KAAEA,I,GAAqC,C,IAAE,kB,GAAuGpW,UAAM,K,UAAgE,GAAO,GAAC,8EAAE,OAAIE,MAAO,EAAIA,kBAAqD,2BAAG,YAAgC,SAAS,8C,GAAQ,C,IAAE,wBAA+E,kBAAG,IAAgC,MAAC,GAAS,0D,GAAQ,C,IAAE,yBAAgF,kBAAI,IAC3/B,oEACGI,IAEJ,MAASa,M,UCNH,MAAOkzC,GACFC,UAAUC,EAAkBvxC,GAC/B,IAAIwxC,EAAa,+BAEjBD,EAAKv4B,SAASy4B,IACV,MAAMC,EAAMD,EAAS15B,KAAK,KAC1By5B,GAAcE,EAAM,MAAM,IAG9B,MAAMC,EAAaC,UAAUJ,GACvBpF,EAAOriC,SAASutB,cAAc,KACpC8U,EAAKyF,aAAa,OAAQF,GAC1BvF,EAAKyF,aAAa,WAAY7xC,GAC9B+J,SAASoZ,KAAK2U,YAAYsU,GAC1BA,EAAK7N,QACLx0B,SAASoZ,KAAK2uB,YAAY1F,EAC9B,CACO2F,WAAWC,EAAahyC,GAC3B,MAAMiyC,EAAO5sC,KAAKC,UAAU0sC,GACtBE,EAAQ,IAAI5zB,KAAK,CAAC2zB,GAAO,CAAEh1C,KAAM,6BACjCk1C,EAAMC,IAAIC,gBAAgBH,GAC1B9F,EAAOriC,SAASutB,cAAc,KACpC8U,EAAKyF,aAAa,OAAQM,GAC1B/F,EAAKyF,aAAa,WAAY7xC,GAC9B+J,SAASoZ,KAAK2U,YAAYsU,GAC1BA,EAAK7N,QACLx0B,SAASoZ,KAAK2uB,YAAY1F,EAC9B,EAEJ,WAAmBiF,GCwBnB,IACA9zC,MAAAA,CACAyoB,MAAAA,MACA1Z,SAAAA,OACArP,KAAAA,OACAitC,WAAAA,SAEAxoC,SAAAA,CACArD,UACA,SACA,CAAAS,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,OAAA+wB,UAAAA,GACA,CAAArwB,KAAAA,KAAAA,GAAAA,4CAAAV,MAAAA,aAAA+wB,UAAAA,GACA,CAAArwB,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,mBAAA+wB,UAAAA,GACA,CAAArwB,KAAAA,KAAAA,GAAAA,yCAAAV,MAAAA,oBAAA+wB,UAAAA,IAEA,QACA,GAEAlxB,QAAAA,CACA6sC,YACA,SACA,CAAAhsC,KAAAA,KAAAA,GAAAA,4CAAAV,MAAAA,cACA,CAAAU,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,oBACA,CAAAU,KAAAA,KAAAA,GAAAA,yCAAAV,MAAAA,sBAGA,yBACAC,EAAAA,QAAAA,CAAAS,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,qBACA,qBACAC,EAAAA,QAAAA,CAAAS,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,gBACA,sBACAC,EAAAA,QAAAA,CAAAS,KAAAA,KAAAA,GAAAA,sCAAAV,MAAAA,gBAGA,4BACA,wCACAk0C,EAAAA,QAAAA,EAAAA,KAAAA,GAAAA,EAAAA,QACAjB,GAAAA,UAAAA,EAAAA,sBAAAA,KAAAA,KAAAA,OACA,IC3F8Q,M,sBCA/C,GAAe,KCQ1O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCXhC,IACA9tC,WAAAA,CAAAgvC,sBAAAA,IACAh1C,MAAAA,CACAyoB,MAAAA,MACAhoB,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEA4O,SAAAA,OACA6kC,YAAAA,CACAl0C,KAAAA,OACAS,QAAAA,YAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,aC3BgR,MCQ5Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,Q,GCnBgE,W,IAAI,OAAqB,aAAC,OAAM,QAA6BV,MAAM,CAAC,KAAO,GAAuB,MAAQE,gBAAoC,gCAACwC,MAAG,CAAC,MAAQ,QAASmP,Y,MAAe3R,EAAI8F,e,cAAwB5E,I,GAA2B,CAAE,kBAAC,2BAAO,QAAiCqB,YAAkB,GAAc,KAAoBzC,EAAK,MAAC,Q,YAASE,O,YAAyBA,CAAa,YAAY+R,Q,MAAoD,CAAc,QAAY,MAAM,OAAC,QAAY,SAAS,WAAe,uCAAa,QAAkB,YAAG,YAAC,OAAC,aAAQ,Q,eAA4BjM,a,eAA6B,I,GAAiB,CAAE,kBAAC,2BAAO,QAAyB,OAAC,GAA0B,KAAwE,qBAAS,C,MAAC,CAAc,cAAe,OAAK,eAAUwvC,GAAiB,MAAOt1C,EAAIkB,GAAAA,uCAA4C,QAAG,SAAC,GAAC,eAAQ,K,IAAiB,EAAOlB,iB,KAAiC,UAATA,EAAIkB,MAAK,uB,GAAiB,CAAE,kBAAC,2BAASJ,EAAO,MAA4ByB,OAAY,GAAc,KAAoC,kBAAG,YAAU,OAC7qC,OACGnC,cAAkB,GAEtB,MAAe,a,kBC6Cf,IACAiG,WAAAA,CAAAkvC,wBAAAA,IACAl1C,MAAAA,CACAa,MAAAA,OACAJ,QAAAA,QACAw0C,iBAAAA,OACAE,eAAAA,CACAz1C,KAAAA,MACAS,QAAAA,IAAAA,CAAAA,WAAAA,WAAAA,gBAAAA,mBAGAK,OACA,OACA40C,SAAAA,CACA,CAAAv0C,MAAAA,QAAAU,KAAAA,4BACA,CAAAV,MAAAA,MAAAU,KAAAA,6BACA,CAAAV,MAAAA,KAAAU,KAAAA,2BACA,CAAAV,MAAAA,KAAAU,KAAAA,sBAGA,GCrEsR,M,uBCA/C,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5BX,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,0BAA0B,CAACxC,MAAM,CAAC,MAAQE,EAAI8oB,MAAM,QAAU9oB,EAAIc,QAAQ,SAAWd,EAAIoP,SAAS,KAAOpP,EAAID,MAAMwI,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,WAAWmG,GAAG,UAAS,KAAE0N,IAAQ,MAAO,CAAC5T,EAAG,cAAc,CAACxC,MAAM,CAAC,GAAM,GAAEE,EAAIi0C,wBAAwB/9B,EAAK8F,cAAc,CAAChc,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAKk1B,aAAa,OAAO,MACvX,EACIhrC,GAAkB,GCUtB,IACAiG,WAAAA,CAAAgvC,sBAAAA,IACAh1C,MAAAA,CACAyoB,MAAAA,MACAhoB,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEA4O,SAAAA,OACA6kC,YAAAA,CACAl0C,KAAAA,OACAS,QAAAA,YAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,aC3BgR,MCQ5Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5BS,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,0BAA0B,CAACxC,MAAM,CAAC,MAAQE,EAAI8oB,MAAM,QAAU9oB,EAAIc,QAAQ,SAAWd,EAAIoP,SAAS,KAAOpP,EAAID,MAAMwI,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,WAAWmG,GAAG,UAAS,KAAE0N,IAAQ,MAAO,CAAC5T,EAAG,cAAc,CAACxC,MAAM,CAAC,GAAM,GAAEE,EAAIi0C,6BAA6B/9B,EAAK0I,mBAAmB,CAAC5e,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAKqhB,kBAAkB,OAAO,MACtY,EACIn3B,GAAkB,GCUtB,IACAiG,WAAAA,CAAAgvC,sBAAAA,IACAh1C,MAAAA,CACAyoB,MAAAA,MACAhoB,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEA4O,SAAAA,OACA6kC,YAAAA,CACAl0C,KAAAA,OACAS,QAAAA,YAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,kBC3BqR,MCQjR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5BS,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,0BAA0B,CAACxC,MAAM,CAAC,MAAQE,EAAI8oB,MAAM,QAAU9oB,EAAIc,QAAQ,SAAWd,EAAIoP,SAAS,KAAOpP,EAAID,MAAMwI,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,WAAWmG,GAAG,UAAS,KAAE0N,IAAQ,MAAO,CAAC5T,EAAG,cAAc,CAACxC,MAAM,CAAC,GAAM,GAAEE,EAAIi0C,6BAA6B/9B,EAAK+F,mBAAmB,CAACjc,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAK8e,kBAAkB,OAAO,MACtY,EACI50B,GAAkB,GCUtB,IACAiG,WAAAA,CAAAgvC,sBAAAA,IACAh1C,MAAAA,CACAyoB,MAAAA,MACAhoB,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEA4O,SAAAA,OACA6kC,YAAAA,CACAl0C,KAAAA,OACAS,QAAAA,YAEAT,KAAAA,CACAA,KAAAA,OACAS,QAAAA,kBC3BqR,MCQjR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB5BS,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,QAC9G,EACIvG,GAAkB,GCkBf,MAAMs1C,GAAiC,CAAwHC,EAAsCC,EAA8BC,KACtO,MAAMva,EAAmB,GACnBwa,EAA2D,CAC7Dj1C,KAAM,GACNynB,MAAO,WACP8W,gBAAiB,UACjB1C,YAAa,EACbH,YAAa,SAEXwZ,EAA2D,CAC7Dl1C,KAAM,GACNynB,MAAO,WACP8W,gBAAiB,UACjB1C,YAAa,EACbH,YAAa,SAEXwC,EAAsD,CAAC+W,EAAiBC,GAW9E,OAVAJ,EAAc9e,SAAS0J,MAAK,CAACjO,EAAGC,IAAMrf,KAAK8iC,IAAIzjB,EAAEmhB,YAAcxgC,KAAK8iC,IAAI1jB,EAAEohB,cAAa1H,MAAM,EAAG,IAAIlwB,SAASkM,IACzG,GAAqB,IAAjBA,EAAE0rB,WAAkB,OACxB,MAAM9hC,EAAagkC,EAAO5tB,GACpBwlB,EAAWqI,EAAK7tB,GAChBiuB,EAAgBjuB,EAAE0rB,WAAa,EAAI1rB,EAAE0rB,WAAa,EAClDwC,EAAgBluB,EAAE0rB,WAAa,EAAI1rB,EAAE0rB,WAAa,EAClDyC,EAAW,CAAEtC,kBAAmB7rB,EAAE6rB,kBAAmBD,iBAAkB5rB,EAAE4rB,iBAAkBpG,YACjGsI,EAAgBj1C,KAAKjB,KAAK,CAAEwpB,EAAG6sB,EAAepW,EAAGjuB,KAAeukC,IAChEJ,EAAgBl1C,KAAKjB,KAAK,CAAEwpB,EAAG8sB,EAAerW,EAAGjuB,KAAeukC,GAAW,IAExE,CACH7a,SACAyD,WACH,EAGQqX,GAAyCT,GAC3CD,GAA+BC,GAAex6B,GAAKA,EAAEiwB,cAAajwB,GAAKA,EAAEa,YAGvEq6B,GAAyCV,GAC3CD,GAA+BC,GAAex6B,GAAKA,EAAEsc,cAAatc,GAAKA,EAAEe,YAGvEo6B,GAA8CX,GAChDD,GAA+BC,GAAex6B,GAAKA,EAAEoc,mBAAkBpc,GAAKA,EAAEyD,iBAG5E23B,GAA8CZ,GAChDD,GAA+BC,GAAex6B,GAAKA,EAAE6Z,mBAAkB7Z,GAAKA,EAAEc,iBAGzF,QAAgBmnB,EAA8B1jC,EAAmB2jC,KAC7D,MAAM,aAAExT,GAAiBnwB,EACnBkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBAAiBC,IACvCC,EAAehhC,EAAM8gC,iBAAiBC,IACtCryB,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAM,MACNc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL82C,UAAW,IACXja,YAAa,kBACbnB,QAAS,CAGLoJ,WAAY,CAEJvJ,YAAaoI,GAErBh7B,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,EACTiB,OAAQ,CACJ56B,MAAOkjC,IAGfwB,QAAS,CACLC,UAAW,CACP/c,MAAMpS,GACF,MAAMipB,EAAUjpB,EAAKipB,QACfoG,EAA6BpG,EAAQt+B,KACrC2kC,EAA+BD,EAAOrvB,EAAKuvB,WACjD,MAAO,CACH,cAAc12B,EAAey2B,EAAWoO,iBAAkB/jB,KAC1D,iBAAiB9gB,EAAey2B,EAAWqO,kBAAmBhkB,KAC9D,eAAe2V,EAAWpc,EAAI,EAAI,IAAM,KAAKra,EAAey2B,EAAWpc,EAAGyG,KAGlF,GAEJ8U,KAAM,UAGd0B,YAAY,EACZC,qBAAqB,EACrBC,OAAQ,CACJ1G,EAAG,CACC9/B,KAAM,WACN0mC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEX8lC,SAAS,GAEbpd,EAAG,CACCqd,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAO6N,EAAe7N,EAAO2uB,EACjC,GAEJ6W,KAAM,CACFhmC,MAAO+iC,GAEXp7B,MAAO,CACHzG,KAAM,SAASiuB,KACfnvB,MAAOkjC,EACPvJ,SAAS,GAEbA,SAAS,EACTmM,SAAS,IAGjBnG,QAAQzT,GAAIyX,GAAY/yB,GACpB,IAAK5R,EAAQ+2C,QAAS,OACtB,MAAMnS,EAAgBhzB,EAAMzQ,KAAKk+B,SAASsF,EAAUrI,cAC9Cva,EAA2B6iB,EAAczjC,KAAKwjC,EAAUhqB,OAC9D3a,EAAQ+2C,QAAQh1B,EAAO+rB,SAC3B,EACAxH,YAAa,CACTC,WAAW,EACXtB,KAAM,SAEVuB,QAAQvgC,GAAQ6Y,IACZ,IAAI2nB,EAAY,UAChB,GAAI3nB,EAAS,CACT,MAAM2gB,EAAU7tB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cACxCmD,IACAgH,EAAY,U,CAGnBxgC,EAAMygC,OAAO3kB,OAAuB7e,MAAM84B,OAASyK,CACxD,GAEJ/K,QAAS,CAACP,MAEd,OAAOvpB,CACV,ECnJD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CACLQ,KAAM2C,OACNJ,OAAQF,QAEVqD,MAAM4U,GAAG,KAAE2rB,IACT,MAAMC,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,MAChC00B,GAAS10B,EAAAA,EAAAA,KAAoB,MAC7BsgC,GAAkBtgC,EAAAA,EAAAA,KAAoB,OAEtC,aAAEkpB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MAC/BkZ,EAAc,KAClB,IAAKhsB,EAAEta,KAAM,OACb,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBL,EAAK7lC,MAAMmmC,UAAUttB,IAAI,mBAEzBktB,EAAgB/lC,MAAQ2L,SAASutB,cAAc,OAC/C6M,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,0BAEpCitB,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC4M,EAAO9lC,MAAMmmC,UAAUttB,IAAI,gBAEV,SAAboB,EAAE/X,QACF4jC,EAAO9lC,MAAMmmC,UAAUttB,IAAI,qBAC3BgtB,EAAK7lC,MAAMmmC,UAAUttB,IAAI,eACzBktB,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,sBAEpCitB,EAAO9lC,MAAM0B,MAAMQ,OAAS+X,EAAE/X,QAAU,QAG5Ci4B,EAAOn6B,MAAQ2L,SAASutB,cAAc,OACtCiB,EAAOn6B,MAAM+H,GAAMiK,KAAK4xB,MAAsB,IAAhB5xB,KAAKC,UAAoBC,WACvDioB,EAAOn6B,MAAMkmC,UAAW,GACxB/L,EAAOn6B,MAAMmmC,UAAUttB,IAAI,gBAC3BshB,EAAOn6B,MAAM0B,MAAM0kC,UAAYnsB,EAAE/X,QAAU,QAE3C6jC,EAAgB/lC,MAAM05B,YAAYoM,EAAO9lC,OACzC6lC,EAAK7lC,MAAM05B,YAAYqM,EAAgB/lC,OACvC6lC,EAAK7lC,MAAM05B,YAAYS,EAAOn6B,OAE9B,MAAMoQ,EAAQolC,GAAqB1P,EAAO9lC,MAAO,CAC7C2uB,aAAcA,EAAa3uB,MAC3Bu1C,QAAQjJ,GACN,MAAMmJ,EAA0B,CAAEnJ,YAClC1G,EAAK,QAAS6P,EACd,GAEJtb,EAAOn6B,MAAM+H,IACfqI,EAAMzQ,KAAOsa,EAAEta,KACfyQ,EAAM6qB,QAAQ,EAUhB,OARAqL,EAAAA,EAAAA,YAAU,KACRL,GAAa,KAEfvjC,EAAAA,EAAAA,QACE,IAAMuX,EAAEta,OACR,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,IAEpB,CAAEkjC,OAAMC,SAAQG,cACzB,EACAvjC,MAAO,CACL,sBAAuB,CACrBE,UACEhC,KAAKqlC,aACP,MC5FyS,MCO3S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCGhC,IAAe/gC,EAAAA,EAAAA,iBAAgB,CAC3BiC,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,wBAClB,EACA1L,WAAY,CACRuwC,wBAAuB,GACvBC,8BAA6B,GAC7BC,wBAAuB,GACvBC,6BAA4B,GAC5BC,6BAA4B,GAC5BC,cAAaA,IAEjBzyC,SAAU,CACN0yC,YACI,OAAOp1C,KAAKyrB,YAAY2C,uBAClBlX,GAAON,IAAI5W,KAAKyrB,YAAY2C,wBAAwB7f,OAAO,gBAC3D2I,GAAON,MAAMrI,OAAO,eAC9B,MACGi6B,EAAAA,GAAAA,IAAUrc,KAEjBpsB,UAEIC,KAAKwzC,iBAAmBt8B,GAAON,IAAI5W,KAAKyrB,YAAY2C,wBAAwB7f,OAAO,cACnFvO,KAAKkyC,qBAAqBr6B,OAAS7X,KAAKopB,OAAOisB,MAAMx9B,OAC/CX,GAAON,IAAI5W,KAAKopB,OAAOisB,MAAMx9B,QAC7B7X,KAAKyrB,YAAY2C,uBACjBlX,GAAON,IAAI5W,KAAKyrB,YAAY2C,wBAAwBvW,SACpDX,GAAON,MAAMiB,SACnB7X,KAAKs1C,yBACLt1C,KAAKu1C,kBACT,EACAx2C,OACI,MAAO,CACHy2C,kBAAmB,EACnB3D,cAAe,CACXE,kBAAmB,EACnBD,iBAAkB,EAClBF,WAAY,EACZ6D,gBAAiB,GAErBzD,eAAgB,CACZD,kBAAmB,EACnBD,iBAAkB,EAClBF,WAAY,EACZ6D,gBAAiB,GAErBxD,cAAe,CACXF,kBAAmB,EACnBD,iBAAkB,EAClBF,WAAY,EACZ6D,gBAAiB,GAErBhF,cAAev5B,GAAON,MAAMrI,OAAO,QACnCglB,cAAerc,GAAON,MAAMqB,KAAK,EAAG,UAAU1J,OAAO,QACrDilC,iBAAkB,KAClBkC,uBAAwB,EACxBC,uBAAwB,EACxBC,YAAa,GACbC,eAAgB,GAChBhY,aAAc,GACdiY,YAAa,GACbl+B,SAAU,KACVm+B,aAAc,CAAEC,YAAa,IAC7BC,cAAe,CAAEzc,OAAQ,GAAIyD,SAAU,IACvCiV,qBAAsB,CAClBx3B,YAAa1a,KAAKopB,OAAOisB,MAAM36B,aAAe,WAC9Cw7B,OAAQl2C,KAAKopB,OAAOisB,MAAMa,QAAU,MACpCr+B,OAAQX,GAAON,MAAMiB,UAGjC,EACA/V,MAAO,CACHsnB,OAAQ,CACJpnB,QAAQgG,GACCA,IACDA,EAAIqtC,MAAM36B,cAAa1a,KAAKkyC,qBAAqBx3B,YAAc1S,EAAIqtC,MAAM36B,aACzE1S,EAAIqtC,MAAMa,SAAQl2C,KAAKkyC,qBAAqBgE,OAASluC,EAAIqtC,MAAMa,QAC/DluC,EAAIqtC,MAAMx9B,SAAQ7X,KAAKkyC,qBAAqBr6B,OAAS,IAAIsB,KAAKnR,EAAIqtC,MAAMx9B,SAChF,EACA5P,WAAW,EACXlG,MAAM,IAGd9C,QAAS,CACLq2C,wBAAwB9sB,EAAAA,GAAAA,IAAQ,0BAA0BrjB,iBACtD,MAAM+a,EAAS,CACXg2B,OAAQl2C,KAAKkyC,qBAAqBgE,OAClCr+B,OAAQ7X,KAAKkyC,qBAAqBr6B,OAAO+C,eAE7C,GAAI5a,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBiB,SAAU,CACrE,MAAMoK,QAAesC,GAAU3N,GAAiBiB,SAAU0K,GAC1DlgB,KAAKi2C,cAAgB3B,GAAsC10B,GAC3D5f,KAAK81C,YAAcl2B,EAAOmV,UAAY,E,MACnC,GAAI/0B,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBO,SAAU,CAC5E,MAAM8K,QAAesC,GAAU3N,GAAiBO,SAAUoL,GAC1DlgB,KAAKi2C,cAAgB1B,GAAsC30B,GAC3D5f,KAAK81C,YAAcl2B,EAAOmV,UAAY,E,MACnC,GAAI/0B,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBS,cAAe,CACjF,MAAM4K,QAAesC,GAAU3N,GAAiBS,cAAekL,GAC/DlgB,KAAKi2C,cAAgBzB,GAA2C50B,GAChE5f,KAAK81C,YAAcl2B,EAAOmV,UAAY,E,KACnC,IAAI/0B,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBG,cAAcyhC,oBAMhF,MAAM,IAAIpa,MAAM,+CANqF,CACvG7a,QAAQk1B,IAAI,OACV,MAAMx2B,QAAesC,GAAU3N,GAAiBG,cAAewL,GAC/DlgB,KAAKi2C,cAAgBxB,GAA2C70B,GAChE5f,KAAK81C,YAAcl2B,EAAOmV,UAAY,E,EAI9C,IACAwgB,kBAAkB/sB,EAAAA,GAAAA,IAAQ,oBAAoBrjB,iBAC1CnF,KAAK6xC,oBAAsB7xC,KAAKq2C,iBAAiB,GACjDr2C,KAAKgyC,qBAAuBhyC,KAAKq2C,iBAAiB,IAClDr2C,KAAKiyC,oBAAsBjyC,KAAKq2C,iBAAiB,GACrD,IACAA,kBAAkB7tB,EAAAA,GAAAA,IAAQ,oBAAoBrjB,eAAgCmxC,GAC1E,MAAMC,EAAgBv2C,KAAKyrB,YAAY2C,uBACjClX,GAAON,IAAI5W,KAAKyrB,YAAY2C,wBAAwB7f,OAAO,cAC3D2I,GAAON,MAAMrI,OAAO,cAC1B,aAAa4T,GAAiB5N,GAAiBS,cAAe,CAC1DshC,OACAC,iBAER,IACAC,iBAAiB3yC,GACT7D,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBO,SAC3D9U,KAAKiS,QAAQnU,KAAK,oBAAoB+F,EAAM6nC,YACrC1rC,KAAKkyC,qBAAqBx3B,cAAgBnG,GAAiBiB,UAClExV,KAAKiS,QAAQnU,KAAK,oBAAoB+F,EAAM6nC,WAEpD,EACAiG,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,WAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,yBAC1B,KC5J6R,M,uBCAlF,GAAe,KCO9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB4J,W,IAAQ,O,EAAc,WAAqB,oBAAC,OAAM,aAAc,CAAE/R,EAAG,cAAa8tB,CAA2DhuB,MAAM,CAAC,MAAQE,EAAI8yC,GAAAA,+BAAW,YAAuB,SAAU9yC,GAAmC,yBAAoBF,EAAK,KAAC,wE,MAAC,CAAU,MAAQ,aAAa,uBAAIwC,QAAG,oC,CAAuC,OAAUtC,C,MAAoC,CAAqD,QAAsB,sBAAkBqB,CAAAA,EAAK,+BAAC,C,MAAM,CAAoBe,QAAS,QAAUsoB,GAAG,uB,sBAAoBA,CAAG,8CAAC,GAACnpB,cAAW,IAAiB,MAAKe,CAAyBxC,MAAM,eAAC,SAAU,SAAKqiC,GAAQ,EAAM,aAAK1M,CAAa,EAA2C,8BAAK,KAAO,qBAAKE,CAAoB,OAAI,WAAU,EAAGrzB,QAAmBC,KAAAA,EAAY,aAAOzC,YAAM,4B,GAAkD,CAAoB,MAAS,EAACE,yBAA2CsC,GAAG,wBAAoB,CAACC,YAAY,OAAOzC,MAAM,CAAC,MAAQ,EAAI,GAACid,kCAA6B,oBAAkB,gDAAuBxa,CAAAA,EAAAA,GAAAA,EAAY,CAAO,YAAK,OAAY4O,MAAK,CAAkB7O,OAAU,EAAC,6BAACxC,cAAM,MAAqB,iBAAO,CAAE,YAAC,QAAC0C,CAAE,EAAC,Y,KAAC,iB,GAAyB,IAAOxC,C,MAAe,CAAC,kBAAIsC,KAAG,I,GAAiB,CAAS,kBAAItC,OAAO,aAAqHF,I,CAAiC,MAAS,CAAY,MAAC,CAACyI,KAAAA,K,CAAmCC,EAAG,uBAAU,gF,MAAC,C,MAAwD,EAAC,c,QAAC,EAAO,S,YAAUrI,EAAG,K,IAA0EL,U,oBAAyB,GAAO,aAAiI,EAAE,MAAI,QAAC,OAAM,MAAC,UAAM,UAA4B,mBAAS,UAAEoW,YAAAA,iBAAO,mEAAnM,gBAAE,OAAIlW,KAAO,KAAqD,CAACA,EAAIG,GAAG,iD,SAAiKL,G,4BAA0C,eAAC,IAAgD,qCAAI,MAAE,CAAsB,MAAS,eAAEoW,KAAAA,MAAQ,EAAQ5T,GAAG,SAAa,EAAC,mB,QAAkD,oB,GAAE,UAAStC,KAA6B,IAAIqC,MAAK,iBAAc,CAAI,OAAW6T,GAAAA,iBAAAA,EAAAA,kBAAQ,GAAQ5T,GAAG,KAAM,mB,IAAqE,oBAAE,GAAC,eAACD,IAAmC6T,MAAAA,CAAAA,EAAAA,MAAAA,CAAO,2BAAC,GAAQlW,GAAG,IAAI,EAAIA,GAAG,EAAIkW,UAAKuiC,OAAgB,GAAG,CAAc,IAAI,iBAAwB,GAAC,eAAC,IAAoC,MAAK,iCAC9mF,IACGr4C,MAAAA,MAEJ,IAASa,GAAM,EAAEb,cAAe,C,iDCchC,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3BiC,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,8BAClB,EACA1L,WAAY,CAAEqrC,mBAAkB,GAAEgH,6BAA4BA,IAC9Dl0C,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACb6kB,aACI,MAAO,mBACX,EACAnhB,gBACI,OAAK7vB,KAAK62C,aACH72C,KAAK62C,aAAa/oC,KAAKmM,IAC1B,MAAM7B,EAAYlB,GAAON,IAAIqD,EAAE7B,WACzBtS,EAAS,CACXgxC,cAAe78B,EAAEc,cACjBg8B,aAAc98B,EAAEiZ,iBAChB8jB,eAAgB/8B,EAAEg9B,eAClBC,aAAcj9B,EAAEk9B,aAChBC,YAAan9B,EAAEqvB,YACf+N,aAAcp9B,EAAEO,aAChB88B,SAAUr9B,EAAEs9B,SACZC,OAAQv9B,EAAE5E,OACVoiC,cAAex9B,EAAEy9B,cACjBC,cAAe19B,EAAE29B,qBACjBjB,UAAWv+B,EAAU7J,OAAO,gBAEhC,OAAOzI,CAAM,IAhBc,EAkBnC,EACAzG,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,kDACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,gDACd7Q,MAAO,iBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,8CACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,6CACd7Q,MAAO,cACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0CACd7Q,MAAO,WACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACd7Q,MAAO,SACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,+CACd7Q,MAAO,gBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,2CACd7Q,MAAO,YACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,+CACd7Q,MAAO,gBACP+wB,UAAU,GAGtB,GAEJpwB,UACIC,KAAK63C,kBACT,EACA94C,OACI,MAAO,CACH83C,aAAc,GACdjjB,aAAc,CACV1a,aAAc,MACd5B,YAAa,QACbgC,YAAa,IACboB,YAAanG,GAAiBsiC,aAC9B/O,SAAUnxB,GAAAA,UAEdgd,aAAc,CAAE6F,OAAQ,GAAIyD,SAAU,IACtCoD,aAAShzB,EAEjB,EACApO,QAAS,CACL44C,kBAAkBrvB,EAAAA,GAAAA,IAAQ,oBAAoBrjB,iBAC1C,MAAM+a,EAAS,CAAC,EACV3W,QAAiB4W,EAAAA,EAAAA,KAAAA,IAAe,oBAAqB,CAAED,WAAUxS,MAAMG,GAAMA,EAAE9O,OACrFiB,KAAK62C,aAAettC,CACxB,IACAuiC,YACI,MAAMzsC,EAAU,CACZ,CAAES,KAAME,KAAKiQ,GAAG,gDAAiD7Q,MAAO,kBACxE,CAAEU,KAAME,KAAKiQ,GAAG,8CAA+C7Q,MAAO,gBACtE,CAAEU,KAAME,KAAKiQ,GAAG,6CAA8C7Q,MAAO,eACrE,CAAEU,KAAME,KAAKiQ,GAAG,0CAA2C7Q,MAAO,YAClE,CAAEU,KAAME,KAAKiQ,GAAG,wCAAyC7Q,MAAO,UAChE,CAAEU,KAAME,KAAKiQ,GAAG,+CAAgD7Q,MAAO,iBACvE,CAAEU,KAAME,KAAKiQ,GAAG,2CAA4C7Q,MAAO,aACnE,CAAEU,KAAME,KAAKiQ,GAAG,+CAAgD7Q,MAAO,yBAGrE04C,EAAez4C,EAAQyO,KAAKmM,GAAMA,EAAE7a,QACpCk0C,EAAYtzC,KAAK62C,aAAa/oC,KAAKmM,GACrC69B,EAAahqC,KAAK6iB,GAAY,eAALA,EAAqB1W,EAAE0W,GAAGxf,QAAQ,KAAM,IAAM8I,EAAE0W,OAE7E2iB,EAAUyE,QAAQ14C,EAAQyO,KAAKmM,GAAMA,EAAEna,QACvCuyC,GAAAA,UAAqBiB,EAAW,mBACpC,EACAzf,qBAAqB90B,GACjB,MAAMi5C,EAAch4C,KAAK62C,aAAap6B,MAAK5O,GAAKA,EAAEoqC,WAAal5C,EAAK0jC,iBAC/DuV,GACLh4C,KAAKiS,QAAQnU,KAAK,iBAAiBk6C,EAAYj9B,gBACnD,EACAm9B,iBAAiB1vB,EAAAA,GAAAA,IAAQ,uBAAuBrjB,eAA+BvH,GAC3E,MAAMsiB,EAAS2nB,GAA2BjqC,GAC1C,IAAKsiB,EAAQ,OACTlgB,KAAK4zB,aAAalZ,aAAautB,WAAW,UAC1C/nB,EAAO3F,YAAcva,KAAKmV,OAAS,GAAGnV,KAAKmV,UAAY,MAE3D,MAAMi8B,QAAsBjxB,EAAAA,EAAAA,KAAAA,IAEpB,cAAcviB,EAAQ8c,eACM,QAAvB9c,EAAQ8c,YAAwB,IAAIyyB,mBAAmBntC,KAAKmV,UAAY,IAC7E,CAAE+K,WAELxS,MAAMG,GAAMA,EAAE9O,OACnBiB,KAAK4X,SAAW,IAAIuB,KAAK+G,EAAOtI,UAChC5X,KAAKqgC,QAAUngB,EAAOrI,OACtB,MAAMsgC,EAAezb,GAA+B0U,EAAe,CAC/DpU,WAAYvB,GAAiBI,UAEjC77B,KAAK2zB,aAAewkB,CACxB,IACAxG,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,iBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,+BAC1B,GAEJnO,MAAO,CACH8xB,aAAc,CACV5xB,QAAQpE,GACCA,IACDoC,KAAKib,MAAMC,GAAG,wBAClBlb,KAAKk4C,gBAAgBt6C,GACzB,EACAqK,WAAW,EACXlG,MAAM,MCnLyR,M,uBCAlF,GAAe,KCOpO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,+DCtB+dvB,W,MAA0BxC,K,IAAO,MAAO,G,SAAW,uBAAkB,C,aAAY,wB,KAAM,a,YAAwE,EAAQ,GAAC,uE,IAAG,kB,GAACyI,W,MAAwB,GAAC,Q,YAAe,a,GAAW/F,GAAAA,iCAAAA,EAAAA,SAAAA,EAAAA,MAAAA,GAAAA,uBAAAA,EAAAA,GAAAA,EAAAA,C,MAAK,C,MAAQ,G,MAA0B,yB,SAAE,K,QAAuD,C,MAAE,C,MAAM,UAA+L,iBAAG,KAAM,SAA8G1C,IAAM,8C,MAAC,CAAW,OAAQ,IAAsC,mBAAIE,IAAIG,YAA0G,gBAAO,IAA4B,OAAa,EAAC,WAAY,MAAC,CAAc+5C,MAAAA,GAAqF,MAAM,yBAAO,cAAsC,0KAAQtpC,IAAoIrO,MAAY,eAAaqO,CAAAA,EAAI,OAAM5Q,CAAAA,EAAIm6C,GAAAA,EAAAA,GAAAA,EAAAA,GAAkB,oCAAmC,SAAQ,QAAM,MAAC,CAAO,MAAC,GAAG,+BAAO,SAAW,KAAQ,GAAQ,6BAA2B,oEAAC,EAA0B,UAAqB,iBAAG,EAAC,M,YAAU,Q,GAAiB,gCAAsB,uC,YAAA,OAAC,MAAC,CAAC94C,gBAAM,qBAAqCe,EAAAA,KAAS,6CAAe,4E,YAAKg4C,SAA4B,wD,MAAC74C,CAAoC,WAAsIgB,CAAAA,EAAAA,GAAAA,EAAY,CAAUzC,MAAM,CAAC,MAAO,4BAA+B,sBAAG,QAAI,Y,GAA6B,CAAc,mBAACuB,OAAM,aAACH,G,MAAoD,CAAgB,MAAC,0BAACK,SAAU,SAAC,GAAa,2BAAK,EAAuFzB,WAAM,8BAAkB,OAAS,EAAI,qBAACu6C,EAAAA,yBAAAA,EAAAA,MAAAA,GAAAA,uBAAAA,EAAAA,GAAAA,EAAAA,CAAa,sBAAG,MAAKzpC,CAAmE,KAAU,mCAA4C,EAAG,KAAC,C,MAAiC,C,SAAE,IAAkB,MAAM,CAA2C9Q,MAAM,c,SAAQ,SAACw6C,GAAe,cAAet6C,CAA4B,EAAG,WAASsC,gB,GAA6C,yBAAW,iCAA2C,OAA3C,iB,MAAU,CAAE,KAAK,UAAUxC,QAAM,mBAAU,4CAAC,OAAM,QAA+BA,IAAK,EAAC,I,CAAC,OAAuBy6C,C,MAAoC,CAAgC,eAAev6C,KAA+B,CAACsC,EAAG,qCAAoC,CAAsCxC,MAAM,CAAC,MAAQE,EAA2B,aAAc+c,EAAK,YAAK,iBAAkExU,IAAAA,GAAW,EAACvI,GAAAA,EAAQ,C,YAAK,CAAYwI,SAAG,a,CAAc,EAAE,M,MAAC,C,KAA2B1I,K,iCAAkC,C,MAAG,C,MAAI,oC,eAAS,E,aAAwBE,EAAIw6C,YAAAA,gB,OAA8C,iD,MAAGh4C,C,MAAuB,EAAC,uB,QAAC,EAAO,2E,YAAUrC,EAAG,IAAM,CAA8B,gBAAE,GAAC,aAACkC,IAA4BpC,MAAI,aAAEyR,MAAM,CAAEhJ,MAAO,YAAE5H,KAAO,IAAS0Q,GAAAA,CAAQ,kBAAC,OAAW,+BAAqC,GAAC0L,I,GAA+BC,CAAAA,EAAO,IAAC,C,MAAoB,CAAoC5b,KAAAA,KAAgDzB,CAAAA,EAAK,GAAC,kC,+BAAyD,K,EAAC,O,EAAc,Q,EAAgB,Q,EAAc,M,EAAkB,M,UAAgC,wCAAc,C,WAAA,EAAC,kBAAI,8DAAQ,WAAK,qCAA2B,MAAGE,CAC5lI,sBACGI,MAAkB,IAELA,G,qICFX,MAAOq6C,GAiBXthC,YAAYuhC,IAAG,glBACb54C,KAAKmH,GAAKyxC,EAAIzxC,GACdnH,KAAKgB,KAAO43C,EAAI53C,KAChBhB,KAAK+S,YAAc6lC,EAAI7lC,YACvB/S,KAAK64C,WAAaD,EAAIC,WACtB74C,KAAKy4C,QAAUG,EAAIH,QAAQ3qC,KAAIgrC,GAAO,IAAIC,GAAqBD,KAC/D94C,KAAKg5C,aAAc,EACnBh5C,KAAKi5C,sBAAwBL,EAAIK,sBACjCj5C,KAAKk5C,sBAAwBN,EAAIM,sBACjCl5C,KAAKm5C,+BAAiCP,EAAIO,+BAC1Cn5C,KAAKo5C,+BAAiCR,EAAIQ,+BAC1Cp5C,KAAKmwC,oBAAsByI,EAAIzI,oBAC/BnwC,KAAKq5C,wBAA0BT,EAAIS,wBACnCr5C,KAAKs5C,SAAWV,EAAIU,SACpBt5C,KAAKu5C,oBAAsBX,EAAIW,oBAC/Bv5C,KAAKqd,kBAAoBu7B,EAAIv7B,iBAC/B,CAEIm8B,sBACF,OAAKx5C,KAAKy4C,QACEz4C,KAAKy4C,QAAQp3B,QAAO,CAACo4B,EAAOb,IAAQa,GAASb,EAAIc,WAAa,EAAI,IAAI,GADxD,CAE5B,CAEIC,WACF,OAAK35C,KAAKy4C,QACEz4C,KAAKy4C,QAAQp3B,QAAO,CAACo4B,EAAOb,IAAQa,GAASb,EAAIc,WAAad,EAAIe,KAAO,IAAI,GAD/D,CAE5B,CAEIC,uBACF,OAAO55C,KAAKy4C,WAAaz4C,KAAKy4C,QAAQh8B,MAAMq8B,GAAQA,EAAIY,YAC1D,CAEIG,kBACF,OAAO75C,KAAK25C,KAAK5V,QAAQ,EAC3B,EAGI,MAAOgV,GAqBX1hC,YAAYyhC,IAAG,iuBACb94C,KAAKmH,GAAK2xC,EAAI3xC,GACdnH,KAAKspC,YAAcwP,EAAIxP,YACvBtpC,KAAK85C,iBAAmBhB,EAAIgB,iBAC5B95C,KAAK+U,aAAe+jC,EAAIh8B,eACxB9c,KAAKy1B,iBAAmBqjB,EAAIrjB,iBAC5Bz1B,KAAK21B,YAAcmjB,EAAInjB,YACvB31B,KAAKoa,UAAY0+B,EAAI1+B,UACrBpa,KAAK25C,KAAOb,EAAIa,KAChB35C,KAAKkV,KAAO4jC,EAAI5jC,KAChBlV,KAAK+5C,iBAAmBjB,EAAIiB,iBAC5B/5C,KAAKg6C,UAAYlB,EAAIkB,UACrBh6C,KAAK05C,YAAa,EAClB15C,KAAKi5C,sBAAwBH,EAAIG,sBACjCj5C,KAAKk5C,sBAAwBJ,EAAII,sBACjCl5C,KAAKm5C,+BAAiCL,EAAIK,+BAC1Cn5C,KAAKo5C,+BAAiCN,EAAIM,+BAC1Cp5C,KAAKmwC,oBAAsB2I,EAAI3I,oBAC/BnwC,KAAKq5C,wBAA0BP,EAAIO,wBACnCr5C,KAAKi6C,mBAAqBnB,EAAImB,kBAChC,CAEIJ,kBACF,OAAO75C,KAAK25C,KAAK5V,QAAQ,EAC3B,E,ICrGoF/lC,GAAM,W,IAAC,O,EAAsB,EAAO,MAAKgpB,G,OAAM,OAAiB,C,MAAG,CAAqB,QAAW,EAAC9oB,QAAa,cAAG,iBAAC,GAAC,YAAe,O,YAA4B,EAAC2R,U,GAAQ,C,gBAA6CA,SAAM,GAAC,UAAC,E,iBAAgDA,SAAM,GAAC,UAAC,E,kBAAiDA,SAAM,eAAE,EAACpJ,mBAAoB,YAAClG,EAAK,SAAU,CAACmG,G,YAAqB,O,IAAC,Y,GAA0B1I,UAAM,K,IAA4C,MAAM,CAACK,EAAG,cAAW+V,CAAyB,OAAG,wCAAgC,UAAS,2B,GAAQ,C,IAAE,wBAAsD,kBAAG,IAAiC,MAAC,GAAS,qC,GAAQ,C,IAAE,0B,GAAmB3T,UAAAA,KAA2B,IAAgD,iBAAI,YAAE,iBAA6B,QAAS,4B,GAAQ,C,IAAE,2BAA8F,kBAAG,IAAoC,MAAC,GAAS,yE,GAAQ,C,IAAE,6B,GAAoFzC,UAAM,K,UAAcyI,CAAAA,EAAW,sBAAS,Q,MAAK,CAAYC,OAAG,I,YAAgB,O,IAAC,Y,GAAwF1I,UAAM,G,UAA8B,2BAAW,qCAAE,OAAG0C,MAASrC,GAA0GL,MAAM,UAAC,SAAU,K,GAAmB,MAAW,uFAAE,OAAG0C,MAASrC,GAAoK,gBAAQ,SAAK,KAA0F,wJAAG,IAAM,UAAiC,UAAS,0EAA/pB,2B,GAAuqB,C,IAAE,+BAAoH,kBAAG,IAA6C,MAAC,GAAS,0F,GAAQ,C,IAAE,sC,GAA6FL,UAAM,K,UAAcyI,CAAAA,EAAW,+BAAS,Q,MAAK,CAAYC,OAAG,I,YAAgB,O,IAAC,Y,GAA0G1I,UAAM,G,UAA8B,oCAAW,8CAAE,OAAG0C,MAASrC,GAAoFL,MAAM,UAAC,SAAU,K,GAAmB,MAAW,qEAAE,OAAG0C,MAASrC,GAAkH,gBAAQ,SAAK,KAA6G,8GAAG,IAAK,MAAS,IAAI,UAAU,6FAAxmB,2B,GAAysB,CAACyS,IAAK,UAAO,GAAC,WAAY,4FACj3F,EACGxS,OAAAA,IAEJ,MAASa,I,QCmET,IACAZ,MAAAA,CAAAA,QAAAA,iBAAAA,gBACAQ,OACA,OACAusC,OAAAA,wBACAC,UAAAA,EAEA,EACA7oC,SAAAA,CACArD,UACA,WAwBA,OAvBA,6DACAA,EAAAA,KAAAA,CAAAS,KAAAA,eAAAV,MAAAA,qBACAC,EAAAA,KAAAA,CAAAS,KAAAA,UAAAo6C,MAAAA,QAAA/pB,UAAAA,EAAA/wB,MAAAA,iBAEAC,EAAAA,KAAAA,CAAAS,KAAAA,eAAAo6C,MAAAA,QAAA/pB,UAAAA,EAAA/wB,MAAAA,qBAGA,2EACAC,EAAAA,KAAAA,CAAAS,KAAAA,cAAAV,MAAAA,uBAEA,kDACA,+CACAC,EAAAA,KAAAA,CAAAS,KAAAA,wBAAAV,MAAAA,wBAEAC,EAAAA,KAAAA,CAAAS,KAAAA,eAAAV,MAAAA,2BAEA,2DACA,mDACAC,EAAAA,KAAAA,CAAAS,KAAAA,4BAAAV,MAAAA,4BAEAC,EAAAA,KAAAA,CAAAS,KAAAA,mBAAAV,MAAAA,oCAGA,CACA,IC1GoQ,MCOhQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClB6D,W,IAAG,OAAE,EAAK,W,OAAqB,EAAC,M,MAAC,CAAkB,UAAmCpB,CAAAA,EAAK,KAAC,C,MAAC,CAAY,gBAAS,KAAoC,+BAAG,MAAI,CAAMyC,KAAAA,KAAkCvC,KAAO,GAA8F,MAAU,QAAS,qBAAOF,EAAAA,KAAM,C,YAAS,qB,GAAQ,OAAS,EAAK,GAACm8C,EAAAA,MAAYj8C,MAAIkB,KAAMm6C,EAAAA,IAAAA,EAAAA,MAAqB,uC,OAAsB,OAAE,IAAK,EAAiB,MAAM,CAAS94C,MAAY,QACviBvC,MAAU07C,GAAAA,EAAAA,YAAgB,EACtB,MAAM,8CACsdp5C,CAAE,EAAC,GAAM,U,KAAEC,GAAAA,EAAAA,OAAY,CAA6B,YAAamQ,cAAiEnQ,CAAAA,EAAAA,MAAW,mBAAC,ubAAkC,YAAS,sDAAsCA,CAAAA,EAAAA,OAAY,CAAOzC,YAAM,8B,CAAC,KAAO,EAACE,GAAI8U,EAAAA,MAAAA,iBAAAA,sBAAAA,EAAAA,EAAAA,EAAAA,CAAS,+CAAG,CAAC9U,EAAIG,GAAG,wBAA2B,GAAG,IAAI,CAAOoC,YAAY,OAAiC,MAAK,CAAUoL,MAAW,EAAC,Y,CAAuB,KAAM,4BAAO,Y,YAAC,kCAAqB,QAAE,YAAS,CAAmDpL,SAAY,WAASvC,KAAO,OAAsEF,cAAM,U,CAA6B,+BAAS,eAAQ,oBAAG,CAACE,EAAIG,GAAG,SAAa,EAAE,MAAKyQ,aAAU,+BACprC,OACGxQ,KAAAA,EAAAA,MAAoB,WAExB,OAAe,W,0CC8Cf,IACAC,MAAAA,CACAa,MAAAA,OACA2uB,aAAAA,QAEAhvB,OACA,OAAAo7C,YAAAA,CAAA,6BACA,EACAz3C,SAAAA,CACAsQ,YACA,kDACA,IChEiR,MCO7Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB4B,GAAU,W,IAAUvS,EAAAA,KAAyBzC,EAAK,EAAC,S,OAAC,EAAM,KAAC,CAAE,yBAAE,MAAK,CAA4ByC,KAAAA,KAAmIzC,CAAAA,EAAK,KAAC,S,YAAU,0B,CAAS,KAAM,6EAAgB,OAAiC,OAAIE,OAAO,SACzX,sDAGD,GAASiB,GAAAA,qBAAuB,E,QCUhC,IACAJ,OACA,OAAA2F,QAAAA,EAAAA,EAAAA,MAAAA,SACA,GCjB6R,MCOzR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBgDjE,GAAAA,W,IAAyBzC,EAAM,K,EAAC,EAAM,MAAC,G,OAAE,QAAE,YAAK,aAA4ByC,MAAAA,CAAuCD,KAAG,KAAsD,CAACtC,EAAG,KAAI,QAAoBA,CAAiHF,YAAM,0B,CAAC,MAAK,CAAmB,4CAAG,CAACE,EAAIG,GAAG,yBAA4B,wFAAY,iBAC1d,OACGC,GAAAA,sB,sDCDA,GAAS,CAAC,EAKV,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCjBYkC,GAAOK,WAAS,MAAU,KAAe4F,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,cAAW,C,YAAI,EAASid,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAsD,GAAO,mCAAU,C,MAAC,CAAsB,cAACjJ,QAAYvI,EAAI+Q,S,YAAsB,EAAStI,GAAAA,CAAAA,C,IAAgB,U,GAA0BjG,SAAG,G,MAAC,GAAO,cAAUmP,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAqDmG,EAAAA,GAAAA,GAAc,EAAE,4BAAI,GAAa,eAAepH,IAAOH,MAAOlB,G,MAAYoC,C,MAA6Bm2C,EAAAA,OAAU,SAAC,YAACh3C,EAAAA,OAAW,CAAQ,EAAG,sBAI9oB,E,MCJ4D,GAAU,W,IAAazB,EAAM,K,EAAC,EAAO,MAAKuI,G,OAAuD,cAAcvH,CAAO,MAAC,CAACyH,MAAW,EAACvI,OAAQ,4CAACqC,QAAI,EAAS,S,YAAqB,O,IAAEqR,UAAM,GAAE,iBAAC,Q,UAA8EwoC,CAAAA,EAAQ,GAAG,UAAOC,KAAAA,CAAa,KAAC,CAAC,sBAAe,YAAC,SAAUn8C,IAAIS,EAAK,cAAuB,OAAQiT,EAAO,QAAC,0BAAI,MAAU,IAAQxS,IAAkBkB,MAAQ,G,MAAoB,CAAU,MAAC,QAACb,SAAU,SAAC,GAAO,SAAIe,EAAiBxC,WAAM,UAAyD,SAACuB,MAAM,CAACH,MAAOlB,EAAIo8C,GAAAA,0C,MAAuC,CAAc,MAAC,YAAC76C,SAAU,SAAC,GAAW,aAAIvB,EAAgD,WAAU,eAAsBF,EAAAA,GAAM,6B,OAAC,OAAQu8C,C,IAAiB,E,MAAyD,CAAc,cAACh7C,KAAM,mCAACH,SAAOm7C,I,MAA8C,CAA+B,MAAC,QAAC96C,SAAU,SAAC,GAAkB,mBAAG,EAAK,WAAC,qBAIpgC,O,QC8BA,IACAlB,MAAAA,CACAa,MAAAA,OACAmH,MAAAA,CACAtI,KAAAA,OACAS,QAAAA,MAEAM,QAAAA,CACAf,KAAAA,QACAS,SAAAA,IAGAK,OACA,OACAJ,OAAAA,EACA27C,WAAAA,EACAD,YAAAA,GAEA,EACAv4C,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,cACA,uCACA,+CACA,EACAiG,WAAAA,EACAlG,MAAAA,KC9DsR,M,uBCA/C,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCHhC,IACAwC,WAAAA,CAAAi2C,8BAAAA,IACAz7C,OACA,OAAA03C,QAAAA,EACA,EACAl4C,MAAAA,CACAa,MAAAA,OACAJ,QAAAA,CACAf,KAAAA,QACAS,SAAAA,KC5BwR,MCOpR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BS,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kBAAkBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAQ,wBAAuBE,EAAI47C,4BAA4B,MAAS57C,EAAIkB,OAAS,CAAC,EAAG,QAAU,MAAMsB,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,kBAAkB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAC3R,EACIvgB,GAAkB,GCuBtB,IACAC,MAAAA,IACA,SACAu7C,iBAAAA,QAEA76C,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,gDACA,ICjCwR,M,uBCA/C,GAAe,KCOpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYc,GAAOK,WAAS,MAAU,KAAW7C,EAAK,EAAC,S,OAAC,OAAS,C,MAAM,CAAkB,aAAmB,gBAAIwC,iBAAS,KAAwB,CAACtC,EAAG,MAAI,CAA2CuC,YAAY,WAA0B,CAACvC,EAAIG,GAAG,kCAAkB,QAAsIL,YAAM,0B,CAAC,SAAS,KAAQ,2H,MAAC,CAAsC,gBAAIE,KAAOA,kCAEhfI,CAAAA,EAAAA,GAAAA,EAAAA,GAAe,EAAK,oFAExB,E,MCkBA,IACAC,MAAAA,CACAk8C,gBAAAA,UCxBuR,M,uBCA/C,GAAe,KCOnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCiIhC,MAAMC,GAAqB,cACrBC,GAAsB,yBAE5B,QACAp0C,MAAAA,GACA,8BACA,EACAhC,WAAAA,CACAq2C,0BAAAA,GACAC,yBAAAA,GACAC,qCAAAA,GACAC,sCAAAA,GACAC,gCAAAA,GACAC,gCAAAA,GACAC,+BAAAA,IAEAn8C,OACA,OACAo8C,YAAAA,GACAC,gBAAAA,GACAC,+BAAAA,CAAAA,EACAC,QAAAA,CAAAA,EACAC,iBAAAA,EACAC,uBAAAA,CAAAC,uBAAAA,EAAArB,SAAAA,IACAsB,oBAAAA,EACApD,wBAAAA,GACAqD,cAAAA,CACAjB,MACA,gBAEA3iC,QAAAA,GAAAA,GAAAA,GAAAA,MAAAA,eAAAA,GAAAA,GAAAA,OAAAA,gBACAjK,KAAAA,GAAAA,EAAAA,OAAAA,GAAAA,cAAAA,EAAAA,MAAAA,MAGA,EACAlL,UACA,2BACA,2BACA,EACAF,SAAAA,CACAk5C,wBACA,sCACA,iEAEA,EACAvD,qBACA,sFACA,EACAwD,8BACA,yDACA,EACAzD,kCACA,uGACA,EACA0D,uBACA,4DACA,EACAC,YACA,2EACA,EACAtB,kBACA,uBACA,MACA,aACAuB,0BACA,6DACA,mFACA,EACAzD,gBACA,uFACA,qGACA,GAEAt5C,QAAAA,CACAg9C,qBAAAA,EAAAA,GAAAA,IAAAA,uBAAAA,iBACA,IACA,qEACA,gDAEA,uCACAnuC,KAAAA,GAAAA,IAAAA,GAAAA,KACA2wB,MAAAA,CAAAA,EAAAA,IACA,oCAGA,sBAAAxS,GAAA,qBACA,IACA,2FAGA,4BACA,wCACA,kCAEA,oEACA,8CACA,sCAGA,CAFA,UACA,4EACA,CACA,IACAysB,4BAAAA,EAAAA,GAAAA,IAAAA,8BAAAA,eAAAA,GACA,+CACAtuC,wBAAAA,cACAsD,MAAAA,GAAAA,EAAAA,MACA,IACAonB,YACAprB,aAAAA,QAAAA,GAAAA,KAAAA,wBACA,EACAwyC,uBACA,iCACA,IACA,+BAEA,ICzQ+P,M,uBCA5C,GAAe,KCQ9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvBmOz7C,GAAAA,W,IAA8BzC,EAAM,K,EAAC,EAAO,MAAKiS,GAA6B,QAAa,Y,OAAa,aAAiB,kBAA+C,MAAC,CAACxJ,MAAW,EAACvI,GAAI+Q,mBAAK1O,KAAI,wB,EAA8B,KAAW,C,YAAkC,Q,kBAAa0oC,C,YAAU,kB,MAACvoC,C,MAAI,EAAO,GAACxC,0B,aAAyB,a,QAAI,mD,YAAQ,OAAM,oBAAKA,GAAI+c,WAAyDxa,MAAW,GAAC,2BAAS,CAAM,MAAC,CAAO,MAAC,aAAsC,IAAsBA,MAAY,EAAM,yBAAsB,EAAClB,OAAM,OAAwBe,EAAAA,MAAS,0BAAe,Q,YAAK67C,U,MAAe,CAAC18C,KAAAA,mCAA6BvB,EAAG,KAAgB,CAAoBF,YAAM,O,MAAC,CAAiB,SAAUE,IAAsC,MAAK4Q,CAA6C,MAAS,EAAC,WAAqBvO,SAAI67C,SAAQA,GAAU57C,EAAG,YAA4BxC,E,WAAO,eAAmB,CAAC,EAAI,SAAQ,OAAsDA,EAAK,KAAtD,gBAAS,C,MAAM,C,KAAQ,UAAG,6CAA6B,6B,OAAC,OAAgB,CAAE,eAAG,CAACwC,EAAG,KAAK,CAACC,MAAAA,CAAkCvC,eAAck+C,KAAyD,CAACl+C,EAAG,KAAO,CAAC0S,EAAG1S,GAAAA,EAAO,CAA0DuC,MAAAA,CAA+CD,KAAG,KAAmD,CAACtC,EAAG,KAAI,CAAmDuC,MAAAA,CAAqBvC,gBAAe0S,KAAsE,GAAC,KAAO,CAA+D5S,YAAM,qB,CAAC,KAAO,EAACE,GAAI+R,EAAG,qBAA8B,C,YAAE,c,CAAiC,OAAU/R,GAAG,EAAI,cAAJ,CAAI,UAAkC,2B,YAAWk+C,kC,CAAgB,EAAC,KAAC,yCAAG,CAAC57C,EAAG,+BAAuB,aAACxC,YAAM,Q,CAAC,SAAUo+C,EAAAA,GAAQA,EAAAA,GAAO,8B,QAAO,EAAQ,WAA2B,6CAAC17C,MAAG,CAAC,MAAQxC,EAAIm+C,GAAAA,gCAA4B,iCAAI,QAAO,sCAAe,CAAC57C,QAAY,EAAM,Y,CAAqD,yBAAoB,C,MAAC,C,QAA4D27C,EAAQA,QAAQ,KAAC,6BAAG,GAAI,CAA0Bp+C,MAAM,mCAA4B,oBAAoB+vB,C,YAAuB7vB,OAAmC,OAAI,MAAQ,EAAG,iCAAK,aAAS,QAAkB,6CAAC,QAAYyzC,EAAAA,YACl+E,4BACGrzC,MAAAA,CAEJ,MAAiBA,EAAAA,W,iKCJ2C,GAAU,W,IAAgBN,EAAM,K,EAAC,QAAUE,G,OAAoC,OAAcmB,C,MAAQ,CAAkB,0CAACoH,QAAYvI,EAAI+Q,QAAK1O,MAAI,S,YAAiCrC,EAAIc,GAAAA,CAAAA,C,IAAgChB,U,oBAAgB,2BAAE,MAAMK,CAA6EL,KAAM,K,CAAmB,KAAM,mBAAC,8CAAE,OAAIE,MAAO,UAAwBuC,KAAAA,KAA2F,6BAACqQ,YAAM,iBAAM,uDAACvQ,EAAqBmG,OAAG,G,CAAgB,IAAE,iB,GAAC,UAAW,K,UAUxkB,kBAAE,MAAMrI,CAA6B,oRAAS,QAAW,mBAACqI,G,CAAmB,IAAE,a,GAAC,UAAYrI,KAAoE,IAAIkC,MAAK,UAAY,oDAACmG,G,KAAwCjG,c,GAA+B,W,MAA8BA,CAAAA,EAAAA,KAAY,SAAmB,YAAamQ,oBAA8D,0BAACE,YAAM,oBAAO,CAAI,EAAC,GAAI,yDAAG,EACjb,WACGxS,MAAAA,I,QCHG,MAAMg+C,GAAmC,CAC5CC,EAAqB38B,KAErB,IAAKA,GAAQ7gB,MAAMiY,OACf,MAAO,GAEX,MAAMwlC,EAAS,IAAIC,IAoBnB,OAnBA78B,EAAO7gB,KAAKgZ,QAAQ3D,IAChB,MAAMgoC,EAAUhoC,EAAKsoC,cAAc,GACnC,OAAON,EAAQO,WAAaJ,CAAW,IACxCviC,SAAS5F,IACR,MAAMwoC,EAAYxoC,EAAKsoC,cAAc,GACrC,IAAKE,EAAUD,UAAUE,OAAQ,OAEjC,IAAKL,EAAOp0B,IAAIw0B,EAAUD,UAAW,CACjC,MAAMjK,EAAyC,CAC3C0J,QAAShoC,EAAKsoC,cAAc,GAAGC,SAC/BC,UAAWA,EAAUD,SACrBplC,MAAO,GAEXilC,EAAOz1B,IAAI61B,EAAUD,SAAUjK,E,CAEnC,MAAMA,EAAM8J,EAAOpyC,IAAIwyC,EAAUD,UAC3BG,EAAa1rC,KAAK2rC,MAAwB,IAAlB3oC,EAAK0oC,YAAoB,IACvDpK,EAAIn7B,OAASulC,CAAU,IAEpB,IAAIN,EAAOQ,WAAWlvC,KAAI,EAAE,CAAEuC,KAAOA,GAAE,EAGlD,QACI9R,MAAO,CACHyoB,MAAOhR,MACP+X,aAAc3sB,OACdpC,QAASkC,SAEbwB,SAAU,CACNo6C,aACI,OAAO98C,KAAKgnB,MAAM3F,QAAO,CAAC9J,EAAenD,IAA4CmD,EAAQnD,EAAKmD,OAAO,EAC7G,EACAlY,UACI,OAAKW,KAAKgnB,MAEH,CACH,CACIlnB,KAAME,KAAKiQ,GAAG,+CACd7Q,MAAO,YACP+wB,UAAU,EACV5X,MAAO,GAEX,CACIzY,KAAME,KAAKiQ,GAAG,2CACd7Q,MAAO,QACP+wB,UAAU,EACV5X,MAAO,IAbS,EAgB5B,ICjE6S,M,uBCAxF,GAAe,KCOxO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5BpZ,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,OAAOgH,YAAY,CAAC,OAAS,UAC3I,EACIvN,GAAkB,GCatB,MAAM2+C,GAAqF,CACvF,YAAe,CAAEz2B,MAAO,cAAezT,YAAa,CAAC,0DAA2D,oFAAqF,mFACrM,UAAa,CAAEyT,MAAO,WAAYzT,YAAa,CAAC,wEAAyE,+FACzH,WAAc,CAAEyT,MAAO,YAAazT,YAAa,CAAC,8DAA+D,mEAAoE,6CAG5KmqC,GAAgCC,IACzC,MAAMjgB,EAAU,CAAC,UAAW,UAAW,UAAW,WAE5CD,EAA4D,GAelE,OAdAv7B,OAAOyN,KAAKguC,GAAanjC,SAAQ,CAACzZ,EAAKgY,KACnC,MAAMiO,EAAQy2B,GAAgB18C,GAAO08C,GAAgB18C,GAAKimB,MAAQjmB,EAClE08B,EAASn/B,KAAK,CACViB,KAAM,CAAC,CACHq+C,WAAY78C,EAAI6f,cAChBkH,EAAG61B,EAAY58C,GACfw9B,EAAGvX,IAEPA,MAAOA,EACP8W,gBAAiBJ,EAAQ3kB,EAAQ2kB,EAAQlmB,QACzC4jB,YAAa,EACbH,YAAa,SACf,IAEC,CACHwC,WACH,EAGL,QAAgBqE,EAA8B1jC,KAC1C,MAAM,aAAEmwB,GAAiBnwB,EACnBkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBAAiBC,IACvCC,EAAehhC,EAAM8gC,iBAAiBC,IACtCS,EAAmB,CAACxX,GAAIyX,GAAY/yB,KACtC,IAAK5R,EAAQ+2C,QAAS,OACtB,MAAMnS,EAAgBhzB,EAAMzQ,KAAKk+B,SAASsF,EAAUrI,cAC9Cva,EAAiC6iB,EAAczjC,KAAKwjC,EAAUhqB,OACpE3a,EAAQ+2C,QAAQh1B,EAAOy9B,WAAW,EAEhC5tC,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAM,MACNc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL82C,UAAW,IACXja,YAAa,kBACbnB,QAAS,CACL/yB,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,GAEb+K,QAAS,CACLC,UAAW,CACP/c,MAAMpS,GACF,MAAMipB,EAAUjpB,EAAKipB,QACfoG,EAAmCpG,EAAQt+B,KAC3C2kC,EAAqCD,EAAOrvB,EAAKuvB,WACvD,MAAO,CACH,UAAU12B,EAAey2B,EAAWpc,EAAGyG,QACpCkvB,GAAgBvZ,EAAW0Z,YAAcH,GAAgBvZ,EAAW0Z,YAAYrqC,YAAc,GAEzG,GAEJ8vB,KAAM,UAGd0B,YAAY,EACZC,qBAAqB,EACrBC,OAAQ,CACJ1G,EAAG,CACC9/B,KAAM,WACN0mC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEX8lC,SAAS,GAEbpd,EAAG,CACCqd,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAO6N,EAAe7N,EAAO2uB,EACjC,GAEJ6W,KAAM,CACFhmC,MAAO+iC,GAEXp7B,MAAO,CACHzG,KAAM,SAASiuB,KACfnvB,MAAOkjC,EACPvJ,SAAS,GAEbA,SAAS,EACTmM,SAAS,IAGjBnG,QAAQzT,GAAIyX,GAAY/yB,GACpB8yB,EAAiBxX,EAAG,CAACyX,GAAY/yB,EACrC,EACA00B,YAAa,CACTC,WAAW,EACXtB,KAAM,SAEVuB,QAAQvgC,GAAQ6Y,IACZ,IAAI2nB,EAAY,UAChB,GAAI3nB,EAAS,CACT,MAAM2gB,EAAU7tB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cACxCmD,IACAgH,EAAY,U,CAGnBxgC,EAAMygC,OAAO3kB,OAAuB7e,MAAM84B,OAASyK,CACxD,KAGR,OAAO70B,CACV,EC/GD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHQ,KAAM2C,OACN06C,QAASh7C,QAEbqD,MAAMlG,GAAO,KAAEymC,IACX,MAAMC,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,OAChC,aAAEkpB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MAC/BkZ,EAAc,KAChB,IAAK9mC,EAAMQ,KAAM,OACjB,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBJ,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC2M,EAAK7lC,MAAM05B,YAAYoM,EAAO9lC,OAC9B,MAAMoQ,EAAQ6tC,GAAiCnY,EAAO9lC,MAAO,CACzD2uB,aAAcA,EAAa3uB,MAC3Bu1C,QAAQyI,GACJpY,EAAK,QAAS,CAAEoY,aAAYhB,QAAS79C,EAAM69C,SAC/C,IAEJ5sC,EAAMzQ,KAAOR,EAAMQ,KACnByQ,EAAM6qB,QAAQ,EAUlB,OARAqL,EAAAA,EAAAA,YAAU,KACNL,GAAa,KAEjBvjC,EAAAA,EAAAA,QACI,IAAMvD,EAAMQ,OACZ,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,IAEtB,CAAEkjC,OAAMC,SAAQG,cAC3B,EACAvjC,MAAO,CACH,sBAAuB,CACnBE,UACIhC,KAAKqlC,aACT,MCjE0S,MCOlT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCgBhC,IAAe/gC,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAE+4C,sBAAqB,GAAEC,qBAAoB,GAAEC,oBAAmBA,IAC9Ej3C,QACI,OAAOvG,KAAKiQ,GAAG,kBACnB,EACAxL,QACI,MAAM,aAAEspB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,OAC/B,GAAEjR,EAAE,OAAEwZ,GAAWJ,KAEjBmpB,GAAmB54C,EAAAA,EAAAA,KAA8B,MACjDs3C,GAAat3C,EAAAA,EAAAA,KAAc,IAC3BokC,GAAYpkC,EAAAA,EAAAA,KAAyB,CAAEqU,aAAc,MAAOtB,SAAU,KAAMC,OAAQX,GAAON,MAAMiB,WACjG6lC,GAAqB74C,EAAAA,EAAAA,KAAgC,IASrD84C,EAAmBx4C,gBACfuvB,EAAO,uBAAuBvvB,UAChC,IACI,MAAM5E,EAAM,IAAI6W,GAAQ6xB,EAAU/vB,cAElC,GADAwkC,EAAmBt+C,MAAQmB,EAAIoX,sBAAsBsxB,EAAUrxB,SAAUqxB,EAAUpxB,QAC/E6lC,EAAmBt+C,OAAO4X,OAAS,EAEnC,YADAtX,EAAAA,EAAAA,IAAW,oDAGf,MAAMk+C,QAAwC97B,GAC1C47B,EAAmBt+C,MAAM,GACzBs+C,EAAmBt+C,MAAM4X,OAAS,EAAI0mC,EAAmBt+C,MAAM,GAAKs+C,EAAmBt+C,MAAM,GAC7F,CAAC,qBAAsB,wBAAyB,wBAChDoS,GAAAA,OAGJ,IAAKosC,GAA6C,IAA7BA,EAAa7+C,KAAKiY,OAEnC,YADAymC,EAAiBr+C,MAAQ,MAI7Bq+C,EAAiBr+C,MAAQw+C,C,CAC3B,MAAOh4C,KACLlG,EAAAA,EAAAA,IAAW,gDACX+9C,EAAiBr+C,MAAQ,I,IAE/B,EAQAy+C,GAA2Dn7C,EAAAA,EAAAA,WAAS,KACtE,IAAK+6C,EAAiBr+C,OAAOL,MAAMiY,OAC/B,MAAO,GAEX,MAAMwlC,EAAS,IAAIC,IAoBnB,OAnBAgB,EAAiBr+C,MAAML,KAAKib,SAAS5F,IACjC,MAAMgoC,EAAUhoC,EAAKsoC,cAAc,GAC7BU,EAAahpC,EAAKsoC,cAAc,GACtC,IAAKU,EAAWT,SAAU,OAE1B,IAAKH,EAAOp0B,IAAIg0B,EAAQO,UAAW,CAC/B,MAAMjK,EAAkC,CACpC0J,QAASA,EAAQO,SACjBplC,MAAO,EACP4lC,YAAa,CAAC,GAElBX,EAAOz1B,IAAIq1B,EAAQO,SAAUjK,E,CAEjC,MAAMA,EAAM8J,EAAOpyC,IAAIgyC,EAAQO,UACzBG,EAAa1rC,KAAK2rC,MAAwB,IAAlB3oC,EAAK0oC,YAAoB,IAClDpK,EAAIyK,YAAYC,EAAWT,YAAWjK,EAAIyK,YAAYC,EAAWT,UAAY,GAClFjK,EAAIn7B,OAASulC,EACbpK,EAAIyK,YAAYC,EAAWT,WAAaG,CAAU,IAE/C,IAAIN,EAAOQ,WAAWlvC,KAAI,EAAE,CAAEuC,KAAOA,GAAE,IAS5CytC,GAA4Dp7C,EAAAA,EAAAA,WAAS,KACvE,IAAK+6C,EAAiBr+C,OAAOL,MAAMiY,OAC/B,MAAO,GAGX,MAAM+mC,EAAa,IAAItB,IAkBvB,OAjBAgB,EAAiBr+C,MAAML,KAAKib,SAAS5F,IACjC,MAAMgoC,EAAUhoC,EAAKsoC,cAAc,GACnC,GAAIqB,EAAW31B,IAAIg0B,EAAQO,UAAW,OAEtC,MAAMqB,EAAmBH,EAAaz+C,MAAMqd,MAAMrI,GAAqCA,EAAKgoC,UAAYA,EAAQO,WAChH,IAAKqB,EAAkB,OAEvB,MAAMC,EAAsC,CACxC7B,QAASA,EAAQO,SACjBplC,MAAOymC,EAAiBzmC,MACxB2mC,WAAY5B,GAAiCF,EAAQO,SAAUc,EAAiBr+C,OAChF++C,0BAA2BjB,GAA6Bc,EAAiBb,cAG7EY,EAAWh3B,IAAIq1B,EAAQO,SAAUsB,EAAW,IAGzC,IAAIF,EAAWf,WAAWlvC,KAAI,EAAE,CAAEuC,KAAOA,GAAE,IAQhD+tC,GAAoE17C,EAAAA,EAAAA,WAAS,KAC/E,GAAIg7C,EAAmBt+C,MAAM4X,OAAS,EAAG,MAAO,CAAEY,SAAU,GAAIC,OAAQ,IAExE,MAAMD,EAAWV,GAAON,IAAI8mC,EAAmBt+C,MAAM,IAAImP,OAAO,gBAC1DsJ,EAAS6lC,EAAmBt+C,MAAM4X,OAAS,EAAIE,GAAON,IAAI8mC,EAAmBt+C,MAAM,IAAImP,OAAO,gBAAkBqJ,EACtH,MAAO,CAAEA,WAAUC,SAAQ,IAa/B,OAVA/V,EAAAA,EAAAA,OAAMg8C,GAAoBO,IACK,IAAvBA,EAAYrnC,SACZmlC,EAAW/8C,MAAQ,CAAC,G,KAI5B0C,EAAAA,EAAAA,OAAMmnC,GAAW9jC,gBACPw4C,EAAiB1U,EAAU,GAClC,CAAEhhC,WAAW,IAET,CACHghC,YACAmV,iBACAE,SAAUR,EACVD,eACA1B,aACAsB,mBACA1vB,eACA4vB,mBACAY,KAAM,CAAErjC,KAAIwZ,UAEpB,EAEAz1B,QAAS,CACLo9C,6BAA6Bx4C,GACzB7D,KAAKiS,QAAQnU,KAAK,uBAAuBqvC,mBAC7B,gCACiBA,mBACjB,4BACaA,mBACDtpC,EAAMu5C,WAAWh9B,+BACH+sB,mBAC9B,yBACiBA,mBACDtpC,EAAMu4C,QAAQh8B,iBAG1C,EACAwmB,sBAAsB/2B,GAClB7P,KAAKipC,UAAYp5B,CACrB,EACA8hC,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,eAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,mBAC1B,KC9MiS,M,uBCAlF,GAAe,KCQlO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvB5B9Q,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,cACtE,EACIlC,GAAkB,GCDlB,GAAS,CAAC,EAKV,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GCjBid,W,IAAM,EAAK,KAAoB,EAACJ,EAAM,MAAK,GAA+C,oB,OAAC,EAAM,WAAC,kBAAE,MAAC,CAACqB,MAAM,2BAACH,KAAOlB,iB,EAA2CA,2BAAoB,Y,MAAC,CAACuB,MAAAA,MAAyB,eAAIe,MAAG,a,YAA6E,EAAS,KAACkG,IAAG,O,GAAWmL,WAAM,MAAC,oI,SAAwCpR,IAAuB,MAAK,EAAC,c,EAA4DzC,KAAM,gB,YAAU,I,MAAiMA,C,MAAO,e,SAAoB,Y,EAAmB,aAAQ,C,aAAUE,iBAAmB,CAAC,gBAAG,YAAI,OAA0CqB,IAAM,UAACH,GAAAA,UAAWT,KAAO2B,IAAuC,uBAACb,YAAW,aAAO,0BAAO,MAAO,CAAQ,UAAgB,0IAAO,MAAO,CAAQ,kBAAO,cAAC,GAAG,aAA+B,kBAAC,OAAiE,OAAkB,S,MAAC,CAAc,MAAO,EAAG,MAAC,SAAU,SAAG,GAAC,QAAY++C,CAAgB,EAAW,WAAW,UAAK/3C,CAAAA,EAAAA,GAAAA,EAAW,C,MAAc,CAAYC,aAAY3H,K,QAAuC,C,YAA8B,M,QAAe,C,aAAoB,mC,MAAG,EAAQ,QAAqD,mBAAG,SAAC,GAACQ,MAAM,GAACH,SAAWq/C,GAAYn+C,MAAQ,EAAC,gB,MAAoBm+C,GAAc,UAAC,IAAwB,mBAAIj+C,IAAG,YAAkBxC,GAAK,SAAC,GAAC,MAAQE,CAAAA,EAAI+R,GAAAA,EAAG,MAAkC,MAAQ/R,CAAY,cAAkB,WAAC,MAAYwgD,IAAiC,GAAO,CAAI,MAAa,WAAY,gDAACj4C,K,MAAwC,C,MAAe,EAAQjG,W,SAAyB,SAAC,G,EAAC,WAAa,C,aAA0B,gB,OAAe,C,aAAqB,uC,MAA+B,U,YAAiC,O,MAAC,qB,SAAG,GAA6D,SAAG,SAAC,GAACjB,MAAM,I,YAAqC,O,IAAmB,YAAmB,GAAC,YAACE,MAAAA,CAAU,EAAC,WAAgB,OAAQe,cAAW,WAAO,SAAO,MAAC,IAAU,IAAe,eAAO,cAAC,YAAG,4BAAO,IAA2B,SAAc,EAAC,gBAA2B,qBAAC,K,MAAiD,CAAc,QAAU,eAAK,SAAO,YAAQ,kBAACjB,EAAOH,WAAWgZ,qB,GAAuC,EAACA,GAAAA,EAAAA,C,MAAc,CAAC3Y,KAAAA,OAA0B,EAAG,KAAI,CAASzB,MAAM,CAAC,KAAO,MAAM,CAACwC,EAAG,mBAAQ,CAACxC,MAAM,CAAC,MAAO,iCAAG,kBAAIwC,MAAG,iBAAoBxC,SAAM,GAAC,SAAQE,EAAiC,KAAO,S,MAAsC,CAAc,QAAU,UAAK,SAAO,YAAQ,aAACqB,EAAOH,WAAW8Y,gB,GAAqC,EAACA,GAAAA,EAAO,C,MAAK,CAACzY,KAAAA,OAAwB,EAAG,KAAI,CAAyCzB,MAAM,CAAC,KAAO,MAAM,CAACwC,EAAG,mBAAQ,CAACxC,MAAM,CAAC,MAAO,+BAAe,gBAAIwC,MAAG,EAAQ,aAACxC,SAAM,GAAC,SAAU,EAAwD,cAA6D,MAAC,CAAG,MAAC,UAAC,SAAQ,SAAS6R,GAAQ,UAAW8uC,CAAiB,EAAC,yBAAiB3gD,IAAM,2B,MAAC,CAAS,YAAyHyC,EAAAA,GAAAA,EAAW,CAAQzC,MAAM,CAAC,KAAO,kBAA4C,CAACwC,EAAG,KAAY6O,MAAK,CAAkB7O,UAAW,2CAACxC,QAAM,8BAAC,MAAQ,aAAqB,GAAC,CAAG,MAAC,YAAC,OAAQ,mB,IAAiE,QAAE,MAAK,CAAUA,KAAM,KAAU,6GAAE,YAAS,OAA0GA,MAAM,CAAC,MAAOE,EAAI0gD,GAAAA,oCAAgB,CAACp+C,EAAG,WAAW,CAAEC,KAAAA,iBAAoB,CAACD,EAAG,KAAmBqE,MAAI,CAAkBpE,MAAW,YAAQzC,KAAM,I,GAA6B,CAA0C,eAAgB,GAAM,eAAmB,mBAAG,WAAC,IAA2B,GAAG,IAAKwC,CAAkBE,MAAG,CAAC,KAAO,KAA2B,GAAG,sGACj3I,OACGpC,KAAAA,EAAAA,iB,8SCFAa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,QAC9G,EACIvG,GAAkB,GCMtB,MAAMg9B,GAAa,IAENujB,GAAqCC,IAC9C,MAAM7hB,EAA2C,GACjD,IAAIhjB,EAAI,EACR,IAAK,MAAM8kC,KAAYD,EAAer9B,UAAW,CAC7C,MAAM7iB,EAAQi4B,GAAkB5c,EAAI4c,GAAkB7f,QAChDjY,EAAOggD,EAASlhB,aAAa/vB,KAAID,IAAK,CACxCyZ,EAAG,IAAInO,KAAKtL,EAAE0T,WAAWuc,UACzBC,EAAGlwB,EAAEguB,YAEToB,EAASn/B,KAAK,CACViB,OACAynB,MAAOu4B,EAAS/9C,KAChBs8B,gBAAiB,OAAO1+B,KACxB67B,YAAa,QACbG,YAAa,EACb8C,MAAQpC,GAAarhB,IAEzBA,G,CAEJ,MAAO,CACHuf,OAAQ,GACRyD,WACH,EAaL,QAAgBqE,EAA8B1jC,EAAmB2jC,KAC7D,MAAM,aAAExT,EAAY,QAAEwQ,GAAY3gC,EAC5BkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBAAiBC,IACvCC,EAAehhC,EAAM8gC,iBAAiBC,IACtCryB,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAM,MACNc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL68B,YAAa,kBACbnB,QAAS,CAGLoJ,WAAY,CAEJvJ,YAAaoI,GAErBh7B,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,EACTiB,OAAQ,CACJ56B,MAAOkjC,IAGfwB,QAAS,CACLC,UAAW,CACP/c,MAAMpS,GACF,MAAO,CAACA,EAAKipB,QAAQ7W,MACzB,EACAgd,WAAWpvB,GACP,MAAMipB,EAAUjpB,EAAKipB,QACfoG,EAAkBpG,EAAQt+B,KAC1B2kC,EAAoBD,EAAOrvB,EAAKuvB,WAChCC,EAAeH,EAAO31B,KAAK0iB,GAAaA,EAAEuN,IAAG1c,QAAO,CAACmP,EAAGC,IAAMD,EAAIC,IAClEoT,EAAiBD,EAAevG,EAAQt+B,KAAKiY,OAC7CuB,EAA+BvY,KAAKwP,MAAMtH,OAAOnJ,KAAKk+B,SAASnvB,KAAIkxC,GAAMA,EAAGjgD,KAAKqV,EAAKuvB,aACtFsb,EAAa1mC,EAAMzK,KAAIuL,GAAKA,GAAG0kB,GAAK,IAAG1c,QAAO,CAACmP,EAAGC,IAAMD,EAAIC,IAC5DyuB,EAA0Bxb,EAAW3F,GAAKkhB,GAAcvb,EAAW3F,GAAK,IACxE+F,GAAwBJ,EAAW3F,EAAI8F,GAAkBA,EAAiB,IAChF,MAAO,CACH,UAAU52B,EAAey2B,EAAW3F,EAAGhQ,KACvC,GAAGmxB,EAAuBnb,QAAQ,kBAAkB92B,EAAegyC,EAAYlxB,MAC/E,GAAG+V,EAAsB,EAAI,IAAMA,EAAoBC,QAAQ,GAAKD,EAAoBC,QAAQ,kBAExG,GAEJlB,KAAM,UAGdsc,MAAO,CACHtc,KAAM,WAGV0B,YAAY,EACZC,qBAAqB,EACrBN,YAAa,CACTC,WAAW,GAEf5F,QAAQ16B,GAAQ6Y,GAAUlN,GACtB,IAAKkN,EAAS,OACd,MAAM2gB,EAAU7tB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cACvCmD,GACDkB,GACAA,EAAQ,CACJhmB,MAAO8kB,EAAQK,MACf18B,KAAMq8B,EAAQ7W,OAG1B,EACAie,OAAQ,CACJnd,EAAG,CACCrpB,KAAM,OACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEXimC,KAAM,IACNjN,KAAM,CACFjX,KAAM,UAGdod,EAAG,CACC9/B,KAAM,SACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAO6N,EAAe7N,EAAO2uB,EACjC,GAEJ6W,KAAM,CACFhmC,MAAO+iC,GAEX5f,IAAK,EACL8iB,KAAM,IACNt+B,MAAO,CACHzG,KAAM,SAASiuB,KACfnvB,MAAOkjC,EACPvJ,SAAS,GAEboF,MAAO,IACPpF,SAAS,KAIrBe,QAAS,CAACP,MAEd,OAAOvpB,CACV,ECxJD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHQ,KAAM2C,QAEV+C,MAAM4U,GAAG,KAAE2rB,IACP,MAAMC,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,MAChC00B,GAAS10B,EAAAA,EAAAA,KAAoB,MAC7BsgC,GAAkBtgC,EAAAA,EAAAA,KAAoB,OAEtC,aAAEkpB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MAC/BkZ,EAAc,KAChB,IAAKhsB,EAAEta,KAAM,OACb,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBL,EAAK7lC,MAAMmmC,UAAUttB,IAAI,mBAEzBitB,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC4M,EAAO9lC,MAAM0B,MAAMQ,OAAS,QAC5B4jC,EAAO9lC,MAAMmmC,UAAUttB,IAAI,gBAE3BshB,EAAOn6B,MAAQ2L,SAASutB,cAAc,OACtCiB,EAAOn6B,MAAM+H,GAAMiK,KAAK4xB,MAAsB,IAAhB5xB,KAAKC,UAAoBC,WACvDioB,EAAOn6B,MAAMkmC,UAAW,GACxB/L,EAAOn6B,MAAMmmC,UAAUttB,IAAI,gBAC3BshB,EAAOn6B,MAAM0B,MAAM0kC,UAAY,QAE/BL,EAAgB/lC,MAAQ2L,SAASutB,cAAc,OAC/C6M,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,0BAEpCktB,EAAgB/lC,MAAM05B,YAAYoM,EAAO9lC,OACzC6lC,EAAK7lC,MAAM05B,YAAYqM,EAAgB/lC,OACvC6lC,EAAK7lC,MAAM05B,YAAYS,EAAOn6B,OAE9B,MAAMoQ,EAAQ4vC,GAAwBla,EAAO9lC,MAAO,CAChD2uB,aAAcA,EAAa3uB,MAC3Bm/B,QAAQ16B,GACJmhC,EAAK,QAASnhC,EAClB,GAEJ01B,EAAOn6B,MAAM+H,IACbqI,EAAMzQ,KAAOsa,EAAEta,KACfyQ,EAAM6qB,QAAQ,EAUlB,OARAqL,EAAAA,EAAAA,YAAU,KACNL,GAAa,KAEjBvjC,EAAAA,EAAAA,QACI,IAAMuX,EAAEta,OACR,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,IAEtB,CAAEkjC,OAAMC,SAAQG,cAC3B,EACAvjC,MAAO,CACH,sBAAuB,CACnBE,UACIhC,KAAKqlC,aACT,MCnEuS,MCO/S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,YClBY7kC,GAAOK,WAAS,MAAU,KAA0B7C,EAAK,EAAC,S,OAAC,OAAYY,EAAK,S,MAAC,CAAgB,QAAa,MAAgB,KAAQ,EAACV,KAAW,cAAYkB,EAAAA,WAAM,gBAACqH,MAAW,EAACvI,O,YAA0B,KAAU,E,IAAC,UAA0B,GAAC,WAAC4S,MAAM,iBAAM,EAAa,WAClT,UACGxS,WAAAA,EAAe,QAAK,yEAExB,E,MCmBA,IACAC,MAAAA,CACAK,MAAAA,CACAX,KAAAA,OACAS,QAAAA,WAEAyT,KAAAA,CACAlU,KAAAA,OACAS,QAAAA,IAEA2gD,WAAAA,CACAphD,KAAAA,QACAS,SAAAA,GAEAiU,OAAAA,CACA1U,KAAAA,QACAS,SAAAA,GAEAU,MAAAA,CACAnB,KAAAA,QACAS,SAAAA,KC3C+P,MCO3P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCYhC,IAAe4F,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CACR+6C,kBAAiB,GACjBvP,gBAAe,GACfwP,OAAMA,IAEVh5C,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,qBAClB,EACAlR,OACI,MAAM60B,EAAkC,CACpC1a,aAAc,KACdM,iBAAkB,MAEtB,MAAO,CACHgmC,aAAc,EACdf,WAAY,KACZgB,eAAgB,GAChBrqC,QAAS,GACTgD,UAAWlB,KAASwoC,SAAS,EAAG,UAChCC,WAAW,EACXznC,QAAShB,KACT0oC,SAAS,EACT9rB,cAAe,GACf+rB,mBAAoB,GACpBjB,cAAe,CAAEplB,OAAQ,GAAIyD,SAAU,IACvCt+B,OAAO,EACPmhD,YAAa,CAAEzvC,KAAQA,GAAK,2BAC5B0vC,eAAgB,CACZ,KACI,MAAM3nC,EAAYlB,GAAON,IAAK5W,KAAaoY,WAAWC,QAAQ,SACxDH,EAAUhB,GAAON,IAAK5W,KAAakY,SAASC,MAAM,SACxD,QAAIC,EAAU42B,SAAS92B,IACX,gDAAgD,GAGpE8nC,aAAc,CACV,KACI,MAAM5nC,EAAYlB,GAAON,IAAK5W,KAAaoY,WAAWC,QAAQ,SACxDH,EAAUhB,GAAON,IAAK5W,KAAakY,SAASC,MAAM,SACxD,QAAIC,EAAU42B,SAAS92B,IACX,+CAA+C,GAGnEsmC,gBAAiB,CAAEnuC,KAAQA,GAAK,2BAChCquC,mBAAoB,CAAEruC,GAAMA,EAAE2G,OAAS,GAAK,mCAC5C4c,eACAqsB,gBAAiB,KACjBh1C,2BAA4BtG,EAAAA,EAAAA,6BAEpC,EACAQ,gBACInF,KAAKwd,YACT,EACA9a,SAAU,CACNwd,SACI,MAAMhL,EAAiB,GAEvB,GADAA,EAAKpX,KAAKkC,KAAKy+C,YACXz+C,KAAKy/C,gBAAkBz/C,KAAKy/C,eAAezoC,OAAS,EACpD,IAAK,MAAM/B,KAAOjV,KAAKy/C,eACnBvqC,EAAKpX,KAAKmX,GAGlB,MAAO,CACHqC,YAAa9F,GAAAA,QACbuQ,IAAK7K,GAAON,IAAI5W,KAAKoY,UAAW,YAAYC,QAAQ,SAASR,SAC7DyJ,IAAKpK,GAAON,IAAI5W,KAAKkY,QAAS,YAAYC,MAAM,SAASN,SACzDmK,WAAY9M,EAEpB,EACAuF,eACI,MAAMA,EAAeza,KAAKkgB,OAAO8B,WAAWjK,QAAOoQ,GAAKA,IAAGra,KAAKqa,GAAM,QAAQA,MAC9E,OAAO1N,CACX,MACG+tB,EAAAA,GAAAA,IAAUrc,KAEjBltB,QAAS,CACLue,YAAYgL,EAAAA,GAAAA,IAAQ,kBAAkBrjB,iBAClC,IACInF,KAAKoV,cAAgB6M,KAAgBvU,MAAMijB,GAAMA,EAAE5xB,M,CACrD,MAAO6G,KACLlG,EAAAA,EAAAA,IAAW,4CACXM,KAAKoV,QAAU,E,CAEvB,IACAupC,iBAAiBn2B,EAAAA,GAAAA,IAAQ,mBAAmBrjB,iBACxC,IACInF,KAAKw/C,aAAe,KACpB,MAAMt/B,EAAS2nB,GAA2B7nC,KAAK4zB,cAC/C,IAAK1T,EAAQ,OACbA,EAAOtI,SAAWV,GAAON,IAAI5W,KAAKoY,WAAWC,QAAQ,SAASR,SAAS+C,cACvEsF,EAAOrI,OAASX,GAAON,IAAI5W,KAAKkY,SAASC,MAAM,SAASN,SAAS+C,cAEjE,MAAMw2B,QAAsB/wB,GAAS,IAC9BH,EACHxF,YAAa1a,KAAKya,aAClB6F,OAAQ,CAAC/O,GAAgB2uC,QAAS3uC,GAAgB4uC,SAGtDngD,KAAKigD,gBAAkB9R,GAAyBiS,qBAC5ClgC,EACAlgB,KAAKya,aACL22B,GAEJpxC,KAAK4+C,cAAgBC,GAAkCzN,E,CAEzD,MAAOxrC,KACLlG,EAAAA,EAAAA,IAAW,wCACXM,KAAK8zB,cAAgB,GACrB9zB,KAAK6/C,mBAAqB,GAC1B7/C,KAAK4+C,cAAgB,GACrB5+C,KAAKw/C,aAAe,C,CAE5B,IACAnmB,OAAOjlB,GACH,MAAMmE,EAAQvY,KAAKy/C,eAAehnC,QAAQrE,GACtCmE,GAAS,GAAGvY,KAAKy/C,eAAehrB,OAAOlc,EAAO,EACtD,EACAo5B,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,gBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,sBAC1B,KCxJqS,M,uBCAxF,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtByD,GAAU,W,IAA8BjS,EAAM,K,EAAC,EAAO,MAAKiS,GAAsB,EAAC,kB,OAAe,aAAa,kB,MAAC,CAAqB,wBAAIzP,KAAG,eAASxC,SAAM,GAAC,mBAAmB,K,CAAU,O,MAAc,CAAe,MAAQ,YAAI,IAAO,GAAI,SAAQ,GAAG,aAAG,OAAC,GAAC,MAAQ,G,MAAwBE,IAAwB,IAAIsC,MAAG,SAAcnC,GAAiDoC,OAAW,EAAC,mBAASD,I,CAAoB,MAAS,mD,YAAS,Q,CAAC,OAAM,CAAE,OAAIA,KAAG,GAAexC,IAAM,GAAC,IAAO,K,CAAmO,gBAAiB,C,MACnyBqiD,C,MACAC,EAAAA,GAAAA,WAAAA,CAAqBA,EAAAA,aAAAA,EAAAA,YAAAA,cACvB,YAAC,wIAAC,oDAAM,kBAAmB,EAACt0B,kBAA6ChuB,gBAAM,wBAAoB,GAAK,EAAC,2CAGQ,EAAC,KAHT,QAAE,OAAIwC,KAAG,GAAexC,IAAM,GAAC,IAAO,K,CAAgI,gBAAiB,C,MAC9RqiD,C,MACAC,EAAAA,GAAAA,WAAAA,CAAqBA,EAAAA,YAAAA,EAAAA,YAAAA,cACvB,YAAC,8CAAC,oDAAM,kBAAiB70B,EAAAA,kBAAyDztB,gBAAM,wBAAoB,GAAM,6CAGnD,EAAC,KAHkD,QAAE,OAAIwC,KAAG,GAAexC,IAAM,GAAC,IAAO,K,CAAiH,gBAAiB,C,MACxRqiD,C,MACAC,GAAAA,EAAAA,YAAqBA,EAAAA,YAAAA,QAAAA,GAAAA,KACvB,YAAC,yCAAC,oDAAM,kBAAc,oBAAUtiD,gBAAM,wBAAoB,GAAM,QAAE,OAAIwC,KAAG,GAAexC,IAAM,GAAC,IAAO,K,CAAsF,gBAAiB,C,MAC3MqiD,C,MACAC,EAAAA,gBACF,YAAC,iDAAC,oDAAM,kBAAc,oBAACtiD,gBAAM,wBAAcwC,GAAG,QAAgBxC,MAAM,CAAC,KAAO,KAAoB,CAACwC,EAAG,gBAAmBxC,MAAM,CAAC,MAAOE,mBAAqB,GAAG,kBAAgB,CAAEF,MAAM,CAAC,KAAO,oBAAMwC,IAAG,UAAiB,CAAEqE,MAAI,CAAkB7G,KAAM,K,CAAkD,oBAAmBytB,C,IAAyB,kB,MAA+C,CAA2D,uCAAI,aAAW,2BACrd,2CACGntB,WAAgB,EAAI,+C,kBCdpBa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,QAC9G,EACIvG,GAAkB,GCOtB,MAAMg9B,GAAa,IACbilB,GAAuB,GACvBC,GAAuB,GAEhBC,GAAwC,CACjD9jB,EACA+jB,KAEA,MAAMzjB,EAAoD,GAiB1D,GAhBAN,EAAYgkB,UAAU3mC,SAAQ,CAAC0H,EAAGzH,KAC9B,MAAMrb,EAAQi4B,GAAkB5c,EAAI4c,GAAkB7f,QAChD4pC,EAAgD,CAClD7hD,KAAM,GACNynB,MAAO9E,EAAEm/B,aAAe,UACxBvjB,gBAAiB,OAAO1+B,KACxB67B,YAAa,QACbG,YAAa,EACb8C,MAAOpC,GAAarhB,GAExB2mC,EAAgB7hD,KAAO2iB,EAAEo/B,uBAAuBhzC,KAAK8tB,IAAC,CAClDtU,EAAG,IAAInO,KAAKyiB,EAAEhJ,KAAMgJ,EAAEjJ,MAAQ,EAAG,GAAGmL,UACpCC,EAAGnC,EAAE+d,KAAO/d,EAAEmlB,WAElB9jB,EAASn/B,KAAK8iD,EAAgB,IAE9BF,EAAY,CACZ,MAAMM,EAA+C,CACjD/iD,KAAM,OACNc,KAAM,GACNynB,MAAO,SACP8W,gBAAiB,uBACjB7C,YAAa,oBACbwmB,MAAM,EACNC,QAAS,GACTxjB,MAAO6iB,GACPY,QAAS,MAEPC,EAA8C,CAChDriD,KAAM,GACNynB,MAAO,eACP8W,gBAAiBE,KAAAA,KAAa,SAAU,WACxCE,MAAO8iB,GACP5lB,YAAa,EACbH,YAAa,SAEjBkC,EAAY0kB,oBAAoBrnC,SAAS9D,IACrC,MAAMwyB,EAAO,IAAIvvB,KAAKjD,EAAE0c,KAAM1c,EAAEyc,MAAQ,EAAG,GAC3CquB,EAAcjiD,KAAKjB,KAAK,CAAEwpB,EAAGohB,EAAK5K,UAAWC,EAAG7nB,EAAEuiB,SAClD2oB,EAAcriD,KAAKjB,KAAK,CAAEwpB,EAAGohB,EAAK5K,UAAWC,EAAG7nB,EAAE6qC,QAAS,IAE/DC,EAAcjiD,KAAOiiD,EAAcjiD,KAAK0/B,MAAK,CAACjO,EAAGC,IAAMA,EAAEnJ,EAAIkJ,EAAElJ,IAC/D85B,EAAcriD,KAAOqiD,EAAcriD,KAAK0/B,MAAK,CAACjO,EAAGC,IAAMA,EAAEnJ,EAAIkJ,EAAElJ,IAC/D2V,EAASn/B,KAAKkjD,GACd/jB,EAASn/B,KAAKsjD,E,CAElB,MAAO,CACH5nB,OAAQ,GACRyD,WACH,EAOL,QAAgBqE,EAA8B1jC,EAAmB2jC,KAC7D,MAAM,aAAExT,GAAiBnwB,EACnBkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBAAiBC,IACvCC,EAAehhC,EAAM8gC,iBAAiBC,IACtCryB,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAM,MACNc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL68B,YAAa,kBACbnB,QAAS,CAGLoJ,WAAY,CAERvJ,YAAaoI,GAEjBh7B,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,EACTiB,OAAQ,CACJ56B,MAAOkjC,KAInByC,YAAY,EACZC,qBAAqB,EACrBN,YAAa,CACTC,WAAW,EACXtB,KAAM,SAEV4B,OAAQ,CACJnd,EAAG,CACCrpB,KAAM,OACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEXimC,KAAM,IACNjN,KAAM,CACFjX,KAAM,UAGdod,EAAG,CACC9/B,KAAM,SACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAO6N,EAAe7N,EAAO2uB,EACjC,GAEJ6W,KAAM,CACFhmC,MAAO+iC,GAEX5f,IAAK,EACL8iB,KAAM,IACNt+B,MAAO,CACHzG,KAAM,SAASiuB,KACfnvB,MAAOkjC,EACPvJ,SAAS,GAEboF,MAAO,IACPpF,SAAS,GAEb+oB,GAAI,CACArjD,KAAM,SACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAOA,EAAM2kC,QAAQ,GAAK,GAC9B,GAEJnD,SAAU,QACVgE,KAAM,CACF2c,iBAAiB,MAKjCjoB,QAAS,CAACP,MAEd,OAAOvpB,CACV,EC9JD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CACLQ,KAAM2C,QAER+C,MAAM4U,GACJ,MAAM4rB,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,MAChC00B,GAAS10B,EAAAA,EAAAA,KAAoB,MAC7BsgC,GAAkBtgC,EAAAA,EAAAA,KAAoB,OACtC,aAAEkpB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MAC/BkZ,EAAc,KAClB,IAAKhsB,EAAEta,KAAM,OACb,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBL,EAAK7lC,MAAMmmC,UAAUttB,IAAI,mBAEzBitB,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC4M,EAAO9lC,MAAM0B,MAAMQ,OAAS,QAC5B4jC,EAAO9lC,MAAMmmC,UAAUttB,IAAI,gBAE3BshB,EAAOn6B,MAAQ2L,SAASutB,cAAc,OACtCiB,EAAOn6B,MAAM+H,GAAMiK,KAAK4xB,MAAsB,IAAhB5xB,KAAKC,UAAoBC,WACvDioB,EAAOn6B,MAAMkmC,UAAW,GACxB/L,EAAOn6B,MAAMmmC,UAAUttB,IAAI,gBAC3BshB,EAAOn6B,MAAM0B,MAAM0kC,UAAY,QAE/BL,EAAgB/lC,MAAQ2L,SAASutB,cAAc,OAC/C6M,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,0BAEpCktB,EAAgB/lC,MAAM05B,YAAYoM,EAAO9lC,OACzC6lC,EAAK7lC,MAAM05B,YAAYqM,EAAgB/lC,OACvC6lC,EAAK7lC,MAAM05B,YAAYS,EAAOn6B,OAE9B,MAAMoQ,EAAQgyC,GAA4Btc,EAAO9lC,MAAO,CACtD2uB,aAAcA,EAAa3uB,OAE7Bm6B,EAAOn6B,MAAM+H,IACbqI,EAAMzQ,KAAOsa,EAAEta,KACfyQ,EAAM6qB,QAAQ,EAUhB,OARAqL,EAAAA,EAAAA,YAAU,KACRL,GAAa,KAEfvjC,EAAAA,EAAAA,QACE,IAAMuX,EAAEta,OACR,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,IAEpB,CAAEkjC,OAAMC,SAAQG,cACzB,EACAvjC,MAAO,CACL,sBAAuB,CACrBE,UACEhC,KAAKqlC,aACP,MC9DiT,MCOnT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBY7kC,GAAOK,WAAS,MAAU,KAAgB7C,EAAK,EAAC,S,OAAC,iBAAmB,C,MAAC,CAAsC,kBAAIwC,QAAG,UAAe,mB,CAAQ,OAAcnB,C,MAAQ,CAA6B,kBAAoB,MAAS,EAACnB,iBAAW,iBAAcc,GAAQ,mBAAG,QAAC,W,GAAkCd,CAAiB,gBAAC,YAAC,U,EAAmD,6BAAE,UAACuI,G,YAAoD,EAAS,K,IAAE2N,wBAAK,GAAE,eAAC,IAA8F,+EAAC7T,GAAyBmG,C,IAAc0N,qBAAK,GAAE,eAAC,IAA2F,4EAAC7T,GAA2BmG,C,IAAc0N,uBAAK,GAAE,eAAC,IAA6F,8EAAC7T,GAA2BmG,C,IAAc0N,uBAAK,GAAE,eAAC,IAAoE,yDAAC7T,GAA4BmG,C,IAAc0N,wBAAK,GAAE,eAAC,IAA8F,+EAAC7T,GAAyBmG,C,IAAc0N,qBAAK,GAAE,eAAC,IAA2F,4EAAC7T,GAA2BmG,C,IAAc0N,uBAAK,GAAE,eAAC,IAA6F,8EAAC7T,GAA2BmG,C,IAAc0N,uBAAK,GAAE,eAAC,IAAqE,MAAK,GAAI,gDAAI,IACz/C,YACG9V,EAEJ,E,MC+BA,IACAC,MAAAA,CAAAA,QAAAA,eAAAA,UAAAA,cACAQ,OACA,OAAAusC,OAAAA,eACA,EACA5oC,SAAAA,CACA++C,mBACA,kBAEA,oBACA,sEACAC,QAAAA,EACAC,KAAAA,EACAC,OAAAA,EACAC,OAAAA,GAEA,gEACAH,QAAAA,EACAC,KAAAA,EACAC,OAAAA,EACAC,OAAAA,GAEA,OACA7zB,WAAAA,EAAAA,WACA6yB,aAAAA,EAAAA,aACAiB,iBAAAA,EAAAA,QACAC,cAAAA,EAAAA,KACAC,gBAAAA,EAAAA,OACAC,gBAAAA,EAAAA,OACAC,iBAAAA,EAAAA,QACAC,cAAAA,EAAAA,KACAC,gBAAAA,EAAAA,OACAC,gBAAAA,EAAAA,OACA,IA1BA,EA4BA,EACAhjD,UACA,oCACA,kDACA,OACAwhD,aAAAA,gBACAiB,iBAAAA,GAAAA,YACAC,cAAAA,GAAAA,SACAC,gBAAAA,GAAAA,WACAC,gBAAAA,GAAAA,WACAC,iBAAAA,GAAAA,YACAC,cAAAA,GAAAA,SACAC,gBAAAA,GAAAA,WACAC,gBAAAA,GAAAA,YAWA,OARA,sBACAhjD,EAAAA,CACAwhD,aAAAA,gBACAkB,cAAAA,GAAAA,SACAI,cAAAA,GAAAA,WAIA,yBACAriD,KAAAA,EAAAA,GACAV,MAAAA,EACA+wB,UAAAA,KAEA,ICnGsQ,MCOlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCLhC,IAAe7rB,EAAAA,EAAAA,iBAAgB,CAC7BiC,MAAMqrB,GACJ,OAAOA,EAAI3hB,GAAG,4BAChB,EACA1L,WAAY,CACV+9C,eAAc,GACdC,eAAcA,IAEhBtjD,QAAS,CACPujD,oBACE,MAAMC,EAAQziD,KAAK0iD,MAAM,mBACnBrjD,EAAUojD,EAAMpjD,QAChBy4C,EAAez4C,EAAQyO,KAAKmM,GAAMA,EAAE7a,QACpCk0C,EAAYmP,EAAMhB,iBAAiB3zC,KAAKmM,GAAM69B,EAAahqC,KAAK6iB,GAAM1W,EAAE0W,OAC9E2iB,EAAUyE,QAAQ14C,EAAQyO,KAAKmM,GAAMA,EAAEna,QACvCuyC,GAAAA,UAAqBiB,EAAWtzC,KAAKiQ,GAAG,sCAC1C,GAEFlR,OACE,MAAO,CACLu8C,QAAS,KACTqH,cAAe,CAAEnpB,OAAQ,GAAIyD,SAAU,IACvC2lB,YAAa1rC,GAAON,MAAM8oC,SAAS,EAAG,UAAUrnC,QAAQ,SAASR,SACjEgrC,UAAW3rC,GAAON,MAAMiB,SAE5B,EACAnV,SAAU,CACRogD,eACE,OAAK9iD,KAAKs7C,QACHt7C,KAAKs7C,QAAQwH,aADM,CAE5B,EACAC,cACE,OAAK/iD,KAAKs7C,QACHt7C,KAAKs7C,QAAQyH,YADM,CAE5B,EACAC,cACE,OAAKhjD,KAAKs7C,QACHt7C,KAAKs7C,QAAQ0H,YADM,CAE5B,EACAC,kBACE,OAAKjjD,KAAKs7C,QACHt7C,KAAKs7C,QAAQqF,UAAU3pC,OADJ,CAE5B,EACAqpC,oBACE,OAAOnpC,GAAON,IAAI5W,KAAK4iD,aAAar0C,OAAO,WAC7C,EACA+xC,kBACE,OAAOppC,GAAON,IAAI5W,KAAK6iD,WAAWt0C,OAAO,WAC3C,MACGi6B,EAAAA,GAAAA,IAAUrc,KAEfhnB,gBACE,IACEnF,KAAKib,MAAM2M,MAAM,wBACjB,MAAM7oB,QAAaqjB,GAAmBpiB,KAAK4iD,YAAa5iD,KAAK6iD,WAC7D7iD,KAAKs7C,QAAUv8C,EACfiB,KAAK2iD,cAAgBlC,GAAsC1hD,GAAOiB,KAAKyrB,YAAYO,iBAAiB,c,CACpG,MAAOpmB,IACPjG,GAAAA,EAAAA,MAAe,eAAgB,oD,CAC/B,QACAK,KAAKib,MAAMoN,IAAI,uB,CAEnB,IC3E8S,M,uBCAxF,GAAe,KCOnO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB4B9M,GAAOrd,WAAsB,MAAU,KAA8BF,EAAK,EAAC,SAAQ,EAACE,MAAO,Y,OAAwB,EAAM,WAAC,kBAAa,OAAIsC,MAAG,KAAa,wBAA0BxC,KAAM,iBAAmC,+BAAC0C,MAAG,CAAC,MAAQ,yB,GAAoD,CAAC,kBAAM,OAAC,mBAAqB,EAACD,KAA0B,uBAAwB,C,YAAkDvC,O,MAAoB,CAA6C,6DAACuI,MAAW,EAACvI,gBAASqC,gBAAI,EAAe,0B,YAAuBC,EAAG,K,IAAgBC,gB,GAAoCzC,W,MAAO,QAAe,C,YAAe,wB,MAAS,CAAqB,eAAe,QAAI,KAAO,SAAG,kBAAe,GAAc,mBAAoC,KAAO,GAAuC,eAAY,cAAG,oCAACuB,MAAM,oCAACH,UAAW8jD,I,MAAyC,CAAwB,MAAC,cAACzjD,SAAU,SAAC,GAAa,qBAAI,EAAC,4BAAiBe,EAAoB,OAAC,OAA+B,iBAAG,GAAG,CAChjC,+BAGD,IAASrB,E,QCJLA,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,aAAa,CAACxC,MAAM,CAAC,MAAQE,EAAIilD,aAAa,mBAAmB,aACpK,EACI7kD,GAAkB,GCAf,MAAM8kD,GAAkBxlD,IAC3B,MAAM,OAAEylD,GAAWzlD,EACnB,MAAO,CACH4R,MAAO,CACH8tB,gBAAiB,cACjBxvB,IAAK,gBAETw1C,UAAW,CAAE1gB,SAAS,GACtB9G,QAAS,CAAE8G,SAAS,GACpBr8B,MAAO,CAAEzG,KAAM,IACfyjD,cAAe,CAAE3gB,SAAS,GAC1BrJ,OAAQ,CACJiqB,UAAW,CACP5kD,MAAO,OAAOi3B,OAElB4tB,eAAgB,CACZ7kD,MAAO,OAAOi3B,OAElB6tB,WAAY,CACR5iD,MAAO,CACHlC,MAAO,OAAOi3B,OAElB8tB,YAAa5tB,KAGrB6tB,UAAW,GACXC,YAAa,CACTC,OAAQ,CACJC,MAAO,CACHV,OAAQ,CACJ9jB,MAAO,WACC8jB,GAAUA,EAAO,iBACjBA,EAAO,gBAAgBrjD,KAE/B,MAKhB8jD,OAAQ,CAAC,CACL9iD,KAAM,YACNpC,MAAO,UACPolD,qBAAqB,EACrBC,cAAc,IAErB,EAGQC,GAAwB,CAACC,EAAsBC,EAAgBhZ,EAAiB,QACzF,MAAMiZ,EAAc,CAChBC,MAAO,UACPC,OAAQ,aAENz+C,EAAS,CACX7H,KAAM,YACN+C,KAAMmjD,EACNK,OAAQ,KACRzlD,KAAM,GACN0lD,QAAS,GACTC,QAAS,MACTphB,QAAoB,cAAX8gB,EACH,CACEO,iBACI,OAAI3kD,KAAK4kD,EAAI,MACF,GAAG5kD,KAAKgB,iBACRhB,KAAK4kD,EAAI,KACT,GAAG5kD,KAAKgB,YACRhB,KAAK4kD,EAAI,MACT,GAAG5kD,KAAKgB,eACRhB,KAAK4kD,EAAI,KACT,GAAG5kD,KAAKgB,aAER,GAAGhB,KAAKgB,iBAEvB,GAEF,CACE2jD,iBACI,MAAO,GAAGvZ,GAAU,KAAKprC,KAAKgB,SAAShB,KAAK4kD,EAAE7gB,QAAQ,MAAMqgB,GAChE,IAMZ,OAHIC,EAAYF,KACZr+C,EAAO,SAAWu+C,EAAYF,IAE3Br+C,CAAM,EAGJ++C,GAA6B,CAACC,EAAuBC,EAAkBZ,EAAsBa,EAAaC,EAAa7lD,KACzH,CACH4B,KAAM+jD,EACNG,KAAMJ,EACN3+B,SAAUg+B,EACVa,MACAC,MACAL,EAAGxlD,IAIE+lD,GAAyB7jC,IAC3B,CACHS,IAAK,EACLT,MACA8jC,MAAO,CACH,CAAC,EAAG,WACJ,CAAC,GAAK,WACN,CAAC,GAAK,WACN,CAAC,EAAG,cCnGHC,GAAoC,CAC/CC,EACAhwC,EACAyY,EACAw3B,KAEA,MAAMC,EAAeF,EAAMvmD,KAAKsiB,QAAO,CAACokC,EAAKz9C,KAC3C,MAAMzH,EAAM,GAAGyH,EAAIwS,gBAAgBxS,EAAIqS,aAAa4vB,cAEpD,OADAwb,EAAIllD,GAAOyH,EAAI+zC,UACR0J,CAAG,GACT,CAAC,GACE3B,EAASpiD,OAAO4b,OACpBhI,EAAQ+L,QAAO,CAACqkC,EAAKrwC,KACnB,MAAMswC,EAAiB,GAAGtwC,EAAOmF,gBAAgBnF,EAAOrU,OAAOipC,cAC/D,IAAKub,EAAaG,GAAiB,OAAOD,EAE1C,MAAMlrC,EAAenF,EAAOmF,aACtBorC,EAAcF,EAAIlrC,GACtBkrC,EAAIlrC,IAAiBqrC,GAAmCrrC,EAAcuT,EAAcw3B,GActF,OAZIlwC,EAAO2vC,KACTY,EAAW7mD,KAAKjB,KACd+nD,GACExwC,EAAOlO,GACPkO,EAAOrU,MAAQ,UACfwZ,EACAnF,EAAO2vC,IACP3vC,EAAOywC,KACPN,EAAaG,KAIZD,CAAG,GACT,CAAC,IAQN,OANA5B,EAAO/L,QAAQ,CACb/2C,KAAM,YACNpC,MAAO,UACPolD,qBAAqB,EACrBC,cAAc,IAETH,CAAM,EAGf,QAAex/C,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEyoB,MAAOhR,OAChBvR,MAAM4U,GAAG,KAAE2rB,IACT,MAAMme,GAAet+C,EAAAA,EAAAA,KACnBghD,GAA4B,CAC1BxC,OAAQ,CACN0C,aAAaC,GACX,MAAMC,EAA6C,CACjD5rC,WAAY2rC,EAAUhlD,KACtBwZ,aAAcwrC,EAAUlC,OAAO9iD,MAEjCgkC,EAAK,QAASihB,EAChB,MAWN,OAPAnkD,EAAAA,EAAAA,QACE,IAAMuX,EAAE2N,QACPA,IACCm8B,EAAa/jD,MAAM0kD,OAAS98B,CAAK,GAEnC,CAAE/e,WAAW,EAAMlG,MAAM,IAEpB,CAAEohD,eACX,IC9EoT,MCOlT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BhkD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,eAAe,CAACxC,MAAM,CAAC,MAAQE,EAAIqI,OAASrI,EAAI+R,GAAG,0BAA0B,QAAU/R,EAAI+R,GAAG,8BAA8BxJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,gBAAgBmG,GAAG,WAAW,MAAO,CAACxI,EAAIqR,GAAG,iBAAiB,EAAEuB,OAAM,IAAO,MAAK,IAAO,CAACtQ,EAAG,gBAAgBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC,EAAE,gBAAgBzgB,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,cAAc,EAC1a,EACIvgB,GAAkB,GCFmE,GAAU,W,IAAgBN,EAAM,K,EAAC,QAAUE,GAAY,EAAUA,MAAImB,Y,OAAQ,OAAiB,C,MAAC,CAAgB,kBAAkC,QAAUnB,EAAImyB,QAAS,QAAYnyB,MAAe,WAASA,KAAe,gCAAG,UAAC,WAAC,yB,OAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,GAAC,cAAC,E,mBAAgDA,SAAM,iBAAE,EAACpJ,gBAAkB,SAAE,GAAClG,EAAI,WAAK,CAACmG,G,YAAsCjG,EAAW,GAAC,E,IAAOzC,M,oBAAiB,GAAO,KAAC,CAAa,mBAAE,MAAK,CAAgByC,KAAAA,GAAmBzC,MAAM,gB,CAAoB,OAAS,C,YAAC,O,MAA8B,CAAkB,gBAAcE,GAA0C,KAAO,GAAqC,8BAACqB,eAAM,GAACH,YAAW2U,EAAAA,GAAW,mCAACzT,MAAQ,EAAC,iC,MAAmC,CAACb,MAAAA,EAAU,WAAa,qBAAM,EAAE,YAAC,EAAM,WAAC,iBAAW,GAAUiH,E,OAAc,GAAkE,CAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,UAAe,0CAACmG,E,OAAc0N,GAAM,C,IAAE,iB,GAA0BpW,UAAM,K,IAA2E,MAAM,CAACK,EAAG,cAAW+V,CAAuB,OAAG,oEAAoB,UAAS,yB,GAAQ,C,IAAE,Y,GAA0BpW,UAAM,K,IAAkE,MAAM,CAACK,EAAG,cAAW+V,CAAkB,OAAG,2DAA4B,UAAS,oB,GAAQ,C,IAAE,oBAAuF,kBAAI,IAC7xD,2EACG9V,IAEJ,MAASa,I,QCAF,MAAM+mD,GAAkC,CAC3CZ,EACAhwC,KAEA,MAAMkwC,EAAeF,EAAMvmD,KAAKsiB,QAAO,CAACokC,EAAKz9C,KACzC,MAAMzH,EAAM,GAAGyH,EAAIwS,gBAAgBxS,EAAIqS,aAAa4vB,cAEpD,OADAwb,EAAIllD,GAAOyH,EAAI+zC,UACR0J,CAAG,GACX,CAAC,GACJ,OAAOnwC,EAAQxH,KAAKD,IAAC,IACdA,EACHs4C,aAAcX,EAAa33C,EAAE1G,OAC9B,EAUP,QAAe7C,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHyoB,MAAOhR,MACPhX,QAASkC,QACT6sB,aAAc3sB,QAElBqD,QACI,MAAM4rB,GAAWxrB,EAAAA,EAAAA,KAAI,gBACfirB,GAAajrB,EAAAA,EAAAA,MAAI,GACjByrB,GAAezrB,EAAAA,EAAAA,KAAI,IACnBkP,GAAalP,EAAAA,EAAAA,KAAmB,MACtC,MAAO,CAAEwrB,WAAUP,aAAYQ,eAAcvc,aACjD,EACAhV,OACI,MAAO,CACHM,QAAS,CACL,CACIS,KAAME,KAAKiQ,GAAG,gCACd7Q,MAAO,YACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,mCACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,mCACd7Q,MAAO,eACP+wB,UAAU,IAI1B,IChE0S,M,uBCAxF,GAAe,KCQjO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCnBhC,IAAe7rB,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAE6hD,aAAYA,IAC1B7nD,MAAO,IAAK6nD,GAAa7nD,MAAOgI,MAAOnF,UCNuQ,M,uBCAxF,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCJhC,IAAekD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAC,MACRgG,WAAY,CAAE8hD,iBAAgB,GAAEC,gBAAeA,IAC/C//C,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,uBAClB,EACAlR,OACI,MAAO,CACHuW,QAAS,GACTixC,cAAe,GACfC,gBAAiB,GACjBC,sBAAuB,GACvBvD,YAAa,KAErB,EACAnjD,UACIC,KAAK0mD,iBACT,EACAhkD,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,KAEjBltB,QAAS,CACLu3C,iBAAiBz3C,GACb,MAAM,aAAEyb,EAAY,WAAEH,GAAetb,EACrCiB,KAAKiS,QAAQnU,KAAK,2BAA2B0c,KAAgBH,IACjE,EACAs3B,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,mBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,wBAC1B,EACA9K,wBACI,MAAOmQ,EAASgwC,EAAOp3C,SAAgB3I,QAAQwI,IAAI,CAAC/N,KAAK2mD,gBAAiB3mD,KAAK4mD,kBAAmBr5C,EAAAA,kBAAkCvN,KAAKyrB,YAAYsC,gBACrJ/tB,KAAKsV,QAAU4wC,GAAgCZ,EAAOhwC,GAASyC,QAAOuP,GAAKA,EAAE6+B,aAAe,IAC5FnmD,KAAKwmD,gBAAkBxmD,KAAKsV,QAC5BtV,KAAKumD,cAAgBlB,GAAkCC,EAAOhwC,EAAStV,KAAKyrB,YAAYsC,aAAc7f,GACtGlO,KAAKymD,sBAAwBzmD,KAAKumD,aACtC,EACAI,eAAen+B,EAAAA,GAAAA,IAAQ,kBAAkBrjB,iBACrC,IACI,aAAagb,EAAAA,EAAAA,KAAAA,IAAe,gBAAgBzS,MAAMG,GAAMA,EAAE9O,M,CAC5D,MAAOuK,IACL5J,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,uC,CAE3B,IACA22C,iBAAiBp+B,EAAAA,GAAAA,IAAQ,uBAAuBrjB,iBAC5C,IACI,MAAM+a,EAAS,CACX6B,IAAK7K,GAAON,MAAMqB,KAAK,GAAI,QAAQI,QAAQ,OAAO9J,SAClD+S,IAAKpK,GAAON,MAAMuB,MAAM,OAAO5J,UAEnC,aAAa4R,EAAAA,EAAAA,KAAAA,IAAe,mBAAoB,CAAED,WAAUxS,MAAMG,GAAMA,EAAE9O,M,CAC5E,MAAOuK,IACL5J,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,4C,CAE3B,KAEJnO,MAAO,CACHohD,YAAa,CACTlhD,QAAQgG,GACJ,GAAU,IAAPA,GAAoB,GAAPA,EAGZ,OAFAhI,KAAKwmD,gBAAkBxmD,KAAKsV,aAC5BtV,KAAKymD,sBAAwBzmD,KAAKumD,eAGtCvmD,KAAKwmD,gBAAmBxmD,KAAKsV,QAAQyC,QAAOuP,GAAKA,EAAE6+B,aAAen+C,IAElE,MAAM6+C,EAAOxgD,KAAKsf,MAAMtf,KAAKC,UAAWtG,KAAKumD,gBAAiBxuC,QAAOuP,GAAMA,EAAEvoB,MAAQuoB,EAAEvoB,MAAM+nD,MAAK/oB,GAAKA,EAAE6mB,EAAI58C,MAAUsf,EAAEvoB,OACzH8nD,EAAK7sC,SAAQ0C,IACNA,EAAQ3d,OACP2d,EAAQ3d,KAAO2d,EAAQ3d,KAAKgZ,QAAOuP,GAAKA,EAAEs9B,EAAI58C,I,IAGtDhI,KAAKymD,sBAAwBI,CACjC,MC5FoS,M,uBCAxF,GAAe,KCOnO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBuN7oD,GAAM,W,IAAC,O,EAA4DyyC,EAAAA,MAAAA,GAAmC,oB,OAAC,aAAW,kBAAE,MAAC,CAAChqC,MAAW,EAACvI,GAAI+Q,yBAAK1O,KAAI,S,EAAwB,KAAYlC,CAAE,EAAC,eAAe0oD,CAAAA,EAAAA,cAAiBhjB,C,MAAyB,CAACjzB,MAAM,gDAAM,gCAAgBpK,SAAG,I,YAA+E,OAACoK,IAAK,UAAO,cAAM,MAAC,MAAa,IAAC,gDAAC9S,EAAO,OAAO,G,CAAmF,IAAE,WAAC,cAAc,4DAACyI,EAAqBlG,OAAI,O,EAAwB,cAAe,C,MAAsD,CAACuQ,MAAM,6CAAM,gCAAgBpK,SAAG,I,YAA4E,OAACoK,IAAK,UAAO,cAAK5S,MAAIutB,CAAAA,EAAAA,GAAYgB,IAAAA,EAAS/hB,GAAAA,EAAS,sBAAsB,IAAK,YAAgBjK,EAA4BzC,OAAM,GAAC,CAAoD,eAAc,cAACy1B,MAAS,mDAAC,E,OAAyB,OAAmC,yEAAChtB,YAAYvI,gB,MAAa,CAAUwI,MAAG,KAAU,qC,SAASxI,I,SAAkN,CAAK,MAAC,YAACqC,OAAI,wBAAWmG,G,YAAyD,O,iBAAoF,WAAC,MAAM,CAACrI,EAAG,GAAG,IAAKuS,EAAG1S,IAAI6yC,EAAAA,sBAAyB,gCAAM,8GAAEjgC,OAAM,GAAM,CAAyB,IAAKhC,WAA4B9Q,GAAK,WAAE,MAAQE,CAAAA,EAAI+R,yBAAG,CAAqC,OAAmB,MAAcgL,EAAAA,qBAAS,EAAsB,8CAAQ,SAAgB,EAAC,oCAACjd,EAAO,WAAuB,MAAOE,EAAIy1B,cAAa,WAAcz1B,EAAI8oD,eAAAA,CAA8B,MAAC,CAAG,MAAC,0CAAC,aAAYnzB,MAAoB,6CAA2BpzB,CAAAA,EAAAA,iBAAkB,CAACzC,MAAM,CAAC,WAAQ,UAAwB,oBAAIwC,YAAG,qBAAmB,a,GAAQ,CAA0B,QAAY,yBAAqE,oBAAuB,CAAkB,mBAAG,MAAK,CAAkD,MAAC,2BAA+B,uBAAG,MAAI,CAAYxC,MAAM,gBAAC,WAAY,qBAAM,2CAACuB,QAAM,kCAAuCe,IAAAA,GAAS,yBAAe,iB,GAACpC,CAAiC,MAAC,wBAAuC,QAAE,MAAK,CAAUF,YAAM,O,MAAmB,CAAS,kCAAIwC,SAAG,SAAe,GAACC,EAAAA,0BAAY,CAAYD,EAAaxC,WAAM,8BAAU,SAAE,MAAMK,CAA0FoC,MAAW,UAAUvC,KAAO,K,CAA2Q,OAAQ,C,YAAqB+oD,W,CAAiC,OAAC,OAAIzmD,KAAG,K,CAA+B,KAAM,mBAAG,oD,YAAS,QAA2C,+PAAE,GAAI,CAAWxC,MAAM,YAAC,EAAM,2BAAC,CAAE,KACpxG,eACGM,MAAAA,CAEJ,KAASa,G,uICJLA,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,MAAM,CAACqE,IAAI,QAC9G,EACIvG,GAAkB,GCetB,MAAM4oD,GAAqB,EACrB5rB,GAAa,IACbC,GAAuB,MACvBC,GAA4B,MAQrB2rB,GAA0C,CACnDxqB,EACAC,KAEA,MAAM,YAAEC,EAAW,WAAEC,EAAU,YAAEC,GAAgBH,GAAQ,CAAC,EACpDK,EAAoD,GACpDmqB,EAAwB,CAAC,EACzBlqB,EAAUH,GAA4BlG,IAC3C8F,GAAalb,WAAa,IAAI0b,UAAUnjB,SAAQ,CAAC0H,EAAGzH,KACjDmtC,EAAOntC,EAAIqhB,IAAc5Z,EAAEva,GAC3B,MAAMvI,EAAQs+B,EAAQjjB,EAAIijB,EAAQlmB,QAC5BomB,EAAY,OAAOx+B,KACnBy+B,EAAwC,CAC1Ct+B,KAAM,GACNynB,OAAmB,KAAX9E,EAAEzjB,KAAc,SAAWyjB,EAAE1gB,OAChC67B,EAAc,KAAKA,KAAiB,IACzCS,gBAAiB5b,EAAE6b,QACbC,KAAAA,KAAa,WAAY,UAAW,WACpCJ,EACN3C,YAAa,QACbgD,qBAAsB/b,EAAE6b,QAClBC,KAAAA,KAAa,WAAY,UAAW,WACpC,UACN5C,YAAa,EACb8C,MAAOhc,EAAE6b,QAAUhC,GAAwBD,GAAarhB,EACxD0jB,MAAOb,GAA0B,UAErCpb,EAAEmc,aAAa7jB,SAAS4hB,IACpByB,EAAQt+B,KAAKjB,KAAK,CACdwpB,EAAG,IAAInO,KAAKyiB,EAAEra,WAAWuc,UACzBC,EAAGnC,EAAEyrB,MACP,IAENpqB,EAASn/B,KAAKu/B,EAAQ,IAE1B,MAAMiqB,EAA+C,CACjDvoD,KAAM49B,EAAY4qB,iBAAiBz5C,KAAK8tB,IAAC,CACrCtU,EAAG,IAAInO,KAAKyiB,EAAEra,WAAWuc,UACzBC,EAAGnC,EAAE4rB,QAEThhC,MAAO,sBAAwBqW,EAAc,KAAKA,KAAiB,IACnE5+B,KAAM,OACN28B,YAAa,EACb0C,gBAAiB,uBACjB7C,YAAa,uBACbwmB,MAAM,EACNC,QAAS,GACTC,QAAS,KACTzjB,MAAOwpB,IAGX,OADAjqB,EAASn/B,KAAKwpD,GACP,CAAC,CACJ9tB,OAAQ,GACRyD,YACDmqB,EAAO,EAGDK,GAAgC,CACzC9qB,EACA+qB,GAAU,KAEV,MAAMzqB,EAAoD,GACpDmqB,EAAwB,CAAC,EA0B/B,IAzBCzqB,GAAalb,WAAa,IAAI0b,UAAUnjB,SAAQ,CAAC0H,EAAGzH,KACjDmtC,EAAOntC,EAAIqhB,IAAc5Z,EAAEva,GAC3B,MAAMvI,EAAQi4B,GAAkB5c,EAAI4c,GAAkB7f,QAChDomB,EAAY,OAAOx+B,KACnBy+B,EAAwC,CAC1Ct+B,KAAM,GACNynB,MAAO9E,EAAE1gB,KACTs8B,gBAAiB5b,EAAE6b,QACbC,KAAAA,KAAa,WAAY,UAAW,WACpCJ,EACN3C,YAAa,QACbgD,qBAAsB/b,EAAE6b,QAClBC,KAAAA,KAAa,WAAY,UAAW,WACpC,UACN5C,YAAa,EACb8C,MAAOhc,EAAE6b,QAAUhC,GAAwBD,GAAarhB,GAE5DyH,EAAE3b,QAAQiU,SAAS4hB,IACfyB,EAAQt+B,KAAKjB,KAAK,CACdwpB,EAAG,IAAInO,KAAKyiB,EAAEra,WAAWuc,UACzBC,EAAGnC,EAAE+rB,MACP,IAEN1qB,EAASn/B,KAAKu/B,EAAQ,KAErBqqB,EAAS,CACV,MAAMJ,EAA+C,CACjDvoD,KAAM49B,EAAY4qB,iBAAiBz5C,KAAK8tB,IAAC,CACrCtU,EAAG,IAAInO,KAAKyiB,EAAEra,WAAWuc,UACzBC,EAAGnC,EAAEja,QAET6E,MAAO,qBACPvoB,KAAM,OACN28B,YAAa,EACb0C,gBAAiB,uBACjB7C,YAAa,uBACbwmB,MAAM,EACNC,QAAS,GACTC,QAAS,KACTzjB,MAAOwpB,IAEXjqB,EAASn/B,KAAKwpD,E,CAElB,MAAO,CAAC,CACJ9tB,OAAQ,GACRyD,YACDmqB,EAAO,EAGDppB,GACTC,IAEA,MAAMZ,EAAwC,CAC1Ct+B,KAAM,GACNynB,MAAO,WACP8W,gBAAiBE,KAAAA,KAAa,WAAY,UAAW,QACrD/C,YAAa,QACbG,YAAa,EACb8C,MAAOlC,IASX,OAPCyC,GAAmB7c,WAAa,IAAIpH,SAAS4hB,IAC1C,MAAMwC,EAAoB,IAAIjlB,KAAKyiB,EAAEra,WAAWuc,UAChDT,EAAQt+B,KAAKjB,KAAK,CACdwpB,EAAG8W,EACHL,EAAGnC,EAAEuC,UACP,IAEC,CACH3E,OAAQ,GACRyD,SAAU,CAACI,GACd,EAiBL,QACIiE,EACA1jC,EACA2jC,KAEA,MAAM,QAAEhD,EAAO,YAAEjnB,EAAW,KAAErZ,EAAI,QAAEoiC,GAAYziC,EAE1CkD,EAAQ4gC,iBAAiBJ,GACzBK,EAAgB7gC,EAAM8gC,iBACxBC,IAEEC,EAAehhC,EAAM8gC,iBACvBC,IAEES,EAAmB,CAACxX,GAAIpO,GAAUlN,KACpC,IAAKkN,EAAS,OACd,MAAM2gB,EAAU7tB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cAEvCmD,GAAWA,EAAQK,QAAUlC,IAC9B6B,EAAQK,QAAUwpB,IAElB3oB,GACAA,EAAQ,CACJhmB,MAAO8kB,EAAQK,MACfH,QAASF,EAAQK,QAAUnC,GAC3Bv6B,KAAMq8B,EAAQ7W,O,EAIpBie,EAAc,CAChBnd,EAAG,CACCrpB,KAAM,OACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,GAEX8C,KAAM,CACFhmC,MAAO,oBAEXimC,KAAM,IACNjN,KAAM,CACFjX,KAAMrJ,GAAe9F,GAAAA,QAAsB,QAAU,OAEzDszB,OAAQ,QACRxjB,IAAK,IAAInI,KAAKknB,GAAWlnB,KAAK4rB,OAAOjH,WAEzCC,EAAG,CACC9/B,KAAM,SACNymC,SAAS,EACTC,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,MAAO,GAAGA,EAAM2kC,QAAQ,WAC5B,GAEJa,KAAM,CACFhmC,MAAO+iC,GAEX5f,IAAK,EACL8iB,KAAM,IACNt+B,MAAO,CACHzG,KAAM,qBACNlB,MAAOkjC,EACPvJ,SAAS,GAEboF,MAAO,IACPpF,SAAS,IAGZ36B,EAAQ8pD,UACTjjB,EAAO6c,GAAK,CACRrjD,KAAM,SACNymC,SAAS,EACTn+B,MAAO,CACHzG,KAAM,eACNy4B,SAAS,EACT35B,MAAOkjC,GAEX6C,MAAO,CACH/lC,MAAOkjC,EACPxhC,SAASlB,GACL,OAAOA,EAAM2kC,QAAQ,GAAK,MAC9B,GAEJnD,SAAU,QACVgE,KAAM,CACF2c,iBAAiB,KAI7B,MAAM/xC,EAAQ,IAAI4a,GAAAA,GAAMkX,EAAW,CAC/BrjC,KAAMA,GAAQ,MACdc,KAAM,CACFy6B,OAAQ,GACRyD,SAAU,IAEdr/B,QAAS,CACL68B,YAAa,kBACbnB,QAAS,CAGLoJ,WAAY,CAERvJ,YAAaoI,GAEjBh7B,MAAO,CACHgyB,SAAS,GAEbgB,OAAQ,CACJhB,SAAS,EACTiB,OAAQ,CACJ56B,MAAOkjC,IAGfwB,QAAS,CACLC,UAAW,CACP/c,MAAMpS,GACF,MAAO,CAACA,EAAKipB,QAAQ7W,MACzB,EACAgd,WAAWpvB,GACP,MAAMipB,EAAUjpB,EAAKipB,QACfoG,EAAkBpG,EAAQt+B,KAC1B2kC,EAAoBD,EAAOrvB,EAAKuvB,WAChCC,EAAeH,EAAO31B,KAAK0iB,GAAaA,EAAEuN,IAC3C1c,QAAO,CAACmP,EAAGC,IAAMD,EAAIC,IACpBoT,EAAiBD,EACnBvG,EAAQt+B,KAAKiY,OACX8sB,GACDJ,EAAW3F,EAAI8F,GAChBA,EAAiB,IACrB,MAAO,CACH,UAAUH,EAAW3F,EAAEgG,QAAQ,YAC/B,GACID,EAAsB,EAChB,IAAMA,EAAoBC,QAAQ,GAClCD,EAAoBC,QAAQ,kBAG9C,GAEJlB,KAAM,UAGdqB,YAAa,CACTC,WAAW,EACXtB,KAAM,WAEVuB,QAAQvgC,GAAQ6Y,IACZ,IAAI2nB,EAAY,UAChB,GAAI3nB,EAAS,CACT,MAAM2gB,EAAU7tB,EAAMzQ,KAAKk+B,SAASvgB,EAAQwd,cAExCmD,GACAA,EAAQK,QAAUlC,IAClB6B,EAAQK,QAAUwpB,KAElB7iB,EAAY,U,CAGnBxgC,EAAMygC,OAAO3kB,OAAuB7e,MAAM84B,OAASyK,CACxD,EACAE,YAAY,EACZC,qBAAqB,EACrBjG,QAAQzT,GAAIpO,GAAUlN,GAClB8yB,EAAiBxX,EAAG,CAACpO,GAAUlN,EACnC,EACAi1B,UAEJnL,QAAS,CAACP,MAEd,OAAOvpB,CACV,EC3UD,IAAelL,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACH+Y,YAAalW,OACbrC,KAAM2C,OACNJ,OAAQF,OACRi/B,QAASj/B,OACTsmD,QAASxmD,SAEbuD,MAAM4U,GAAG,KAAE2rB,IACP,MAAMC,GAAOpgC,EAAAA,EAAAA,KAAoB,MAC3BqgC,GAASrgC,EAAAA,EAAAA,KAAuB,MAChC00B,GAAS10B,EAAAA,EAAAA,KAAoB,MAC7BsgC,GAAkBtgC,EAAAA,EAAAA,KAAoB,MAEtCwgC,EAAc,KAChB,IAAKhsB,EAAEta,KAAM,OACb,IAAKkmC,EAAK7lC,MAAO,OACjB6lC,EAAK7lC,MAAMkmC,UAAY,GACvBL,EAAK7lC,MAAMmmC,UAAUttB,IAAI,mBAEzBktB,EAAgB/lC,MAAQ2L,SAASutB,cAAc,OAC/C6M,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,0BAEpCitB,EAAO9lC,MAAQ2L,SAASutB,cAAc,UACtC4M,EAAO9lC,MAAMmmC,UAAUttB,IAAI,gBACV,SAAboB,EAAE/X,QACF4jC,EAAO9lC,MAAMmmC,UAAUttB,IAAI,qBAC3BgtB,EAAK7lC,MAAMmmC,UAAUttB,IAAI,eACzBktB,EAAgB/lC,MAAMmmC,UAAUttB,IAAI,sBAEpCitB,EAAO9lC,MAAM0B,MAAMQ,OAAS+X,EAAE/X,QAAU,QAG5Ci4B,EAAOn6B,MAAQ2L,SAASutB,cAAc,OACtCiB,EAAOn6B,MAAM+H,GAAMiK,KAAK4xB,MAAsB,IAAhB5xB,KAAKC,UAAoBC,WACvDioB,EAAOn6B,MAAMkmC,UAAW,GACxB/L,EAAOn6B,MAAMmmC,UAAUttB,IAAI,gBAC3BshB,EAAOn6B,MAAM0B,MAAM0kC,UAAYnsB,EAAE/X,QAAU,QAE3C6jC,EAAgB/lC,MAAM05B,YAAYoM,EAAO9lC,OACzC6lC,EAAK7lC,MAAM05B,YAAYqM,EAAgB/lC,OACvC6lC,EAAK7lC,MAAM05B,YAAYS,EAAOn6B,OAC9B,MAAMoQ,EAAQo4C,GAAuB1iB,EAAO9lC,MAAO,CAC/CkY,YAAa+B,EAAE/B,YACfinB,QAAQ16B,GACJmhC,EAAK,QAASnhC,EAClB,EACAw8B,QAAShnB,EAAEgnB,QACXqnB,QAASruC,EAAEquC,UAAW,GAE1BnuB,EAAOn6B,MAAM+H,IACbqI,EAAMzQ,KAAOsa,EAAEta,KACfyQ,EAAM6qB,QAAQ,EAUlB,OARAqL,EAAAA,EAAAA,YAAU,KACNL,GAAa,KAEjBvjC,EAAAA,EAAAA,QACI,IAAMuX,EAAEta,OACR,IAAMsmC,KACN,CAAEp9B,WAAW,EAAMlG,MAAM,IAEtB,CAAEkjC,OAAMC,SAAQG,cAC3B,EACAvjC,MAAO,CACH,sBAAuB,CACnBE,UACIhC,KAAKqlC,aACT,MCtFoS,MCO5S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB4B,GAAU,W,IAAgBrnC,EAAM,K,EAAC,QAAUE,G,OAAY,OAAcmB,C,MAAQ,CAAkB,UAAc,Q,QACjK+yC,EAAAA,QACJ,cAAE,gBAAC3rC,oBAAoB,iB,YAAuCvI,EAAI8oB,GAAAA,CAAAA,C,IAA8BhpB,U,oBAAgB,SAAqH,gBAAE,OAAIE,MAAO,UAAwBuC,KAAAA,KAA6E,6BAACqQ,YAAM,iBAAM,6CAApP,gBAAE,MAAMzS,CAA6EL,KAAM,K,CAAmB,KAAM,mBAAC,8BAAgIuC,EAAmBmG,OAAG,G,CAAgB,IAAE,e,GAAC,UAAW,K,UAE1V,kBAAE,MAAMrI,CAAoC,6JAAS,WAAa,uBAACqI,G,CAAmB,IAAE,e,GAAC,UAAW,K,UAEpG,kBAAE,MAAMrI,CAAoC,6JAAS,WAAa,uBAACqI,G,CAAmB,IAAE,e,GAAC,UAAW,K,UAEpG,kBAAE,MAAMrI,CAAoC,6JAA8C,GAAO,+B,KAA4B,GAAC,gBAAS,c,MAAE+V,CAAK,IAAE,kB,GAAC,UAAW,K,IAAkC,MAAM,CAAC/V,EAAG,IAAG,CAAiFoC,IAAAA,EAAsC,YAAY,aAA6D,8EAAE,uCAAQ,GAAC,GAAI,sDAAG,EAE5dnC,KAAAA,MAAAA,I,QCLG,MAOMupD,GAAwCjoC,GAC5CA,GAAQ7gB,MAAMiY,OACZ4I,EAAO7gB,KAAK,GAAG29C,cADY,GAYzBoL,GAAmCloC,IAC5C,IAAKA,GAAQ7gB,MAAMiY,OACf,MAAO,GAEX,MAAMwlC,EAAS,IAAIC,IAyBnB,OAxBA78B,EAAO7gB,KAAKib,SAAS5F,IACjB,MAAM2zC,EAAW3zC,EAAKmN,UAAU7J,UAAU,EAAG,GACvCswC,EAAS,GAAGlvC,OACd1E,EAAKsoC,cAAc,GAAGC,SACG,MAAzBvoC,EAAKsoC,cAAc,GAAatoC,EAAKsoC,cAAc,GAAGC,SAAW,QACxC,MAAzBvoC,EAAKsoC,cAAc,GAAatoC,EAAKsoC,cAAc,GAAGC,SAAW,SAE/DsL,EAAO7zC,EAAK6zC,KACZtmC,EAAMvN,EAAKuN,IACjB,GAAK66B,EAAOp0B,IAAI4/B,GAST,CACH,MAAMtV,EAAM8J,EAAOpyC,IAAI49C,GACvBtV,EAAIuV,KAAKF,GAAYE,EACrBvV,EAAI/wB,IAAIomC,GAAYpmC,C,KAZC,CACrB,MAAMumC,EAAqC,CACvC36B,QAASnZ,EAAKsoC,cAAc,GAC5BjvB,QAAkC,MAAzBrZ,EAAKsoC,cAAc,GAAatoC,EAAKsoC,cAAc,GAAK,KACjEhvB,QAAkC,MAAzBtZ,EAAKsoC,cAAc,GAAatoC,EAAKsoC,cAAc,GAAK,KACjEuL,KAAM,CAAE,CAACF,GAAWE,GACpBtmC,IAAK,CAAE,CAAComC,GAAWpmC,IAEvB66B,EAAOz1B,IAAIihC,EAAQE,E,KAOpB,IAAI1L,EAAOQ,WAAWlvC,KAAI,EAAE,CAAEuC,KAAOA,GAAE,EAGlD,QACI9R,MAAO,CACHyoB,MAAOhR,MACPgM,WAAYhM,MACZ+X,aAAc3sB,OACdpC,QAASkC,SAEbwB,SAAU,CACNylD,eACI,OAAOnoD,KAAKX,QAAQ0Y,QAAQwY,IAAOA,EAAEnxB,MAAM6oC,WAAW,WAC1D,EACA5oC,UACI,IAAKW,KAAKgiB,aAAehiB,KAAKgnB,MAAO,MAAO,GAE5C,MAAM3nB,EAAU,GAChBW,KAAKgiB,WAAWhI,SAAQ,CAACmO,EAAqClO,KACtDkO,GACA9oB,EAAQvB,KAAK,CACTgC,KAAMqoB,EAAEhT,OACR/V,MAAO,SAAS6a,EAAI,IACpBkW,UAAU,EACV5X,MAAO,IAAIY,MAAM,OAAmBc,I,IAKhD,MAAMmuC,EAAY,IAAIlgC,IActB,OAbAloB,KAAKgnB,MAAMhN,SAAS5F,IAChB1S,OAAOyN,KAAK,IAAKiF,EAAK6zC,QAAS7zC,EAAKuN,MAAO3H,SAASzZ,IAC3C6nD,EAAUhgC,IAAI7nB,KACf6nD,EAAUnwC,IAAI1X,GACdlB,EAAQvB,KAAK,CACTgC,KAAMS,EACNnB,MAAOmB,EACP4vB,UAAU,EACV5X,MAAOrB,GAAON,IAAIrW,GAAKsX,W,GAGjC,IAECxY,EAAQo/B,MAAK,CAACjO,EAAGC,IAAMD,EAAEjY,MAAQkY,EAAElY,OAC9C,GAEJtZ,QAAS,CACL6sC,YACI,MAAMgM,EAAyB93C,KAAKX,QAAQyO,KAAKmM,GAAMA,EAAE7a,QACnDk0C,EAAwBtzC,KAAKgnB,MAAMlZ,KAAKhI,GAC1CgyC,EAAahqC,KAAKs8B,IACd,GAAIA,EAAOnC,WAAW,UAAW,CAC7B,MAAMogB,EAAYviD,EAAOskC,GACzB,OAAOie,EAAU1L,Q,CAEjB,OAAO72C,EAAOmiD,KAAK7d,E,MAI/BkJ,EAAUyE,QAAQ/3C,KAAKX,QAAQyO,KAAKmM,GAAMA,EAAEna,QAC5CuyC,GAAAA,UAAqBiB,EAAW,kBACpC,ICnHwS,MCO5S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBY9yC,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAwP,oB,OAAC,EAAM,WAAC,4NAAc,MAAC,CAAG,KAAC,gB,GAA0BtC,CAA0B,kBAAC,oBAAIA,I,CAA+EkB,EAAAA,GAAOlB,iBAAIoqD,EAAgB,2C,MAAChoD,C,MAA6BgoD,EAAAA,gBAAmB,SAAC,YAAC7oD,EAAAA,gBAAW,CAAiB,EAAI,WAAG,sBAE3mBnB,EAEJ,E,MCJ4CkC,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAqB,oB,OAAC,gBAAYpB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAA8C,8BAAuB,C,MAAiB,CAAkB,QAAQxR,EAAM,MAAC,oBAAoC,QAAWA,MAA8C,+CAACuI,SAAYvI,EAAI+Q,GAAI,wC,YAAkB,KAAU,E,IAAC,U,GAA0BvO,W,MAAI,GAAO,cAAUmP,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAsB,EAAC,MAAM,EAAc,sBAAgB,IAC1uB,UAGD,E,iBCJ4CA,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAmB,oB,OAAC,cAAiB,C,MAAC,CAAwB,MAAS,EAACtC,MAAY,oBAACuI,QAAYvI,EAAI+Q,S,YAAsB,EAAS,K,IAAEW,U,GAAQgC,UAAAA,OAAO,EAAC,MAAC,I,MAA+C,GAAS,GAAC1T,UAAS,MAAC,OAAS,EAAa,QAAQ0T,EAAAA,MAAO,QAAC,oBAAerS,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAIe,WAAG,UAAyE,CAACtC,EAAG,KAAc,CAAC,EAAEsC,QAAQ,iBAACC,YAAY,aAAa,CAACvC,EAAIG,GAAG,oBAAuB,CAAoD,YAAU,a,CAAMkC,EAAG,GAAC0Z,4BAAAA,EAAAA,QAAAA,EAAAA,GAAAA,EAAAA,OAAAA,SAAAA,EAAAA,GAAC,OAAM,OAAM/b,CAAkH,IAAK,GACtzB,qGACD,IAAII,MAAAA,EAEJ,E,MCAA,IAAegG,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CACLS,QAASkC,QACT8lB,MAAOhR,MACPzP,MAAOnF,OACPoF,SAAUpF,QAEZqD,MAAMqmB,GAAG,KAAEka,IACT,MAAMlxB,EAAe9L,IACnBg9B,EAAK,QAASh9B,EAAI,GAEd,aAAE+lB,IAAiBqX,EAAAA,GAAAA,IAAYjZ,MACrC,MAAO,CACLxtB,OAAOkG,EAAAA,EAAAA,MAAI,GACXkpB,eACAja,cAEJ,ICrBwT,M,uBCAxF,GAAe,KCO7O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCjBhC,IAAexP,EAAAA,EAAAA,iBAAgB,CAC7BC,WAAY,CAAEgkD,yBAAwBA,IACtChqD,MAAO,CACLa,MAAO8B,SAETuD,MAAM4U,GACJ,MAAMzB,EAAW,IAAIuB,KACrBvB,EAAS4wC,SAAS5wC,EAAS6wC,WAAa,GACxC,MAAMC,EAA6C,CACjD9wC,SAAUA,EAASgD,cACnB/C,QAAQ,IAAIsB,MAAOyB,cACnBtD,YAAa9F,GAAAA,SAETwV,GAAQniB,EAAAA,EAAAA,KAAI,IAYlB,OAXA/C,EAAAA,EAAAA,QACE,IAAMuX,EAAEja,QACR+F,MAAO6C,EAAKuW,KACLvW,IAAOuW,GACZ8D,GAAqBqmC,GAAiBh7C,MAAMG,IAC1CmZ,EAAM5nB,MAAQyO,CAAC,GACf,GAEJ,CAAE5F,WAAW,IAGR,CAAE+e,QACX,IC/B0T,M,uBCAxF,GAAe,KCO/O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QClBhC,IAAe1iB,EAAAA,EAAAA,iBAAgB,CAC7BC,WAAY,CAAEokD,2BAA0BA,IACxClkD,QACE,MAAM6jD,GAAkBzjD,EAAAA,EAAAA,MAAI,GAC5B,MAAO,CAAEyjD,kBACX,ICTmT,MCOjT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCIhC,IAAehkD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAC,MACRgI,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,wBAClB,EACA1L,WAAY,CACRqkD,eAAc,GACdC,eAAc,GACdC,oBAAmBA,IAEvB/oD,UACIC,KAAK+oD,mBACL/oD,KAAKgpD,sBAAsBhpD,KAAKgnD,oBAChChnD,KAAKsxC,2BACLtxC,KAAKuxC,yBACT,EACAxyC,OACI,MAAO,CACH0xC,cAAev5B,GAAON,MAAMrI,OAAO,QACnCglB,cAAerc,GAAON,MAAMqB,KAAK,EAAG,UAAU1J,OAAO,QAErDw4C,iBAAkB,EAClBkC,gBAAiB,EACjBC,cAAe,EACfC,aAAc,EAEdC,gBAAiB,EACjBC,eAAgB,EAEhBrC,mBAAoB,CAChB9tC,aAAc,MACd5B,YAAa9F,GAAAA,QACb8H,YAAa,GACboB,YAAa,YAEjBiZ,aAAc,CAAEsJ,SAAU,GAAIzD,OAAQ,IACtC6G,aAAShzB,EACTi8C,eAAgB,KAChBx1B,cAAe,GACf+rB,mBAAoB,GACpBnP,sBAAuB,CAAC,EACxBC,qBAAsB,CAAC,EAEvBsW,2BAA2B,EAC3B37B,aAAc3mB,EAAAA,EAAAA,MAAa4kD,cAEnC,EACAznD,MAAO,CACH0nD,cAAe,CACXxnD,QAAQpE,GACCA,IACDoC,KAAKib,MAAMC,GAAG,yBAClBlb,KAAKypD,iBAAiB7rD,GAC1B,EACAqK,WAAW,EACXlG,MAAM,IAGdW,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACb4kB,2BACI,GAAI/wC,KAAKib,MAAMC,GAAG,6BAA+Blb,KAAK2wC,qBAClD,OAAO3wC,KAAKiQ,GAAG,0CAEnB,MAAM7Q,EAAQY,KAAK2wC,qBAAqB4K,iBACxC,YAAcluC,IAAVjO,EACOY,KAAKiQ,GAAG,0CAEL,IAAV7Q,GAAyB,gBAAVA,EACRY,KAAKiQ,GAAG,8CAEL,IAAV7Q,GAAyB,YAAVA,EACRY,KAAKiQ,GAAG,0CAEL,IAAV7Q,GAAyB,kBAAVA,EACRY,KAAKiQ,GAAG,gDAEL,IAAV7Q,GAAyB,mBAAVA,EACRY,KAAKiQ,GAAG,iDAEZjQ,KAAKiQ,GAAG,yCACnB,GAEJhR,QAAS,CACL+pD,uBAAuBxgC,EAAAA,GAAAA,IAAQ,wBAAwBrjB,eAAqCvH,GACxF,MAAM8rD,EAAc7hB,GAA2BjqC,GAC/C,IAAK8rD,EAAa,OAClB,MAAOC,EAAgBC,SAA0BrkD,QAAQwI,IAAI,CACzD6T,GAAQhkB,EAAQ8c,YAAagvC,GAC7B7nC,GAAgB6nC,EAAa9rD,EAAQsb,iBAElCi/B,EAAcmR,GAAkB7B,GAA8BkC,GACrE3pD,KAAKspD,eAAiBA,EACtB,MAAMO,EAAkB7rB,GAAoC4rB,GAC5D5pD,KAAK2zB,aAAe,CAChB6F,OAAQ,IAAI2e,EAAa3e,UAAWqwB,EAAgBrwB,QACpDyD,SAAU,IAAIkb,EAAalb,YAAa4sB,EAAgB5sB,WAE5Dj9B,KAAKqgC,QAAUupB,GAAkBzoC,cAAgBuoC,EAAY7xC,OAC7D7X,KAAKopD,gBAAkBO,EAAeG,UACtC9pD,KAAKqpD,eAAiBM,EAAeI,SACrC,MAAM1Y,EAAKn6B,GAAON,MACZozC,EAAK9yC,GAAON,MAAMqB,KAAK,EAAG,UAChCjY,KAAK+mD,iBAAmB4C,EAAeM,oBAAoB5Y,EAAG9iC,OAAO,WAAW8iC,EAAG9iC,OAAO,QAAU,EACpGvO,KAAKipD,gBAAkBU,EAAeO,mBAAmB7Y,EAAG9iC,OAAO,WAAW8iC,EAAG9iC,OAAO,QAAU,EAClGvO,KAAKkpD,cAAgBS,EAAeM,oBAAoBD,EAAGz7C,OAAO,WAAWy7C,EAAGz7C,OAAO,QAAU,EACjGvO,KAAKmpD,aAAeQ,EAAeO,mBAAmBF,EAAGz7C,OAAO,WAAWy7C,EAAGz7C,OAAO,QAAU,CACnG,IACAw6C,kBAAkBvgC,EAAAA,GAAAA,IAAQ,oBAAoBrjB,iBAC1C,IACI,MAAM4c,EAAM7K,GAAON,MAAMqB,KAAK,EAAG,UAAUI,QAAQ,SAASuC,cACtD0G,EAAMpK,GAAON,MAAMuB,MAAM,SAASyC,cAClCuvC,EAAOnqD,KAAKyrB,YAAYkC,eAAe5U,KAAK,KAC5C6kC,QAAuCz9B,EAAAA,EAAAA,KAAAA,IACpC,oCAAoC4B,SAAWT,gBAAkB6oC,KACrEz8C,MAAM08C,GAASA,EAAKrrD,OACzBiB,KAAK8zB,cAAgBg0B,GAAgClK,GACrD59C,KAAK6/C,mBAAqBgI,GAAqCjK,E,CACjE,MAAOh4C,KACLlG,EAAAA,EAAAA,IAAW,wCACXM,KAAK8zB,cAAgB,GACrB9zB,KAAK6/C,mBAAqB,GAC1B7/C,KAAK4+C,cAAgB,GACrB5+C,KAAKw/C,aAAe,C,CAE5B,IACA3rB,sBAAqB,MAAEtb,EAAK,QAAEglB,IAC1B,GAAIA,EACAv9B,KAAKgnD,mBAAmB1tC,YAActZ,KAAKgnD,mBAAmB1tC,YAAc,QACzE,GAAItZ,KAAKgnD,mBAAmBtsC,aAAautB,WAAW,QAAkB,CACzE,MAAMxF,EAAiBziC,KAAKspD,eAAe/wC,GACrCtD,EAAM,GAAGk4B,mBAAmBntC,KAAKmV,WAAWg4B,mBAAmB1K,KACrEziC,KAAKiS,QAAQnU,KAAK,+BAA+BqvC,mBAAmBntC,KAAKmV,eAAeF,W,KACrF,CACH,MAAMwtB,EAAiBziC,KAAKspD,eAAe/wC,GAC3CvY,KAAKiS,QAAQnU,KACT,uBAAuBkC,KAAKgnD,mBAAmBtsC,eAAe+nB,W,CAG1E,EACAkP,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,uBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,yBAC1B,EACAqhC,0BAA0B9oB,EAAAA,GAAAA,IAAQ,4BAA4BrjB,iBACtDnF,KAAKyrB,YAAYgB,SAAS/hB,SAAS,wBACnC1K,KAAK0wC,4BAA8BvwB,EAAAA,EAAAA,KAAAA,IAC1B,gCACJzS,MAAMG,GAAMA,EAAE9O,KAAKA,OAExBiB,KAAK0wC,sBAAwB,CAAC,CAEtC,IACAa,yBAAyB/oB,EAAAA,GAAAA,IAAQ,2BAA2BrjB,iBACpDnF,KAAKyrB,YAAYgB,SAAS/hB,SAAS,wBACnC1K,KAAK2wC,2BAA6BxwB,EAAAA,EAAAA,KAAAA,IACzB,yCACJzS,MAAMG,GAAMA,EAAE9O,OAEnBiB,KAAK2wC,qBAAuB,CAAC,CAErC,IACAjd,uBACI,MAAM,gBAAEzH,GAAoBH,GAAgB9rB,KAAKyrB,aAC7CQ,EACIjsB,KAAK2wC,qBAAqB4K,iBAAmB,EAC7Cv7C,KAAKiS,QAAQnU,KAAK,aAElBkC,KAAKiS,QAAQnU,KAAK,oBAGtBkC,KAAKinD,2BAA4B,CAEzC,KCpMkS,M,uBCAxF,GAAe,KCQ7N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,2BCvBwJ,W,IAAY,OAAa,aAAO,EAAQ,MAAC,Y,OAAM,EAAC,6B,MAAC,CAAiC,sCAAsB,gBAAC1nD,SAAM,K,CAAiBe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAQ,mBAAC,cAACb,mBAAW,IAAO,MAAO,CAAwB,MAAS,EAAC,IAASc,SAAS,YAACvC,EAAK,IAAC,C,aAAqB,QAAuC,EAAI,GAACmU,EAAI,MAAK,SAAS,G,OAAM,EAAC,M,IAAC,M,MAAW,CAAS,QAAIjU,SAAW0S,EAAKuB,MAAM,GAAE,0BAA4FnU,CAAAA,EAAK,KAAC,OAAC,MAAO,CAAgB,SAAmB,KAAS,KAAuCyI,CAAAA,EAAAA,GAAW,EAACvI,GAAI+Q,EAAG,SAAC,sC,IAAC1O,IAAI,UAAe,mB,MAAI,C,MAAkB,EAAI,W,aAAe,M,QAAC,EAAO,MAAE,4B,YAAkC,EAAQ,K,uBAAmC,W,MAAK,Q,MAAC,C,KAA6B8pD,GAAsB,iCAAC,0BAAI7pD,KAAG,U,GAAiB,CAA0C,kBAAItC,EAAM,SAAW,EAAG,OAAE,IAAa,QAAO,OAAmB,kCAAW,GAAQ,iBAAa,EAAIsC,OAAG,M,CAAuC,OAAUtC,C,MAAqC,CAAqD,QAAsB,sB,CAAK,iCAAwB,C,MAAC,CAAiC,2CAAE,kDAACqB,mBAAM,I,GAA2Be,C,MAA6BkpD,SAAa,GAAK,yBAAC/pD,GAA6B,MAAKe,CAAqBxC,MAAM,gBAAC,SAAU,SAAKqiC,GAAQ,EAAM,cAAK1M,CAAa,EAA4C,+BAAK,KAAO,iBAAKE,CAAoB,OAAIrzB,WAAG,EAAa,QAAExC,KAAM,eAAC,YAAYssD,EAAAA,cAAa,a,GAA8C,CAA6C,gCAA8D,iBAAG,MAAK,CAAwB,MAAC,gBAAC,gBAAY3Y,EAAAA,YAAAA,aAAkB,2CAAI,oBAAG,oBAC74D,uBAGD,IAASxyC,GAAM,EAAEb,cAAe,C,6CCJsDmC,GAAAA,WAAkB,IAAI,EAAKyqC,KAA2B77B,EAAI,EAAC,SAAe,OAAM,iBAAQ,CAACrR,YAAM,Q,CAAC,aAA8T,OAAtT,EAAW,Y,KAAC,iBAAU,QAAC0C,MAAG,CAAC,MAAQ,Y,KAAiB,IAAuB,IAAIF,MAAG,SAAS,GAACxC,OAAM,aAAC,IAAY,CAACE,EAAG,IAAI,CAAyHF,MAAM,CAAC,U,CAA0C,yBAAqB,2E,MAAC,CAAW,QAAUE,EAAIotC,QAAO,QAAYptC,QAAa,kBAAkC,SAA4C,mBAAG,YAAC,WAAC,iBAAgB,e,sBAAkC,qB,GAAE,C,gBAA6C2R,SAAM,GAAC,UAAC,E,iBAAgDA,SAAM,GAAC,UAAC,E,kBAAiDA,SAAM,eAAE,EAACpJ,mBAAoB,YAAClG,EAAK,SAAU,CAACmG,G,YAAqB,O,IAAC,Y,GAA+CjG,UAAAA,KAAuB,IAA8F,MAAM,CAAmB,WAAlBpC,EAAG,YAAsB,EAAK,IAAG,CAAmJL,YAAM,a,CAAC,EAAI,GAAE,sBAA6BmvC,EAAAA,MAAAA,EAAAA,OAAuBh4B,CAE7xC,uCAAG,CAACjX,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAKpT,MAAM,SAAS,EAAC,SAAc,2GAAChD,MAAM,CAAC,GAAM,8BAAyB0c,mBAAuB,qDAAW,CAACxc,EAAIG,GAAG,IAAIH,EAAI0S,GAAGwD,EAAKpT,MAAM,OAAO,wBAAG,0DAAyB,UAAS,oB,GAAQ,C,IAAE,iB,GAAgBP,UAAAA,KAAuB,IAAoI,MAAM,CAACpC,EAAG,IAAG,CAA+D,yBAAO6Q,CAAAA,EAAIhR,GAAIsvC,IAAAA,EAAU,GAAE,YAAe,QAAC,kCAA8B,OAA9B,UAAC,YAAO,2BAAI,GAACn+B,GAAK6/B,IAAAA,EAAAA,IAAY,wC,KAAe96B,GAAAA,EAAAA,YAAAA,SAAAA,EAAAA,G,MAAO,C,IAAC,EAAQ5T,a,GAAQD,UAAQ,K,UAAyIE,CAAAA,EAAAA,IAAY,CAA0B,IAAK,EAAI,KAA0F,yBAAE,gFAAoB,OAApB,UAAI,YAAS,2BAAO,2EACt4B,EAGD,KAAStB,MAAM,M,UCsBT,SAAUorD,GAA8BrqC,EAAyB3W,GACnE,MAAMikC,EAAaY,GAAqBluB,GAElCna,EAAU,GAChB,IAAK,MAAM8H,KAAKtE,EAASkY,UAAW,CAChC,MAAM3b,EAAgE,CAClEqB,GAAI0G,EAAE1G,GACNnG,KAAM6M,EAAE7M,KACRwpD,UAAW38C,EAAE48C,WAAa,EAC1BV,SAAUl8C,EAAEk8C,UAAY,EACxB/b,iBAAkBngC,EAAEmgC,iBACpBzQ,QAAS1vB,EAAE0vB,QACX5c,KAAM9S,EAAE8S,MAAQ,QAEpB,IAAK,MAAMtR,KAAQm+B,EAAY,CAC3B,MAAMkd,GAAsB78C,EAAE88C,mBAAqB,CAAC,GAAGt7C,EAAKujB,OAAS,CAAC,EAChEg4B,GAAqB/8C,EAAEq8C,kBAAoB,CAAC,GAAG76C,EAAKujB,OAAS,CAAC,EAChE83B,GACA5kD,EAAOuJ,EAAKo+B,mBAAqBid,EAAmBr7C,EAAKsjB,QAAU,EACnE7sB,EAAOuJ,EAAKo+B,kBAAoB,QAAUmd,EAAkBv7C,EAAKsjB,QAAU,OAE3E7sB,EAAOuJ,EAAKo+B,mBAAqB,EACjC3nC,EAAOuJ,EAAKo+B,kBAAoB,QAAU,K,CAGlD1nC,EAAQjI,KAAKgI,E,CAGjB,MAAO,CAAE0nC,aAAYznC,UACzB,CAEM,SAAUq6C,GACZlgC,EACA3W,GAEA,MAAMikC,EAAaY,GAAqBluB,GAElCna,EAAU,GAChB,IAAK,MAAM8H,KAAKtE,EAASkY,UAAW,CAChC,MAAM3b,EAAgE,CAClEqB,GAAI0G,EAAE1G,GACNnG,KAAM6M,EAAE7M,KACRwpD,UAAW38C,EAAE48C,UACbV,SAAUl8C,EAAEk8C,SACZ/b,iBAAkBngC,EAAEmgC,iBACpBzQ,QAAS1vB,EAAE0vB,QACX5c,KAAM9S,EAAE8S,MAAQ,QAEpB,IAAK,MAAMtR,KAAQm+B,EAAY,CAC3B,MAAMkd,GAAsB78C,EAAE88C,mBAAqB,CAAC,GAAGt7C,EAAKujB,OAAS,CAAC,EAChEg4B,GAAqB/8C,EAAEq8C,kBAAoB,CAAC,GAAG76C,EAAKujB,OAAS,CAAC,EAChE83B,GACA5kD,EAAOuJ,EAAKo+B,mBAAqBid,EAAmBr7C,EAAKsjB,QAAU,EACnE7sB,EAAOuJ,EAAKo+B,kBAAoB,QAAUmd,EAAkBv7C,EAAKsjB,QAAU,OAE3E7sB,EAAOuJ,EAAKo+B,mBAAqB,EACjC3nC,EAAOuJ,EAAKo+B,kBAAoB,QAAU,K,CAGlD1nC,EAAQjI,KAAKgI,E,CAGjB,MAAO,CAAE0nC,aAAYznC,UACzB,CAEA,SAASqoC,GAAqBluB,GAC1B,MAAMtI,EAAWV,GAAON,IAAIsJ,EAAOtI,UAC7BC,EAASX,GAAON,IAAIsJ,EAAOrI,QAC3Bs3B,EAAYj4B,GAAON,IAAIsJ,EAAOtI,UAAUS,QAAQ,SAChD+2B,EAAUl4B,GAAON,IAAIsJ,EAAOrI,QAAQQ,QAAQ,SAE5Cg3B,EAAQ,GACd,IAAI3G,EAAOyG,EACX,IAAK,IAAIl1B,EAAI,GAAIyuB,EAAK4G,QAAQF,KAAYn1B,EAAG,CACzC,MAAMs1B,EAAY7G,EAAKn6B,OAAO,YACxBihC,EAAa9G,EAAKvwB,MAAM,SAE9B,IAAIs3B,EAMAC,EAMAtF,EAXAxyB,EAAS03B,QAAQ5G,EAAM,SAEvB+G,EAAwB73B,EAASrJ,OAAO,MAIxCsJ,EAAOm3B,SAASQ,EAAY,SAE5BE,EAAsB73B,EAAOtJ,OAAO,MAMpC67B,EAFAqF,GAAyBC,EAEhB,GAAGD,KAAyBC,KAAuBH,IACrDE,EAEE,GAAGA,KAAyBD,EAAWjhC,OAAO,QAAQghC,IACxDG,EAEE,GAAGhH,EAAKn6B,OAAO,QAAQmhC,KAAuBH,IAG9CA,EAGb,MAAMlgC,EAAO,CACT+6B,SAEAxX,KAAM8V,EAAKn6B,OAAO,QAClBokB,MAAO+V,EAAKn6B,OAAO,MAEnB2gC,aAAc,aAAaj1B,IAC3BwzB,kBAAmB,QAAQxzB,KAE/Bo1B,EAAMvxC,KAAKuR,GACXq5B,EAAOA,EAAKzwB,IAAI,EAAG,I,CAEvB,OAAOo3B,CACX,CAEA,QACI9wC,MAAO,CACHyoB,MAAOtlB,OACP1C,QAASkC,QACTwZ,YAAatZ,OACb0pC,gBAAiB1pC,OACjB+T,OAAQ/T,OACR2pC,cAAe3pC,OACfkvB,aAAc,CACVryB,KAAMoD,OACN3C,QAAS,IAEbssC,aAAc,CACV/sC,KAAMiD,QACNxC,SAAS,GAEbusC,kBAAmB/pC,QACnBgqC,WAAYhqC,QACZwmD,QAASxmD,SAEbnC,OACI,MAAO,CACHusC,OAAQ,YACRC,UAAU,EAElB,EACA7oC,SAAU,CACNrD,UACI,MAAMA,EAAU,CAAC,CAAES,KAAME,KAAK8qC,iBAAmB,OAAQ1rC,MAAO,SAC1DouC,EAAaxtC,KAAKgnB,OAAOwmB,YAAc,GAC7C,IAAK,MAAMn+B,KAAQm+B,EACfnuC,EAAQvB,KAAK,CAAEgC,KAAMuP,EAAK+6B,OAAQhrC,MAAOiQ,EAAKo+B,oBAGlD,OADApuC,EAAQvB,KAAK,CAAEgC,KAAM,QAASV,MAAO,cAC9BC,CACX,EACA0G,UACI,OAAO/F,KAAKgnB,OAAOjhB,SAAW,EAClC,EACAynC,aACI,OAAOxtC,KAAKgnB,OAAOwmB,YAAc,EACrC,GAEJvuC,QAAS,CACL6sC,YACI,MAAMgM,EAAe93C,KAAKX,QAAQyO,KAAKmM,GAAMA,EAAE7a,QACzCk0C,EAAYtzC,KAAK+F,QAAQ+H,KAAKmM,GAAM69B,EAAahqC,KAAK6iB,GAAM1W,EAAE0W,OACpE2iB,EAAUyE,QAAQ/3C,KAAKX,QAAQyO,KAAKmM,GAAMA,EAAEna,QAC5CuyC,GAAAA,UAAqBiB,EAAW,YAActzC,KAAK0a,YAAc,OACrE,ICpMqS,M,uBCAxF,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,YCd1B,MAAOmwC,WAAqBC,GAAAA,GAE9BzzC,cACI0zC,MAAM,eAAc,4BACpB/qD,KAAKlB,QAAQ,GAAGksD,OAAO,CACnBC,MAAO,OAEf,CAEA9lD,0BAA0BimC,GACtB,MAAM6f,QAAcjrD,KAAKirD,MAAMC,MAAM,OAAOjjB,WAAWmD,GAAQ+f,UAC/D,OAAOF,EAAMn9C,KAAK2iB,GAAM,CAACA,EAAElwB,IAAKkwB,EAAErxB,QACtC,CAEA+F,cAAc5E,GACV,aAAaP,KAAKirD,MAAM7gD,IAAI7J,GAAKmN,MAAMG,GAAMA,GAAGzO,OAAS,MAC7D,CAEA+F,cAAqB5E,GACjB,MAAM4e,QAAanf,KAAKorD,QAAQ7qD,GAChC,IAAK4e,EAAM,OAAO,KAClB,MAAM8zB,QAAa9zB,EAAKrf,OACxB,OAAOuG,KAAKsf,MAAMstB,EACtB,CAEA9tC,cAAqB5E,EAAYxB,GAC7B,MAAMssD,EAAahlD,KAAKC,UAAUvH,GAC5BusD,EAAW,IAAIhsC,KAAK,CAAC+rC,GAAa,CAAEptD,KAAM,qBAChD,OAAO+B,KAAKurD,QAAQhrD,EAAK+qD,EAC7B,CAEAnmD,cAAc5E,EAAanB,SACjBY,KAAKirD,MAAMO,IAAI,CAAEjrD,MAAKnB,SAASmB,EACzC,CAEA4E,yBAAgCimC,GAC5B,MAAM6f,QAAcjrD,KAAKyrD,oBAAoBrgB,GACvCsgB,EAA0B,GAChC,IAAK,MAAOnrD,EAAK4e,KAAS8rC,EAAO,CAC7B,MAAMU,QAAexsC,EAAKysC,cACpBrvC,EAAQ,IAAImD,WAAWisC,GAAQr6C,WAC/B0T,EAAM3e,KAAKsf,MAAMpJ,GACvBmvC,EAAK5tD,KAAK,CAACyC,EAAKykB,G,CAEpB,OAAO0mC,CACX,CAEAvmD,aAAoB5E,GAChB,MAAM4e,QAAanf,KAAKorD,QAAQ7qD,GAChC,IAAK4e,EAAM,OAAO,KAClB,MAAM0sC,QAAoB9rC,GAAaZ,GAEvC,OAAO9Y,KAAKsf,MAAMkmC,EACtB,CAEA1mD,aAAoB5E,EAAaykB,GAC7B,MAAMzI,QAAc0C,GAAa5Y,KAAKC,UAAU0e,IAC1C7F,EAAO,IAAIG,KAAK,CAAC/C,UACjBvc,KAAKurD,QAAQhrD,EAAK4e,EAC5B,CAEAha,gBACI5E,EACA8Y,GAGA,MAAM,SAAEyyC,EAAQ,OAAEC,GAAW1yC,EAE7B,IAAI2yC,QAAoBhsD,KAAKisD,OAAc1rD,GACvC2rD,EAAOF,EAEPG,GAAS,EACRH,IACDA,EAAOD,IACPI,GAAS,GAEb,IAAIC,GAAU,EACd,GAAIN,EAAU,CACV,MAAMlsC,EAASksC,EAASE,GACpBpsC,IACAssC,EAAOtsC,EACPwsC,GAAU,E,EAGdD,GAAWD,GAAQE,UACbpsD,KAAKqsD,OAAO9rD,EAAK2rD,GAAQF,GAEnC,MAAMM,EAAQJ,GAAQF,EACtB,OAAOM,CACX,EAGJ,WAAmBzB,GC7FZ,MAAM0B,GAAqBpnD,SACvBqnD,GAAAA,QAAmB,sBAGjBC,GAAqBtnD,SACvBqnD,GAAAA,QAAmB,qBAAsBE,GCO9CC,GAA2Bl+C,IAC7B,IAAIm+C,EAAOn+C,EAAMm+C,KAAKxsC,cAOtB,OANI3R,EAAMyR,OAAO2sC,eACbD,EAAOA,EACF/zC,MAAM,KACNd,QAAQuP,GAAMA,GAAK7Y,EAAMyR,OAAO2sC,eAChC9zC,KAAK,MAEV6zC,EAAK3kB,WAAW,+BACT,WACA2kB,EAAK3kB,WAAW,oCAChB,gBACA2kB,EAAK3kB,WAAW,oCAChB,gBACA2kB,EAAK3kB,WAAW,+BAChB,WACA2kB,EAAK3kB,WAAW,8BAChB,OACA2kB,EAAK3kB,WAAW,wCAChB,oBAEA,e,EAIf,QAAe3jC,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEqkD,eAAc,GAAEhS,6BAA4B,GAAEkW,YAAWA,IACvEvmD,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,0BAClB,EACAlR,OACI,MAAO,CACHguD,IAAK,KACL53C,OAAQnV,KAAKopB,OAAOlJ,OAAO8sC,OAC3BxD,cAAe,CACXtwC,aAAc,MACd5B,YAAa9F,GAAAA,MACb8H,YAAa,GACboB,YAAaiyC,GAAwB3sD,KAAKopB,SAE9C6jC,cAAe,CAAC,EAChB3C,cAAe,CAAC,EAChBhB,eAAgB,CAAC,EACjB31B,aAAc,CAAE6F,OAAQ,GAAIyD,SAAU,IACtCoD,aAAShzB,EACTg9C,SAAS,EAEjB,EACAvoD,MAAO,CACH0nD,cAAe,CACXxnD,QAAQpE,GACCA,IACDoC,KAAKib,MAAMC,GAAG,yBAClBlb,KAAKktD,iBAAiBtvD,GAC1B,EACAqK,WAAW,EACXlG,MAAM,GAEVqnB,OAAQ,CACJjkB,cAAcsJ,GACV,IAAKA,EAAO,OACZzO,KAAKmV,OAAS1G,EAAMyR,OAAO8sC,OAC3B,MAAMG,EAAiBR,GAAwBl+C,GAC3CzO,KAAKwpD,cAAc9uC,cAAgByyC,IACnCntD,KAAKitD,cAAgB,KACrBjtD,KAAKsqD,cAAgB,KACrBtqD,KAAKwpD,cAAc9uC,YAAcyyC,GAErC,MAAMC,EAAYptD,KAAKqtD,OACjBX,QAAoBH,KAC1BG,EAAYY,gBAAkBF,EAC9BptD,KAAKqqD,QAAUqC,EAAYa,yBAA2Bb,EAAYY,sBAC5Db,GAAmBC,EAC7B,EACAzkD,WAAW,EACXlG,MAAM,GAEVoD,cAAcqoD,GACV,MAAMd,QAAoBH,KAC1BG,EAAYa,uBAAyBC,EAC/BxtD,KAAKqtD,OACLrtD,KAAKqtD,SAAWX,EAAYa,uBAC5B,KACAb,EAAYa,6BACZd,GAAmBC,EAC7B,EACAv3C,OAAQ,CACJnT,QAAQyrD,EAAWC,GACVA,GACL1tD,KAAKktD,iBAAiBltD,KAAKwpD,cAC/B,IAGR9mD,SAAU,CACN2qD,SACI,MAAMF,EAAiBR,GAAwB3sD,KAAKopB,QACpD,OAAO+jC,GAAgBllB,WAAW,QAC5B,WAAWkF,mBAAmBntC,KAAKmV,UACnCg4C,EAAe/sC,aACzB,EACA4wB,aACI,OAAOjJ,GAA4B/nC,KAAKwpD,eAAe,IAAItpC,IAAWlgB,KAAKiQ,MAAMiQ,IACrF,EACAytC,oBACI,OAAO3tD,KAAKsqC,WAAWtqC,KAAKwpD,cAAc9uC,YAC9C,EACAkzC,OACI,MAAMxiB,EAASprC,KAAKopB,OAAOlJ,OAAO2sC,aAAe,IAAI7sD,KAAKopB,OAAOlJ,OAAO2sC,eAAiB,GACnFe,EAAO,CACT,CACIrnD,MAAOvG,KAAKiQ,GAAG,mCACf1P,IAAK,WACL0uB,GAAI,GAAGmc,+BACPj5B,KAAM,iBAEV,CACI5L,MAAOvG,KAAKiQ,GAAG,oCACf1P,IAAK,YACL0uB,GAAI,GAAGmc,+BACPj5B,KAAM,UAEV,CACI5L,MAAOvG,KAAKiQ,GAAG,wCACf1P,IAAK,gBACL0uB,GAAI,GAAGmc,oCACPj5B,KAAM,eAEV,CACI5L,MAAOvG,KAAKiQ,GAAG,wCACf1P,IAAK,gBACL0uB,GAAI,GAAGmc,oCACPj5B,KAAM,mBA2Bd,OAxBInS,KAAKyrB,YAAY8B,SACjBqgC,EAAK9vD,KAAK,CACNyI,MAAOvG,KAAKyrB,YAAY8B,QACxBhtB,IAAKP,KAAKyrB,YAAY8B,QACtB0B,GAAI,GAAGmc,+BAAoC+B,mBAAmBntC,KAAKyrB,YAAY8B,WAC/Epb,KAAM,SAGVnS,KAAKyrB,YAAYgC,SACjBmgC,EAAK9vD,KAAK,CACNyI,MAAOvG,KAAKyrB,YAAYgC,QACxBltB,IAAKP,KAAKyrB,YAAYgC,QACtBwB,GAAI,GAAGmc,+BAAoC+B,mBAAmBntC,KAAKyrB,YAAYgC,WAC/Etb,KAAM,SAGVnS,KAAKyrB,YAAYiC,SACjBkgC,EAAK9vD,KAAK,CACNyI,MAAOvG,KAAKyrB,YAAYiC,QACxBntB,IAAKP,KAAKyrB,YAAYiC,QACtBuB,GAAI,GAAGmc,+BAAoC+B,mBAAmBntC,KAAKyrB,YAAYiC,WAC/Evb,KAAM,SAGPy7C,CACX,MACGplB,EAAAA,GAAAA,IAAUrc,KAEjBltB,QAAS,CACL0yC,mBAAmB8E,GACf,MAAMrL,EAASprC,KAAKopB,OAAOlJ,OAAO2sC,aAAe,IAAI7sD,KAAKopB,OAAOlJ,OAAO2sC,eAAiB,GACrFpW,IACAz2C,KAAKwpD,cAAc9uC,cAAgBnG,GAAiBW,KACpDlV,KAAKiS,QAAQnU,KAAK,GAAGstC,+BAAoC+B,mBAAmBntC,KAAKmV,WAEjFnV,KAAKiS,QAAQnU,KAAK,sBAAsBkC,KAAKwpD,cAAc9uC,eAE/D1a,KAAK02C,OAAS12C,KAAKiQ,GAAG,2BAC1B,EACAq6B,WAAWujB,GACP,OAAO7tD,KAAKiQ,GAAG,6BAA+B49C,EAClD,EACAX,kBAAkB1kC,EAAAA,GAAAA,IAAQ,wBAAwBrjB,eAAgCvH,GAC9E,MAAMsiB,EAAS2nB,GAA2BjqC,GAC1C,IAAKsiB,EAAQ,OACb,MAAMxF,EAAc1a,KAAKwpD,cAAc9uC,YACnCA,IAAgBnG,GAAiBW,OACjCgL,EAAO3F,YAAcva,KAAKmV,OAAS,GAAGnV,KAAKmV,UAAY,MAE3D,MAAOw0C,EAAgBmE,SAA4BvoD,QAAQwI,IAAI,CAC3D6T,GAAQlH,EAAawF,GACrB2B,GAAgB3B,EAAQtiB,EAAQsb,gBAE9B60C,EAAqB/vB,GAAoC8vB,IACxD3V,EAAcmR,GAAkB7B,GAA8BkC,GACrE3pD,KAAK2zB,aAAe,CAChB6F,OAAQ,IAAI2e,EAAa3e,UAAWu0B,EAAmBv0B,QACvDyD,SAAU,IAAIkb,EAAalb,YAAa8wB,EAAmB9wB,WAE/Dj9B,KAAKqgC,QAAUytB,GAAoB3sC,cAAgBjB,EAAOrI,OAC1D7X,KAAKspD,eAAiBA,EACtBtpD,KAAKsqD,cAAgBlK,GAAqBlgC,EAAQypC,EACtD,IACA91B,sBAAqB,MAAEtb,EAAK,QAAEglB,IAC1B,GAAIA,EACAv9B,KAAKwpD,cAAclwC,YAActZ,KAAKwpD,cAAclwC,YAAc,QAC/D,GAAItZ,KAAKwpD,cAAc9uC,aAAautB,WAAW,QAAkB,CACpE,MAAMxF,EAAiBziC,KAAKspD,eAAe/wC,GACrCtD,EAAM,GAAGk4B,mBAAmBntC,KAAKmV,WAAWg4B,mBAAmB1K,KACrEziC,KAAKiS,QAAQnU,KAAK,8BAA8BqvC,mBAAmBntC,KAAKmV,eAAeF,W,KACpF,CACH,MAAMwtB,EAAiBziC,KAAKspD,eAAe/wC,GAC3CvY,KAAKiS,QAAQnU,KAAK,sBAAsBkC,KAAKwpD,cAAc9uC,eAAe+nB,W,CAElF,KCnOkS,M,uBCAxF,GAAe,KCO7N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICZYurB,GDYZ,GAAe,GAAiB,QEtByD,GAAU,W,IAA8BhwD,EAAM,K,EAAC,EAAO,MAAKiS,GAA4B,EAAC,kB,OAAa,+BAAG,MAAI,CAAuCjS,MAAM,wBAAC,KAAO,iBAA6C,+BAAC0C,MAAG,CAAC,MAAQ,gB,UAA4B81C,IAAAA,EAAAA,KAAyB,GAAC,CAAC/vC,MAAW,SAAS,GAAClG,OAAI,mBAAe,EAACmG,G,YAAyC,O,wCAA0CxI,CAAAA,EAAI6uD,GAAAA,EAAInkC,C,MAAI,CAACnpB,MAAAA,EAAU,IAAM,qBAAM,EAAC,IAAQ,CAAgH,EAAM,WAAC,QAAa,oCAA4B,qEAACgB,EAAmBzC,OAAM,OAAmE,8BAAYsX,CAAO,mBAAG,MAAI,CAAiB,QAAC,qDAAC,MAAQpX,EAAIyzC,WAAsB,EAAG,cAAI,CACr2B,IACGrzC,MAAAA,EAAe,uB,cCFfa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,WAAW,CAACA,EAAG,aAAa,CAAC4a,WAAW,CAAC,CAACpa,KAAK,OAAOqa,QAAQ,SAASjc,MAAOlB,EAAI+vD,UAAWxuD,WAAW,cAAczB,MAAM,CAAC,MAAQE,EAAIgwD,iBAAiB,mBAAmB,YAAYznD,YAAYvI,EAAI+Q,GAAG,CAAC/Q,EAAIgR,GAAIxN,OAAOyN,KAAKjR,EAAIkR,eAAe,SAASC,GAAM,MAAO,CAAC9O,IAAI8O,EAAK3I,GAAG,SAAS4I,GAAO,MAAO,CAACpR,EAAIqR,GAAGF,EAAK,KAAK,KAAKC,GAAO,EAAE,KAAI,MAAK,KAAQ9O,EAAG,aAAa,CAAC4a,WAAW,CAAC,CAACpa,KAAK,OAAOqa,QAAQ,SAASjc,OAAQlB,EAAI+vD,UAAWxuD,WAAW,eAAezB,MAAM,CAAC,MAAQE,EAAIiwD,gBAAgB,mBAAmB,YAAY1nD,YAAYvI,EAAI+Q,GAAG,CAAC/Q,EAAIgR,GAAIxN,OAAOyN,KAAKjR,EAAIkR,eAAe,SAASC,GAAM,MAAO,CAAC9O,IAAI8O,EAAK3I,GAAG,SAAS4I,GAAO,MAAO,CAACpR,EAAIqR,GAAGF,EAAK,KAAK,KAAKC,GAAO,EAAE,KAAI,MAAK,MAAS,EACvxB,EACIhR,GAAkB,IFQtB,SAAY0vD,GACRA,EAAAA,QAAAA,OACAA,EAAAA,OAAAA,MACAA,EAAAA,aAAAA,WACH,EAJD,CAAYA,KAAAA,GAAe,KAMpB,MAAM3I,GAAoC,CAC7CC,EACAhwC,EACArX,KAEA,MAAMunD,EAAeF,EAAMvmD,KAAKsiB,QAAO,CAACokC,EAAKz9C,KACzC,MAAMzH,EAAM,GAAGyH,EAAIwS,gBAAgBxS,EAAIqS,aAAa4vB,cAIpD,OAHIhsC,IAAS+vD,GAAgB/F,KAAMxC,EAAIllD,GAAOyH,EAAIigD,KACzChqD,IAAS+vD,GAAgBI,IAAK3I,EAAIllD,GAAOyH,EAAI2Z,IAC7C1jB,IAAS+vD,GAAgBC,YAAWxI,EAAIllD,GAAOyH,EAAIigD,KAAOjgD,EAAI2Z,KAAO,GACvE8jC,CAAG,GACX,CAAC,GACJ,IAAIrB,EACAnmD,IAAS+vD,GAAgB/F,KAAM7D,EAAS,OACnCnmD,IAAS+vD,GAAgBC,UAAW7J,EAAS,YAC7CnmD,IAAS+vD,GAAgBI,MAAKhK,EAAS,OAChD,MAAMN,EAASpiD,OAAO4b,OAClBhI,EAAQ+L,QAAO,CAACqkC,EAAKrwC,KACjB,MAAMswC,EAAiB,GAAGtwC,EAAOmF,gBAAgBnF,EAAOrU,OAAOipC,cAC/D,IAAKub,EAAaG,GAAiB,OAAOD,EAE1C,MAAMlrC,EAAenF,EAAOmF,aACtBorC,EAAcF,EAAIlrC,GACpBkrC,EAAIlrC,IAAiBqrC,GAAmCrrC,EAAc4pC,GAc1E,OAZI/uC,EAAO2vC,KACPY,EAAW7mD,KAAKjB,KACZ+nD,GACIxwC,EAAOlO,GACPkO,EAAOrU,MAAQ,UACfwZ,EACAnF,EAAO2vC,IACP3vC,EAAOywC,KACPN,EAAaG,KAIlBD,CAAG,GACX,CAAC,IAQR,OANA5B,EAAO/L,QAAQ,CACX/2C,KAAM,YACNpC,MAAO,UACPolD,qBAAqB,EACrBC,cAAc,IAEXH,CAAM,EAGjB,QAAex/C,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAEyoB,MAAOhR,MAAOi4C,UAAW/sD,SAClCuD,MAAM4U,GAAG,KAAE2rB,IACP,MAAMqpB,EAAgBxI,GAA4B,CAC9CxC,OAAQ,CACJ0C,aAAaC,GACT,MAAMC,EAA6C,CAC/C5rC,WAAY2rC,EAAUhlD,KACtBwZ,aAAcwrC,EAAUlC,OAAO9iD,MAEnCgkC,EAAK,QAASihB,EAClB,KAGFkI,GAAkBtpD,EAAAA,EAAAA,KAAI,IAAKwpD,IAC3BH,GAAmBrpD,EAAAA,EAAAA,KAAI,IAAKwpD,EAAezK,UAAW,CAACiC,GAAmC,UAC1FyI,GAAiBzpD,EAAAA,EAAAA,MAAI,GAS3B,OARA/C,EAAAA,EAAAA,QACI,IAAMuX,EAAE2N,QACPA,IACGmnC,EAAgB/uD,MAAM0kD,OAAS98B,EAC/BknC,EAAiB9uD,MAAM0kD,OAAS98B,CAAK,GAEzC,CAAE/e,WAAW,EAAMlG,MAAM,IAEtB,CAAEosD,kBAAiBD,mBAAkBI,iBAChD,IG3FmT,MCOnT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BnvD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,eAAe,CAACxC,MAAM,CAAC,MAAQE,EAAIqI,OAASrI,EAAI+R,GAAG,gCAAgC,QAAU/R,EAAI+R,GAAG,qCAAqC,CAACzP,EAAG,uBAAuBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC,EAAE,uBAAuBzgB,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,cAAc,EACnV,EACIvgB,GAAkB,GCFmE,GAAU,W,IAAgBN,EAAM,K,EAAC,QAAUE,GAAY,EAAUA,MAAImB,Y,OAAQ,OAAiB,C,MAAC,CAAgB,kBAAkC,QAAUnB,EAAImyB,QAAS,QAAYnyB,MAAe,WAASA,KAAe,gCAAG,UAAC,WAAC,yB,OAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,GAAC,cAAC,E,mBAAgDA,SAAM,iBAAE,EAACpJ,gBAAkB,SAAE,GAAClG,EAAI,WAAK,CAACmG,G,YAAsCjG,EAAW,GAAC,E,IAAOzC,M,oBAAiB,GAAO,KAAC,CAAa,mBAAE,MAAK,CAAgByC,KAAAA,GAAmBzC,MAAM,gB,CAAoB,OAAS,C,YAAC,O,MAA8B,CAAkB,gBAAcE,GAAgD,KAAO,GAA2C,8BAACqB,eAAM,GAACH,YAAW2U,EAAAA,GAAW,yCAACzT,MAAQ,EAAC,uC,MAAmC,CAACb,MAAAA,EAAU,WAAa,qBAAM,EAAE,YAAC,EAAM,WAAC,iBAAW,GAAUiH,E,OAAc,GAAwE,CAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,UAAe,gDAACmG,E,OAAc0N,GAAM,C,IAAE,iB,GAA0BpW,UAAM,K,IAAiF,MAAM,CAACK,EAAG,cAAW+V,CAAuB,OAAG,0EAAoB,UAAS,yB,GAAQ,C,IAAE,Y,GAA0BpW,UAAM,K,IAAwE,MAAM,CAACK,EAAG,cAAW+V,CAAkB,OAAG,iEAAgC,UAAS,oB,GAAQ,C,IAAE,wBAAwE,kBAAG,IAA8B,MAAC,GAAS,uD,GAAQ,C,IAAE,uBAAoE,kBAAG,IAAoC,MAAC,GAAS,mD,GAAQ,C,IAAE,6BAAiG,kBAAI,IACrkE,gFACG9V,IAEJ,MAASa,I,QCAF,MAAM+mD,GAAkC,CAC3CqI,EACAj5C,KAEA,MAAMkwC,EAAe+I,EAAUxvD,KAAKsiB,QAAO,CAACokC,EAAKz9C,KAC7C,MAAMzH,EAAM,GAAGyH,EAAIwS,gBAAgBxS,EAAIqS,aAAa4vB,cAEpD,OADAwb,EAAIllD,GAAO,CAAE0nD,KAAMjgD,EAAIigD,KAAMtmC,IAAK3Z,EAAI2Z,KAC/B8jC,CAAG,GACX,CAAC,GACJ,OAAOnwC,EAAQxH,KAAKD,IAChB,IAAI0J,EAAQiuC,EAAa33C,EAAE1G,IAE3B,OADKoQ,IAAOA,EAAQ,CAAEoK,IAAK,EAAGsmC,KAAM,IAC7B,IACAp6C,EACH2gD,iBAAkBj3C,EAAM0wC,KACxBwG,gBAAiBl3C,EAAMoK,IAC1B,IACF5J,QAAOlK,GAAKA,EAAE2gD,iBAAmB,GAAE,EAW1C,QAAelqD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHyoB,MAAOhR,MACPhX,QAASkC,SAEbuD,QACI,MAAM4rB,GAAWxrB,EAAAA,EAAAA,KAAI,oBACfirB,GAAajrB,EAAAA,EAAAA,MAAI,GACjByrB,GAAezrB,EAAAA,EAAAA,KAAI,IACnBkP,GAAalP,EAAAA,EAAAA,KAAmB,MACtC,MAAO,CAAEwrB,WAAUP,aAAYQ,eAAcvc,aACjD,EACAhV,OACI,MAAO,CACHM,QAAS,CACL,CACIS,KAAME,KAAKiQ,GAAG,sCACd7Q,MAAO,YACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,6CACd7Q,MAAO,mBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,4CACd7Q,MAAO,kBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,kDACd7Q,MAAO,wBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,yCACd7Q,MAAO,eACP+wB,UAAU,IAI1B,IC/EgT,M,sBCAxF,GAAe,KCQvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCnBhC,IAAe7rB,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEmqD,mBAAkBA,IAChCnwD,MAAO,IAAKmwD,GAAmBnwD,MAAOgI,MAAOnF,UCNuQ,M,uBCAxF,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCLhC,IAAekD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAC,MACRgG,WAAY,CAAE+hD,gBAAe,GAAEqI,uBAAsBA,IACrDpoD,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,kBAClB,EACAlR,OACI,MAAO,CACH6vD,gBAAiB,KACjBC,cAAe,KACf9B,IAAK,EAEb,EACAhtD,UACIC,KAAK0mD,iBACT,EACAhkD,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACbo6B,gBACI,IAAKvmD,KAAK4uD,kBAAoB5uD,KAAK6uD,cAAe,MAAO,GACzD,MAAMvxC,EAAS,CAAC0wC,GAAgBC,UAAWD,GAAgBI,IAAKJ,GAAgB/F,MAChF,OAAO5C,GAAkCrlD,KAAK4uD,gBAAiB5uD,KAAK6uD,cAAevxC,EAAOtd,KAAK+sD,KACnG,EACAz3C,UACI,OAAKtV,KAAK4uD,iBAAoB5uD,KAAK6uD,cAC5B3I,GAAgClmD,KAAK4uD,gBAAiB5uD,KAAK6uD,eADT,EAE7D,GAEJ5vD,QAAS,CACLu3C,iBAAiBz3C,GACb,MAAM,aAAEyb,EAAY,WAAEH,GAAetb,EACrCiB,KAAKiS,QAAQnU,KAAK,0BAA0B0c,KAAgBH,IAChE,EACAs3B,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,kBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,mBAC1B,EACA9K,wBACI,MAAOmQ,EAASgwC,SAAe//C,QAAQwI,IAAI,CAAC/N,KAAK2mD,gBAAiB3mD,KAAK4mD,oBACvE5mD,KAAK6uD,cAAgBv5C,EACrBtV,KAAK4uD,gBAAkBtJ,CAC3B,EACAqB,eAAen+B,EAAAA,GAAAA,IAAQ,kBAAkBrjB,iBACrC,IACI,aAAagb,EAAAA,EAAAA,KAAAA,IAAe,gBAAgBzS,MAAMG,GAAMA,EAAE9O,M,CAC5D,MAAOuK,IACL5J,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,wC,CAE3B,IACA22C,iBAAiBp+B,EAAAA,GAAAA,IAAQ,uBAAuBrjB,iBAC5C,IACI,MAAM+a,EAAS,CACX6B,IAAK7K,GAAON,MAAMqB,KAAK,GAAI,QAAQI,QAAQ,OAAO9J,SAClD+S,IAAKpK,GAAON,MAAMuB,MAAM,OAAO5J,UAEnC,aAAa4R,EAAAA,EAAAA,KAAAA,IAAe,mBAAoB,CAAED,WAAUxS,MAAMG,GAAMA,EAAE9O,M,CAC5E,MAAOuK,IACL5J,EAAAA,EAAAA,IAAWM,KAAKiQ,GAAG,6C,CAE3B,OC7E6R,M,uBCAxF,GAAe,KCOxN,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB6O,W,IAAG,OAAE,EAAK,WAAsB,oB,OAAC,aAAQ,GAAW,e,MAAC,CAA2B,wBAACxJ,KAAAA,eAAqBlG,SAAI,GAAgBmG,mBAAa,M,gBAAsC,S,YAAoB,K,kBAAuF,C,aAAe,Y,QAAyB,GAACxI,KAAI4wD,U,YAA8B,EAAO,K,IAAQ,gB,GAACvvD,W,MAAOH,CAAAA,EAAOlB,mBAAW,C,MAACoC,C,MAA6BuX,EAAM,OAAI,eAAC,GAACpY,MAAAA,EAAW,gDAAQ,QAAKvB,SAAIutB,GAA4EztB,eAAM,KAAC,MAAUE,UAA0D,gBAAG,KAAC,SAA6C,MAAC,CAACuI,MAAAA,EAAYvI,OAASqC,SAAI,SAAW,GAAG,EAAC,OAAS,C,EAAK,WAAE,Y,EAAyBvC,YAAM,8D,eAAW,EAAQ,sD,GAAc,C,QAA2C,kC,YAAqB,KAAW,CAAC,C,IAAE,Y,GAAE,UAAS,G,UAA0B,SAAE,MAAMK,CAA6C,QAAQ,MAAO,gBAAwB,qBAAO,OAAM,kBAAO,UAAe,KAAkBH,GAAImB,CAAAA,EAAAA,EAAAA,EAAO,CAASnB,MAAIyiD,CAAU,KAAmB,KAAgCziD,CAAAA,EAAI+c,GAAAA,SAAS,wBAAoB,OAAE,IAAI,sBAAC,O,EAAkD,OAAC,M,GAAmC/c,GAAAA,EAAW2R,C,MAAM,CAAE,kBAACpJ,MAAW,EAACvI,UAASqC,iBAAe,GAACmG,UAAG,EAAS,O,QAAE0N,EAAAA,MAAAA,GAAAA,uB,GAAQ,C,gBAAgC,Y,EAAC,OAAM,C,mBAA4CxD,SAAQ5P,GAAS,UAAE,G,YAAwB,EAAS,K,IAAEoT,YAAK,GAAE,eAAC,I,MAAyC,iBAAW,CAAE,MAAC,CAAC3N,GAAAA,qBAAoB,S,CAAiBC,EAAG,QAAS,W,oCAAmC1I,K,UAAkB,CAAC0C,EAAI,KAAgkB,OAA5jB,OAAUxC,C,MAA0B,CAAG,WAAU,IAAiBF,YAAM,OAAC,gBAAU,gBAAM,IAAoB,MAAQ,OAAS6R,EAAAA,GAAM,CAAE,MAAO3R,CAA4B,UAAQ,UAAkB,GAAI,GAAC,gBAAiB,GAA8H,IAAG,UAAM,SAA0B,OAAWkW,MAAAA,KAAQ,GAAO,KAAU,CAAC3T,GAAAA,CAA2BvC,MAAOA,SAAW6wD,GAAuE,8BAAG,IAA6B,QAAS,4F,GAAQ,C,IAAE,wB,GAAkBtuD,UAAAA,KAAwB,IAA4F,gBAAI,YAAE,cAA6B,QAAS,uE,GAAQ,C,IAAE,qB,GAAkBA,UAAAA,KAAwB,IAA0G,gBAAI,YAAE,cAAyB,QAAS,oE,GAAQ,C,IAAE,2B,GAAkBuuD,UAAM56C,KAIvzF,IAAiE,gBAAI,YAAE,cAAyB,UAAS,gF,GAAQ,C,IAAE,uB,GAAkB46C,UAAM56C,KAI3I,IAAsG,gBAAI,MAAE,kBAAY,0EAAI,UAAU,2C,QAA4G,uB,GAA4C3T,UAAAA,KAAwB,IAAwH,MAAM,CAACpC,EAAGH,MAAOA,CAA8H8wD,MAAM9wD,EAAI6kD,gBAAkB,yBAAyB,iDAAc,CAAC7kD,EAAIG,GAAG,IAAIH,EAAI0S,GAAG1S,EAAI6wD,GAAG,WAAP7wD,CAAmBA,EAAI6kD,gBAAgBt3B,EAAAA,YAAYsC,eAAoB,O,QAAiIttB,c,GAAyB,W,MAA4CA,CAAAA,EAAAA,UAAY,kDAAa,YAAamQ,cAAwF,qCAACE,YAAM,cAAO,CAAI,EAAC,GAAI,6EAAQ,YAAU,cAA+B,qHAA8D,OAA9D,QAAC,QAAa,YAAU,uCAAC,UAAiB5S,EAAI+wD,GAAAA,EAAAA,GAAAA,WAAAA,CAAgB,+FAAgC,OAAhC,QAAC,YAAc,cAAiB,qBAAI,0BAAC,GAAS,GAAC/wD,EAAIgxD,GAAAA,EAAAA,eAAAA,EAAAA,KAAAA,CAAiB,0BAAO,uFAAC9vD,EAA2BkB,OAAAA,IAAyBpC,MAAIixD,MAAmB,qC,MAAC1vD,CAA2B,sBAAI,eAAG,mBACr4C,8BAGD,I,6ICZqFgH,GAAAA,W,IAAqBlG,EAAI,K,EAAc,EAAC,S,OAAmB,gBAAe,C,YAAgC,OAAE,IAAC,YAACA,GAAG,SAAU,GAAG,MAAC,GAAS,4B,GAAS,C,IAAE,U,GAAwBvC,UAAM,M,UAA8D,gBAACyI,MAAAA,CAAqBlG,MAAI,KAAS,wBAACmG,QAAG,EAAS,S,YAAkB,O,IAAEkJ,U,GAAQgC,UAAAA,QAAO,EAAC,QAAC,EAAO,O,EAAsB,M,UAAwC,kBAAC,IAAIpR,MAAG,SAAe,GAAuBxC,OAAM,GAAC,KAAmC,QAAO4R,EAAM,uB,MAAC,CAAgB,MAAS,EAAC5Q,SAAQ,QAAG,KAAC,EAAC,MAAS,E,QAA0B0O,GAAoD,IAAI,oEAAQ,KAAsCpN,IAAyBpC,MAAIkxD,G,MAAgB,CAAC3vD,MAAAA,EAAU,YAAc,qBAAM,EAAC,YAAe,CAACzB,EAAO,WAAW,gBAAyE,SAACuB,MAAM,CAACH,MAAOlB,EAAI8C,GAAK,qCAACV,MAAQ,CAAC,SAAUsoB,a,MAAmB,CAACnpB,MAAAA,EAAU,KAAO,qBAAM,EAAC,MAAsBzB,EAAO,WAAUE,UAAyBqB,EAAK,qBAAC,C,MAAM,CAA2Be,MAAQ,CAAC,SAAUsoB,a,MAAkC,CAACnpB,MAAAA,EAAU,oBAAsB,qBAAM,EAAC,oBAAa,CAACzB,EAAO,WAAW,yBAAoDuB,EAAK,KAAC,C,MAAM,CAAsBe,MAAQ,EAAC,mD,MAAuC,CAACb,MAAAA,EAAU,eAAiB,qBAAM,EAAE,kBAAQ,WAAM,qBAAevB,GAAYoC,IAAyBpC,MAAIu4C,G,MAAW,CAACh3C,MAAAA,EAAU,OAAS,qBAAG,UACz/C,EACGnB,WAAAA,W,QCFwCkC,GAAOK,WAAS,MAAU,KAAkC7C,EAAK,EAAC,S,OAAC,qBAAiB,W,MAAC,CAAwB,MAAS,EAAC,MAAK,sBAAG,QAAC,MAAsB,IAAG,oB,mBAAiF,mCAAE,OAAIE,KAAO,KAE/RI,CAAAA,EAAAA,GAAAA,UAAoB,oDAExB,E,MCsBA,IACAC,MAAAA,IACA,WACAa,MAAAA,CACAnB,KAAAA,SAGAgB,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,kCACA,ICpC0Q,M,uBCA/C,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC0BhC,IACAX,OACA,OAAA03C,QAAAA,EAAAz1C,KAAAA,GAAAouD,aAAAA,EAAAzpB,oBAAAA,GAAA0pB,gBAAAA,EACA,EACA9qD,WAAAA,CACA+qD,kBAAAA,GAAA/oB,iBAAAA,IAEA7jC,SAAAA,CACAqF,WACA,OAAA/G,KAAAA,KAAAA,KAAA2kC,oBAAAA,KAAAA,oBAAA0pB,eAAAA,KAAAA,eACA,GAEA9wD,MAAAA,CACAa,MAAAA,OACAJ,QAAAA,CACAf,KAAAA,QACAS,SAAAA,IAGAO,QAAAA,CACAswD,4BAAAA,IACA3vD,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,iCACA6xB,KAAAA,qBACA,uBACA,ICxE6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCb1B,SAAU+9B,GAAIloC,EAAGyW,GACnB,OAAOzW,EAAIyW,CACf,CAEA,QACIx3B,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,8BAClB,EACA1L,WAAY,CACRkrD,qBAAoB,GACpBhmC,mBAAkBA,IAEtBxqB,QAAS,CACLywD,oBAAoBlnC,EAAAA,GAAAA,IAAQ,sBAAsBrjB,iBAC9C,IAAI+a,EACDlgB,KAAK6X,SACJqI,EAAS,CAACA,OAAQ,CAACyvC,WAAYz4C,GAAON,IAAI5W,KAAK6X,QAAQtJ,OAAO,iBAElEvO,KAAK2gD,gBAAkBxgC,EAAAA,EAAAA,KAAAA,IAAe,gBAAiBD,GAAQxS,MAAMG,GAAMA,EAAE9O,MACjF,IACA6wD,iCACI5vD,KAAK0vD,oBACT,EACAG,mBAAmBC,GACf9vD,KAAKivD,iBAAmBa,EACxB9vD,KAAKmvD,gBAAiB,CAC1B,EACAD,iBAAiBa,GACb/vD,KAAKmvD,eAAiBY,EACtB/vD,KAAK0vD,oBACT,GAEJ3wD,OACI,MAAO,CACH4hD,UAAW,GACXrV,OAAQ,OACR2jB,iBAAkB,KAClBE,gBAAgB,EAChBt3C,OAAQ,IAAIsB,KACZ62C,UAAY94C,GAAON,IAAI,IAAIuC,MAAQ5K,OAAO,cAC1CugD,UAAY53C,GAAON,IAAI,IAAIuC,MAAQlB,KAAK,GAAI,SAAS1J,OAAO,cAEpE,EACA7L,SAAU,CACNutD,cACI,OAAQjwD,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAK87C,yBAAwB7uC,OAAOmuC,GAAK,GAA1E,CAC7B,EACA1M,eACI,OAAQ9iD,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAK8tC,mBAAkB7gC,OAAOmuC,GAAK,GAApE,CAC7B,EACAzT,YACI,OAAQ/7C,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAK+tC,gBAAe9gC,OAAOmuC,GAAK,GAAjE,CAC7B,EACAzM,cACI,OAAQ/iD,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAKguC,kBAAiB/gC,OAAOmuC,GAAK,GAAnE,CAC7B,EACAW,aACI,OAAQnwD,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAKg8C,wBAAuB/uC,OAAOmuC,GAAK,GAAzE,CAC7B,EACAa,kBACI,OAAQrwD,KAAK2gD,UAAgB3gD,KAAK2gD,UAAU7yC,KAAKsG,GAASA,EAAKk8C,sBAAqBjvC,OAAOmuC,GAAK,GAAvE,CAC7B,EACAtZ,SACI,OAAQl2C,KAAK2gD,WAAiB3gD,KAAK2gD,UAAU3pC,OAAS,EAAI,WAAahX,KAAK2gD,UAAU,GAAGzK,OAAS,IAAzE,EAC7B,EACA+M,kBACI,OAAKjjD,KAAK2gD,UACH3gD,KAAK2gD,UAAU3pC,OADM,CAEhC,EACA3X,UACI,MAAMkxD,EAAYvwD,KAAKyrB,YAAYO,iBAAiB,gBAAiB,EAC9D3sB,GAAwB,IAAdkxD,EAAsB,CAAC,CAChCzwD,KAAME,KAAKiQ,GAAG,8BACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACdiqC,MAAO,MACP96C,MAAO,yBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0CACdiqC,MAAO,MACP96C,MAAO,mBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,uCACdiqC,MAAO,MACP96C,MAAO,gBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,gCACdiqC,MAAO,MACP96C,MAAO,kBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,yCACdiqC,MAAO,MACP96C,MAAO,kBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,uCACdiqC,MAAO,MACP96C,MAAO,wBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACdiqC,MAAO,MACP96C,MAAO,sBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,WACd7Q,MAAO,UACP+wB,UAAU,IAEd,CAAC,CACGrwB,KAAME,KAAKiQ,GAAG,8BACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACdiqC,MAAO,MACP96C,MAAO,yBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,uCACdiqC,MAAO,MACP96C,MAAO,gBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,uCACdiqC,MAAO,MACP96C,MAAO,wBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACdiqC,MAAO,MACP96C,MAAO,sBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,WACd7Q,MAAO,UACP+wB,UAAU,IAGlB,OAAO9wB,CACX,MACGmpC,EAAAA,GAAAA,IAAUrc,KAEjBhnB,gBACInF,KAAK0vD,oBACT,EACA5tD,MAAO,CACH+V,OAAQ,CACJ7V,QAAS,WACLhC,KAAK0vD,oBACT,KClLqS,M,uBCAxF,GAAe,KCOpO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,2BCtBoH7O,W,IAAuD,EAAE,K,EAAC,EAAM,MAAC,G,OAAe,aAAa,kB,MAAC,CAA+B,WAAe,wBAAmB,gDAAiB7iD,KAAM,eAAC,YAAsB,+BAACuB,eAAM,sB,CAAiBe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAQ,mBAAC,IAAiB,OAAIE,MAAG,EAAO,IAAED,SAAI,YAAWrC,EAAM,IAAC,CAA+BqC,EAAoBrC,WAAO,QAAyC,CAACA,EAAG,KAAI,CAAsEqB,IAAK,U,CAAEH,EAAAA,GAAOlB,mBAAQ,Q,IAACoC,e,GAAyBpC,GAAI6uD,gBAAO,Q,IAAC,S,CAACttD,EAAAA,GAAAA,0BAAW,uBAAK,OAAIe,MAAG,MAAcD,SAAI,YAAa,EAAC,KAAevC,EAAO,WAAY,QAAwC,SAAC0C,IAAG,U,CAAC,iB,MAAsC,CAA+B,WAAC,aAAC,WAAe,U,GAA0C,CAAC,+BAAM,OAAK,sBAAcH,EAAoBC,aAAc,YAACxC,OAAM,gBAAC,MAA+D,WAAG,IAAI,eAAkBuC,CAAAA,EAAI,YAAQ,MAAK,CAASvC,WAAM,aAAC,eAAiBgwB,EAAAA,mBAAkC,WAAG,IAAI,SAC/rC,YACG1vB,MAAAA,CAEJ,WAAiBA,EAAAA,W,iDCJqN,W,IAAgBoI,EAAG,K,EAAW,QAAW,G,SAAU1I,WAAM,mB,YAAC,O,MAAc,C,MAACyI,EAAAA,GAAW,qB,QAAc,8B,YAA4B,O,wCAAW,QAAW,C,MAAuBhG,C,WAAyB,I,YAAqB,KAAW,CAAC,C,IAAE,Y,GAAE,UAASzC,G,EAA+BA,M,IAAiB,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,EAAI,GAAG,CAAoD,mBAAG,OAAO,MAAUsC,YAAqB,eAA0B,QAAWgwD,GAAAA,GAAAA,GAAoB,eAAC,UAA0I,uEAAC,M,CAAuD,gBAAC,IAAIhwD,MAAG,YAAwI,6BAAM,IAAY,QAAS,0EAAI,IAAW,MAAY+O,SAAG,GAAY,4BAAM,IAAwB,QAAc,2FAACvR,EAAO,OAAO,GAAe,CAAmC,cAACyI,GAAAA,WAAqBlG,MAAK,MAAU,WAACmG,E,OAAc0N,IAAM,MAAC,I,GAAC,cAAeq8C,C,MAAmBzyD,C,MAAO,Y,QAAc,wB,YAA0B,O,6BAA0B0C,K,WAAiC1C,EAAK,KAAs0C,wBAAr0C,Q,kBAAU,I,YAA+C,OAAG,IAAC,YAAcoW,GAAI,UAAU,GAAqBpW,IAAiB,mBAAMoW,MAAKs8C,CAAsC,UAA0B,GAAOxyD,CAAAA,EAAIyyD,EAAAA,EAAAA,CAAAA,EAAAA,GAAgB,gBAAM,OAAC,UAAG,CAAI,SAAHnwD,EAAG,KAAmB,EAAG,KAAC,CAAqJE,MAAG,CAAC,MAAQ,K,CAAoD,kBAA4O,OAA5O,QAAC,IAAIF,MAAG,YAAsKxC,OAAM,qBAAC,IAAa,CAAE,EAACoW,GAAAA,EAAKs8C,CAAAA,EAAe,IAAK,iBAAc,gEAAChwD,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI0yD,mBAAmBx8C,EAAK,IAAI,CAAC5T,EAAG,QAAkB,IAAK,MAAS,aAAc,GAAI,EAAE,MAAK,SAA0B,WAAmB,EAAEtC,GAAIG,eAAiB,QAAU,GAAI,EAAE,KAAIH,CAA2BwC,MAAG,CAAC,MAAQ,K,CAAsD,kBAA2P,OAA3P,QAAC,IAAIF,MAAG,YAAwL,8BAAQ,IAA+BiG,CAAAA,EAAW,KAAS,wFAAI,GAAC,CAAa,MAAS,YAAEiJ,OAAAA,EAAAA,qBAAAA,EAAQ,IAA6B1R,CAAAA,EAAK,KAAC,4F,UAAsC,M,GAAuB,iB,YAACyI,EAAW,GAACvI,CAAAA,C,2BAA0B,M,UAAyB0I,CAAAA,EAAAA,gBAAO,C,MAAEnI,CAAM,QAAE,yB,MAAQ,EAAI,Y,YAAmB,EAAQ,K,2BAA+B,K,EAAC,OAAC,EAAK,Q,EAAqD2c,M,UAAsDhc,CAAAA,EAAO,cAAa,C,GAACK,CAA2B,kBAACzB,OAAM,GAAC,KAA2B,QAAQ4I,EAAO,WAAiS,uBAAe,C,WAAQgJ,CAAAA,CAAO,kBAAiD,uBAAG,MAAC,aAAC,WAAU,iB,MAA2C,CAAC,QAAI,gBAAQ,KAAK,EAAI,8CAAI,IAAO,oBAAYokB,IAAQ68B,KAAAA,EAAAA,SAA6B,KAA5f,qB,WAAQjhD,CAAAA,CAAO,kBAAiD,uBAAG,MAAC,aAAC,WAAU,iB,MAA2C,CAAC,QAAG,MAAI,EAAsBwL,MAAU,EAAGpa,KAAK,EAAaqa,OAAQ,iBAAc,sB,GAAsB5b,CAA2B,oBAACzB,IAAM,gBAAC,KAAwTyB,IAAuC,WAAsBgH,K,MAAsC,C,MAAWiJ,EAAAA,QAAAA,mBAAM,SAAE,YAAC,OAAQlP,EAAG,6BAA8B,E,aAAQ,gC,gBAA+EtC,C,YAAe,KAAWA,CAAAA,C,2BAA0C,M,UAA8B,GAAC,8BAAS,C,MAAI,C,MAAe,kB,QAAQ,8B,OAAS,a,SAAE0I,EAAAA,gBAAAA,CAAS,SAAC,GAAC,M,YAA8B,EAAQ,K,2BAA+B,K,EAAC,OAAC,EAAK,Q,EAA8B,Q,UAAoC,GAAM,cAAO,C,GAAC,CAA+B,MAAS,SAAC5H,GAAQ,UAAG,K,EAA2B,MAAW8xD,EAAAA,EAAAA,EAAAA,C,MAAgC,CAAC,gBAAItwD,KAAG,SAAUxC,KAAM,EAAC,SAAO,MAAE,WAA2C,IAAQ,MAAK,YAAI,qCAAW,QAAW,MAACg2B,CAAyC,KAAUpL,KAA2D,oCAACnpB,IAA2C,WAAsBgH,K,MAAsC,C,MAAWiJ,EAAAA,QAAAA,uBAAM,SAAE,YAAC,OAAQlP,EAAG,iCAAmB,E,aAAQ,oC,gBAAyE,C,YAA6B,KAAWtC,CAAAA,C,iBAAgD,UAAC,M,UAAsC,CAAC,qBAAS,C,MAAE0I,C,QAAe,yB,MAAEnI,EAAAA,aAAM,MAAE,8B,SAAW,EAAC,+B,QAAkB,G,YAA0B,EAAOiR,GAAAA,CAAAA,C,iBAAQ,kBAAC,EAAM,O,EAAqC0L,M,UAAsDhc,CAAAA,EAAO,cAAa,C,GAACK,CAA2B,kBAACzB,OAAM,GAAC,KAAuC,QAAQ4I,EAAO,sB,WAAQgJ,CAAAA,CAAO,kBAA+D,uBAAG,MAAC,aAAC,WAAU,iB,MAA2C,CAAC,qBAAI,gBAAQ,KAAK,EAAI,4DAAI,IAAO,oBAAYokB,IAAQ+8B,KAAAA,EAAW,SAAU,KAA0DtxD,IAA+B,WAA6BzB,K,MAA8C,CAA0B,gBAAe,WAAqD,qBAAI,gCAAC,E,WAAqC,wBAAa,wBAACuB,MAAM,CAACH,eAAkB,EAAC4xD,kBAAiB1wD,WAAS,a,YAA6B0zB,iBAAS,oC,GAAyBv0B,CAAoC,oBAAM,OAAC,YACr5L,GAGD,MAASN,C,2JCJsLsH,GAAAA,W,IAAqBlG,EAAI,K,EAAY,EAAC,S,OAAWqP,EAAAA,YAAAA,C,MAAS,C,MAAQ,EAAI,GAAG,qB,SAAwB1R,EAAI6J,GAAAA,wB,QAAS,EAAS6H,S,YAA2B,EAAU1R,GAAG,CAACc,C,IAAQ,U,GAAmB,UAAC,WAAeO,MAAM,sBAACH,KAAWT,EAAM,SAAC2B,OAAS,EAAgBpC,QAAU0qB,EAAG,MAAC,kBAACnpB,MAAW,UAAWe,IAAmBxC,MAAM,G,MAAC,CAAgC,QAAU,MAAI,kBAAc,GAAC,QAAYiS,CAAW,EAAC1Q,WAAM,U,CAAkBe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAS,MAAC,sBAACb,SAAW,GAAM,aAAIe,MAAG,c,MAAuB,CAAkE,MAAO,EAAEtC,KAA2C,SAAU,SAAG,GAAC,OAAY+R,CAAY,EAAC1Q,WAAM,UAAmBe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAU,SAAC,2CAACb,MAAAA,CAAU,EAAC,oCAAO,YAAIe,MAAG,EAAS,GAAG,U,MAA+D,CAAc,cAACjB,SAAM,YAACH,EAAK,MAAM6xD,CAAS3wD,E,WAA6B2wD,WAAaxxD,EAAAA,GAAAA,EAAU,GAAC,sBAAS,OAAI,SAAO,I,MAAuQ,CAAqBa,MAAAA,EAAS,Q,SAAoB4wD,SAAa,GAAK,WAACzxD,EAA0B,yBAAkRF,GAAM,8J,MAAM,CAAqBe,MAAAA,EAAS,c,SAAoB6wD,SAAa,GAAK,iBAAC1xD,EAA0B,+BAAkRF,GAAM,0K,MAAM,CAAwBe,MAAAA,EAAS,c,SAAoB8wD,SAAAA,GAAqB,iBAAC3xD,EAA6B,+BAC3tE,6KACGnB,MAAAA,CAEJ,MAASa,EAAQb,iB,uPC+EjB,IACAC,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACAqC,KAAAA,GACAiJ,MAAAA,GACAgnD,SAAAA,EACAE,eAAAA,EACAD,eAAAA,EACAE,kBAAAA,EACAC,YAAAA,EAEA,EACAvvD,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,GAGA,mBACA,yBACA,2BACA,gBACA,+CACA,2DACA,2DACA,mEATA,YAYA,EACAiG,WAAAA,EACAlG,MAAAA,IAGAW,SAAAA,CACAqF,WACA,WAKA,OAJA,gCACA,4CACA,4CACA,kDACA,CACAkC,MAAAA,KAAAA,MACAqnD,SAAAA,KAAAA,KACA1kC,cAEA,GAEA3tB,QAAAA,CACA2S,QACA,mBACA,gBACA,eACA,gBACA,sBACA,sBACA,wBACA,IC7IoQ,M,uBCA/C,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYpR,GAAOK,WAAS,MAAU,KAAgB7C,EAAK,EAAC,S,OAAC,OAAcgB,C,MAAQ,CAAsB,QAAQd,EAAI8oB,QAAM,QAAU,EAAC,QAAK,cAAkC,WAAU9oB,KAAa,iBAAgB4xB,EAAAA,aAAW,qBAAG,YAAC,c,GAAwC5xB,CAAuB,sBAAC,YAAC,gB,EAAgE,wBAAC,YAAC,eAAgB,C,EAAoC,gBAAC,YAAC,WAAgB,C,EAAqC,iBAAC,YAAC,WAAiB,C,EAAuC,kBAAC,YAAC,aAAkB,C,EAAuC,+BAAE,cAACuI,G,YAA+C,EAAS,K,IAAE2N,mBAAK,GAAE,eAAC,IAAgX,sUAAC7T,GAAmBmG,C,IAAc0N,eAAK,GAAE,eAAC,IAA4C,MAAG,iCAAgB,IACnoC,UAGD,E,MCDO,MAAMm9C,GAAqB,CAACC,EAAgBC,KAC/C,MAAMC,GAAYF,GAAS,IAAI1jD,KAAK8tB,IAAC,CACjCz0B,GAAIy0B,EAAEz0B,GACN8C,MAAO2xB,EAAE3xB,MACTqnD,SAAU11B,EAAE01B,SACZrzD,KAAM,OACN2uB,YAAagP,EAAEhP,gBAEb+kC,GAAiBF,GAAc,IAAI3jD,KAAK8jD,IAAE,CAC5CzqD,GAAIyqD,EAAGzqD,GACP8C,MAAO,KACPqnD,SAAUM,EAAG5wD,KACb4rB,YAAaglC,EAAGhlC,YAChB3uB,KAAM,YAEV,OAAOyzD,EAAS54C,OAAO64C,EAAc,EAGzC,QACIpzD,MAAO,CAAC,QAAS,WACjBQ,OACI,MAAO,CACHsxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GAEtB,EACA5tB,SAAU,CACNrD,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,WACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,eACd7Q,MAAO,cACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,WACd7Q,MAAO,UACP+wB,UAAU,GAGtB,ICtDoS,MCQxS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIF,GAAe,GAAiB,QCnB4B,GAAU,W,IAASnyB,EAAM,K,EAAC,EAAM,MAAC,G,OAAS,MAAQ,C,MAAY,CAAe,cAAqC,MAAS,YAAa,UAAWG,GAAK,6BAAG,QAAC,UAAC,KAAO,EAAC,M,GAAyC,CAAmB,kBAAO,OAAN,mBAAO,EAAS,QAACH,IAAgB,QAAE,MAAMK,CACtU,UAGD,GAASc,GAAAA,WAAQb,EAAAA,GAAe,c,QCchC,IACAC,MAAAA,CACAa,MAAAA,OACAX,MAAAA,SACAE,MAAAA,QACAR,KAAAA,OACAitC,OAAAA,CACAntC,KAAAA,OACAS,QAAAA,uCAGAK,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,IACA,qBACA,sBACAgxB,KAAAA,OAAAA,GACAviB,MAAAA,GAAAA,EAAAA,OACA,aACA,uBASA,CARA,WACAhO,EAAAA,EAAAA,IACA,mIAEA,wBACA,SACA,gBACA,kBACA,CACA,ICpDsQ,MCOlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB4B,GAAU,W,IAAS1B,EAAM,K,EAAC,EAAM,MAAC,G,OAAS,MAAQ,C,MAAY,CAAe,cAAqC,MAAS,YAAa,UAAWG,GAAK,6BAAG,QAAC,UAAC,KAAO,EAAC,M,GAAyC,CAAmB,kBAAO,OAAN,mBAAO,EAAS,QAACH,IAAgB,QAAE,MAAMK,CACtU,UAGD,GAASc,GAAAA,UAAQb,EAAAA,GAAAA,YAAe,E,QCchC,IACAC,MAAAA,CAAAA,QAAAA,QAAAA,QAAAA,OAAAA,UACAQ,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,IACA,qBACA,qBACAusD,KAAAA,OAAAA,GACA99C,MAAAA,GAAAA,EAAAA,OACA,aACA,uBASA,CARA,WACAhO,EAAAA,EAAAA,IACA,mIAEA,wBACA,SACA,gBACA,kBACA,CACA,IC3CyQ,MCOrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB4B,GAAU,W,IAAS1B,EAAM,K,EAAC,EAAM,MAAC,G,OAAS,MAAQ,C,MAAQ,CAAe,cAAqC,MAAS,QAAa,UAAWG,GAAK,6BAAG,QAAC,UAAC,KAAO,EAAC,M,GAAyC,CAAmB,kBAAO,OAAN,mBAAO,EAAS,QAACH,IAAgB,QAAE,MAAMK,CAClU,UAGD,GAASc,GAAAA,WAAQb,EAAAA,GAAe,c,QCchC,IACAC,MAAAA,CACAa,MAAAA,OACAX,MAAAA,SACAE,MAAAA,QACAkzD,aAAAA,OACA1zD,KAAAA,OACAitC,OAAAA,CACAntC,KAAAA,OACAS,QAAAA,uCAGAK,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,IACA,iCACAsR,KAAAA,OAAAA,CACAxR,KAAAA,KAAAA,UAAAA,CAAAA,KAAAA,MAAAA,QACAM,QAAAA,CACA,qCAGAqO,MAAAA,GAAAA,EAAAA,OACA,aACA,uBAUA,CATA,UACA/N,GAAAA,EAAAA,MACA,eACA,mIAEA,wBACA,SACA,gBACA,kBACA,CACA,IC1DyQ,MCOrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB6K8G,GAAAA,W,IAAqBlG,EAAI,K,EAAY,EAAC,S,OAAWqP,EAAAA,YAAAA,C,MAAS,C,MAAQ,EAAI,GAAG,4B,SAAwB1R,EAAI6J,GAAAA,+B,QAAS,EAAS6H,S,YAA2B,EAAU1R,GAAG,CAACc,C,IAAQ,U,GAAmB,UAAC,WAAeO,MAAM,sBAACH,KAAWT,EAAM,SAAC2B,OAAS,EAAgBpC,QAAU0qB,EAAG,MAAC,kBAACnpB,MAAW,UAAWe,IAAexC,MAAM,G,MAAC,CAAgD,MAAO,EAACE,MAAW,SAAQ,SAAO,GAAC,QAAY,CAAO,EAAkB,qB,CAAQkB,EAAAA,GAAAA,EAAW0yD,C,MAASxxD,C,SAA6BwxD,EAAQlpC,UAAG,yBAAC,SAACnpB,MAAAA,QAAoB,mBAAIe,aAAaA,M,MAAiE,CAAc,gBAACjB,SAAM,YAACH,EAAK,QAAM6xD,CAAS3wD,E,WAA6B2wD,aAAaxxD,EAAAA,GAAAA,EAAU,GAAC,sBAAS,OAAI,SAAO,I,MAAqR,CAAqBa,MAAAA,EAAS,Q,SAAoB4wD,SAAa,GAAK,WAACzxD,EAA0B,yBAAgSF,GAAM,4K,MAAM,CAAqBe,MAAAA,EAAS,c,SAAoB6wD,SAAa,GAAK,iBAAC1xD,EAA0B,+BAAgSF,GAAM,wL,MAAM,CAAwBe,MAAAA,EAAS,c,SAAoB8wD,SAAAA,GAAqB,iBAAC3xD,EAA6B,+BAC9iE,2LACGnB,MAAAA,CAEJ,MAASa,EAAQb,iB,qQC0EjB,IACAC,MAAAA,CAAAA,UAAAA,QAAAA,SAAAA,YACAQ,OACA,OACAJ,OAAAA,EACAmzD,QAAAA,GACAb,SAAAA,EACAE,eAAAA,EACAD,eAAAA,EACAE,kBAAAA,EACAC,YAAAA,EAEA,EACAvvD,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,GAGA,mBACA,uBACA,gBACA,+CACA,2DACA,2DACA,mEARA,YAWA,EACAiG,WAAAA,EACAlG,MAAAA,IAGAW,SAAAA,CACAqF,WACA,WAKA,OAJA,gCACA,4CACA,4CACA,kDACA,CACA+pD,QAAAA,KAAAA,QACAllC,cAEA,GAEA3tB,QAAAA,CACA2S,QACA,mBACA,gBACA,sBACA,sBACA,wBACA,ICnIoR,M,uBCA/C,GAAe,KCOhP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCyKhC,IACArT,MAAAA,CAAAA,aAAAA,YACAgI,MAAAA,GACA,gCACA,EACAhC,WAAAA,CACAwtD,YAAAA,GACAC,WAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,iBAAAA,GACAC,eAAAA,GACAC,4BAAAA,GACA5oC,mBAAAA,IAEA1qB,OACA,OACAwzB,GAAAA,KACAi/B,MAAAA,GACAC,WAAAA,GACAa,sBAAAA,GACAC,aAAAA,KACAC,WAAAA,KACAC,gBAAAA,KACAC,kBAAAA,KACA1+B,QAAAA,CACA+8B,YAAAA,EACAF,oBAAAA,EACA8B,wBAAAA,EACA3B,iBAAAA,GAGA,EACAtuD,SAAAA,CACAkwD,YACA,gDACA,GAEA9wD,MAAAA,CACAksB,WAAAA,CACAhsB,QAAAA,GACAkf,QAAAA,IAAAA,MAAAA,EAAAA,MACA,GACA,eACA,EACAjZ,WAAAA,IAGAhJ,QAAAA,CACAuxD,qBACA,qBACA,kCACA,EACAqC,oBACA,0BACA,sCACA,EACAjC,mBAAAA,GACA,sBAAAkB,QAAAA,EAAAA,GAAAllC,YAAAA,EAAAA,aACA,sCACA,EACAijC,mBAAAA,GACA,oBACA,0BACA,EACAc,iBAAAA,GACA,kBACA,kCACA,EACAmC,qBAAAA,GACA,yBACA,+BACA,EAGA,qCACA,aACAtH,iBAAAA,KAAAA,kCAAAA,EAAAA,UAAAA,EAAAA,aACA99C,MAAAA,GAAAA,EAAAA,OACA,gBACAgC,GACA,EACAqjD,UAAAA,EAAAA,GAAAA,IAAAA,YAAAA,iBACA7xC,QAAAA,IAAAA,MACA,gCACAf,EAAAA,EAAAA,KAAAA,IAAAA,iBAAAA,KAAAA,oBAAAA,MAAAA,GAAAA,EAAAA,OACAA,EAAAA,EAAAA,KAAAA,IAAAA,0CAAAA,MAAAA,GAAAA,EAAAA,OACAA,EAAAA,EAAAA,KAAAA,IAAAA,iBAAAA,KAAAA,kCAAAA,MAAAA,GAAAA,EAAAA,SAGA,aACA,kBACA,4BACA,MC5RuQ,M,uBCAlD,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBgTniB,W,MAAO,K,IAAU,MAAO,G,SAAc,yB,MAAG,C,MAAiC,c,QAAE,sE,YAAuC,EAAI,GAACg1D,CAAAA,EAAAA,YAAAA,cAAAA,oBAAAA,C,IAAc,gB,GAAE,W,MAAoB,GAAC,M,MAAC,CAAS,QAAI90D,MAAO,gBAA8C,GAAC,aAAM,MAAM,CAAgB,kBAAsB,aAAC,GAAUA,EAAImB,iBAAqD,OAAgB,CAAI,MAAUnB,CAAW,KAAa,KAAoC,2CAAC,E,OAAqCotC,GAAc,gB,CAAC,Q,MAAqC,CAAc,kBAAE,yCAAC7kC,iBAAmB,GAAElG,UAAK,SAA2CmG,QAAG,EAAS,gC,GAAQ,C,gBAAgBmN,SAASO,G,EAAiF46C,OAAU,C,EAI77B,6BAAG,UAACzuD,G,YAA4C6T,EAAAA,GAAAA,CAAAA,CAAK,IAAE,4C,GAAC,UAAa,K,IAIvF,uFAAG,4IAAM,eAAkB,kEAAC1N,G,CAAmB,IAAE,0B,GAAC,UAAa,KAA2G,IAAInG,MAAK,CAAA6T,EAAA,mBAAa,SAAI,QAAS,gGAAEA,CAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,mBAAAA,QAAAA,IAAAA,QAAAA,EAAAA,KAAK,G,KAA4EpW,oB,aAAO,K,UAA2ByI,CAAAA,EAAW,OAAQ,EAAC,gF,oCAAoC,K,aAAmC,YAAO,0C,MAAE,C,WAAQjG,GAAuC,WAAe,YAAa,EAAEA,GAAG,EAAexC,IAAM,YAAC,GAAI,UAAE,GAAiE,IAAqK,mBAAC,MAAQ,CAAiB,KAAWi1D,KAAsB,mCAAIzyD,IAAiK,UAAI,CAAI,EAAC,KAAI,SAAO,OAAeiG,GAAYvI,uBAAQ,wCAAkB,QAAS,oFAAEwR,GAAAA,CAAQ,kBAAC,OAAW,kBAAqB,EAAC1R,I,CAA8C,OAAYk1D,CAAAA,EAAAA,EAAAA,EAAY,wF,UAAwC,K,gBAA6C,C,YAACzsD,EAAW,GAACvI,CAAAA,C,2BAA0B,M,UAA2B0R,CAAAA,EAAAA,qBAAM,C,MAAE5Q,CAAQ,QAAE,2B,MAAQ,EAAI,a,MAAkB,6B,SAAC,EAAQ0Q,GAAAA,4B,YAAY,MAAU,C,IAAkC1R,U,aAAO,Q,EAAiF,M,EAAyB,O,EAAgB,Q,UAA8C,kBAAC0C,GAAG,CAAC,MAAS,KAAwD,uCAAC,OAAI,4FAAQ,MAAK,EAAI,eAAI,WAAkB,GAACyyD,CAAyB,QAAa,SAAE,GAAKA,IAAc,MAAI,sBAAC,KAAqC,IACp5D,WAGD,K,qHCZIh0D,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAQ,+BAA8BE,EAAIic,0BAA0Bjc,EAAIkB,OAAS,CAAC,GAAGuc,KAAK,QAAU,MAAMjb,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAClS,EACIvgB,GAAkB,GCqBtB,IACAC,MAAAA,IACA,WACAa,MAAAA,CACAnB,KAAAA,QAEAkc,eAAAA,QAEAlb,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,6CACA,IClCqR,M,uBCA/C,GAAe,KCOjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICtBK0zD,GDsBL,GAAe,GAAiB,SCtBhC,SAAKA,GACDA,EAAAA,UAAAA,SACAA,EAAAA,iBAAAA,gBACAA,EAAAA,6BAAAA,4BACAA,EAAAA,eAAAA,cACAA,EAAAA,2BAAAA,0BACAA,EAAAA,kBAAAA,iBACAA,EAAAA,8BAAAA,6BACAA,EAAAA,qBAAAA,oBACAA,EAAAA,iCAAAA,+BACH,EAVD,CAAKA,KAAAA,GAAY,KAYjB,UCTO,MAAMC,IAAiCjnC,EAAAA,GAAAA,IAAY,CACtDjlB,GAAI,yBACJklB,MAAO,MACHinC,aAAc,KACd7pD,SAAU,KACV0Q,eAAgB,OAEpB0S,QAAS,CACL0mC,uBAAuBC,GACnBxzD,KAAKszD,aAAeE,EAAkBF,aACtCtzD,KAAKyJ,SAAW+pD,EAAkB/pD,SAClCzJ,KAAKma,eAAiBq5C,EAAkBr5C,cAC5C,GAEJkb,SAAS,ICVb,QACI92B,MAAO,CAAC,aAAc,YACtBgG,WAAY,CACRkvD,uBAAsBA,IAE1B10D,OACI,MAAO,CACHo0D,gBAAgB,EAChBD,aAAc,KACd5nB,OAAQ,eAEhB,EACArsC,QAAS,CACLywD,qBACI1vD,KAAKgE,MAAM,qBACf,EACA0vD,eACI1zD,KAAKgE,MAAM,eACf,EACAivD,gBAAgB7+C,GACZpU,KAAKkzD,aAAe,CAAEt3C,KAAMxH,EAAKpT,KAAM2a,GAAIvH,EAAKjN,GAAIwsD,qBAAsBv/C,EAAKw/C,sBAC/E5zD,KAAKmzD,gBAAiB,CAC1B,GAEJzwD,SAAU,CACNswD,iBACI,MAAO,qBAAqBhzD,KAAKguB,uBACrC,EACA3uB,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,yCACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,qCACd7Q,MAAO,yBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,yBACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,gCACd7Q,MAAO,uCACP86C,MAAO,MACP/pB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,+BACd7Q,MAAO,qBACP86C,MAAO,MACP/pB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0BACd7Q,MAAO,UACP86C,MAAO,MACP/pB,UAAU,GAGtB,MACGqY,EAAAA,GAAAA,IAAUrc,KAEjBpsB,UACI,MAAM8zD,EAAoB,CACtBP,aAAcF,GAAAA,OACd3pD,SAAUzJ,KAAKguB,WACf7T,eAAgB,MAEdob,EAAQ89B,KACd99B,EAAMg+B,uBAAuBM,EACjC,GClFoT,M,uBCA9F,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBmK,cAAC,IAAGrzD,EAAG,KAAuD,IAAS,MAAC,G,OAAkB,EAACgsB,MAAQsnC,CAAAA,EAAAA,eAAAA,CAAS,MAAM,CAAuC91D,MAAM,W,QAAC,kE,CAAkL,EAAC,wC,OAAI,Q,IAAC,EAAS,W,GAAiB,KAAW+1D,CAAAA,EAAAA,GAAAA,EAAsBD,C,MAAkB,CAAE,uGAACv0D,QAAM,6C,GAA2Be,C,OAAiC,SAAU,GAAkB,qCAACb,GAAiC,MAAKe,CAAkDxC,MAAM,YAAC,SAAQwuB,SAAQwnC,GAAkB,uBAAI91D,EAA2D,WAAQ,wBAE94BI,GAAAA,EAAAA,GAAAA,GAAoB,UAExB,MAASa,C,gGCwBT,IACAZ,MAAAA,CAAAA,aAAAA,kBACAmE,SAAAA,KACA,cAEAzD,QAAAA,CACA,yBACA,IACA,wCACA,SAAAq7C,mBACA,+EACA16C,EAAAA,EAAAA,IAAAA,iCAAAA,GAMA,CAJA,WACAF,EAAAA,EAAAA,IAAAA,2CACA,SACA,qCACA,CACA,IC9C0Q,MCOtQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC2BhC,IACA6G,MAAAA,GACA,oCAAAs6C,aAAAA,EAAAA,SAAAA,EAAAA,SAAAA,KAAAA,OACA,EACAt8C,WAAAA,CACA0vD,WAAAA,GACAC,SAAAA,GACAC,MAAAA,IAEAl1D,QAAAA,CACAywD,oBAAAA,EAAAA,GAAAA,IAAAA,sBAAAA,iBACA,qEACA,IACAgE,cAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,iBACA,IACA,wFACA,4CAAA7S,aAAAA,KAAAA,SAAAA,MAGA,CAFA,WACAnhD,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,+BACA,CACA,IACA00D,sBAAAA,EAAAA,GAAAA,IAAAA,2BAAAA,iBACA,IACA,uCACAhqD,kBAAAA,KAAAA,uBACAsD,MAAAA,GAAAA,EAAAA,MAGA,CAFA,WACAhO,EAAAA,EAAAA,IAAAA,iDACA,CACA,KAEAX,OACA,OACAguD,IAAAA,SACA/+B,WAAAA,KACA8hC,SAAAA,CACA9uD,KAAAA,MACAqzD,wBAAAA,CACA,CACAxgD,MAAAA,CACAygD,OAAAA,KACAC,cAAAA,CACAptD,GAAAA,KACAqtD,iBAAAA,KACAC,kBAAAA,UAMAC,eAAAA,GAEA,EACA5yD,MAAAA,CACAsnB,OAAAA,CACApnB,QAAAA,GACA,IACA,4BACA,oBACA,4BACA,EACAiG,WAAAA,EACAlG,MAAAA,KC3GuQ,M,uBCA/C,GAAe,KCOnO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB4BwZ,GAAOrd,WAAsB,MAAU,KAA8BF,EAAK,EAAC,SAAQ,EAACE,MAAO,Y,OAA+B,EAAM,WAAC,kBAAsB,OAAIsC,MAAG,KAAa,+BAAuCxC,KAAM,0B,EAAmEyyC,GAAAA,EAAa,GAAEvyC,eAAIuyC,CAAAA,EAAAA,cAAAA,C,MAAe,CAAE,4DAAChqC,cAAkB,EAAE,iB,YAAqCvI,EAAIG,GAAG,EAAwD,IAAC,UAACyS,GAAAA,WAAY,gEAAItQ,EAAkBxC,OAAM,O,EAAgEu1B,cAAer1B,C,MAAmB,CAAE,yDAACuI,cAAkB,EAAE,iB,YAAqCvI,EAAIG,GAAG,EAAqD,IAAC,UAACyS,GAAAA,WAAY,6DAAK5S,EAA6EuC,OAAAA,OAAmC,cAAe,0CAAmC,iBAAC,YAAC,gBAACgzB,MAAAA,CAAU,MAAQ,2C,SAAkD,CAAE,kBAAChtB,OAAW,EAACvI,sBAASqC,G,YAAoCrC,EAAIG,GAAG,EAAmM,IAAC,UAACyS,GAAAA,WAAa,MAAK,GAAK,GAAC,MAAU,wKAAG,EAAiC9S,OAAM,IAAC,MAAO,EAAO,cAA4C,QAAUE,GAAI+R,EAAG,gB,MAAkC,CAAmB,MAAS,EAAC/R,GAAI+c,2CAAiC,+CAACxU,aAAe,MAAMlG,QAAI,QAAe,4B,YAAuBC,EAAG,K,IAAYC,gB,GAAwBoL,W,MAAa,GAAO,KAAC,CAAO,YAAC,YAAC7N,YAAM,CAAC,MAAQ,S,MAA+C,CAAmB,cAACuB,MAAM,6BAACH,gBAAiB,I,MAA6B,CAAU,MAAC,QAACK,SAAU,SAAC,GAAO,SAAI,EAAC,sBAAiBe,EAAqBxC,OAAM,M,CAAwB,mBAAW21B,C,MAAa,CAAiD,WAAW,UAAG,oBAAG,YAAC,iCAAC,WAAW,IAAwB,GAAG,CAAgB31B,MAAM,0BAA2B,gBAAgBE,C,MAA6B,CAAkD,sBAAsE,gBAAc,2BAAC,eAAW,iCAAE,oEAAI,UAAQsC,KAAoB,WAAC,OAA+B,wBAAG,GAAG,CACpyE,+BAGD,E,QCYA,IAAe8D,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAC,MACRgI,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,8BAClB,EACA1L,WAAY,CACRqkD,eAAc,GACdkE,YAAWA,IAEf/sD,UACIC,KAAKgpD,sBAAsBhpD,KAAKgnD,oBAChChnD,KAAKsxC,2BACLtxC,KAAKuxC,yBACT,EACAxyC,OACI,MAAO,CACH0xC,cAAev5B,GAAON,MAAMrI,OAAO,QACnCglB,cAAerc,GAAON,MAAMqB,KAAK,EAAG,UAAU1J,OAAO,QAErDw4C,iBAAkB,EAClBkC,gBAAiB,EACjBC,cAAe,EACfC,aAAc,EAEdC,gBAAiB,EACjBC,eAAgB,EAEhB/5C,MAAO,SAEP03C,mBAAoB,CAChB9tC,aAAc,MACd5B,YAAa9F,GAAAA,QACb8H,YAAa,GACboB,YAAa,iBAEjBiZ,aAAc,CAAEsJ,SAAU,GAAIzD,OAAQ,IACtC6G,aAAShzB,EACTi8C,eAAgB,KAChB5Y,sBAAuB,CAAC,EACxBC,qBAAsB,CAAC,EACvB2Z,cAAe,CAAC,EAEhBh/B,aAAc3mB,EAAAA,EAAAA,MAAa4kD,cAEnC,EACAznD,MAAO,CACHklD,mBAAoB,CAChBhlD,QAAQpE,GACCA,IACDoC,KAAKib,MAAMC,GAAG,yBAClBlb,KAAKgpD,sBAAsBprD,GAC/B,EACAqK,WAAW,EACXlG,MAAM,GAEVuN,MAAO,CACHtN,UACShC,KAAKgnD,qBACNhnD,KAAKib,MAAMC,GAAG,yBAClBlb,KAAKgpD,sBAAsBhpD,KAAKgnD,oBACpC,EACA/+C,WAAW,IAGnBvF,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACb4kB,2BACI,GAAI/wC,KAAKib,MAAMC,GAAG,6BAA+Blb,KAAK2wC,qBAClD,OAAO3wC,KAAKiQ,GAAG,0CAEnB,MAAM7Q,EAAQY,KAAK2wC,qBAAqB4K,iBACxC,YAAcluC,IAAVjO,EACOY,KAAKiQ,GAAG,0CAEL,IAAV7Q,GAAyB,gBAAVA,EACRY,KAAKiQ,GAAG,8CAEL,IAAV7Q,GAAyB,YAAVA,EACRY,KAAKiQ,GAAG,0CAEL,IAAV7Q,GAAyB,kBAAVA,EACRY,KAAKiQ,GAAG,gDAEL,IAAV7Q,GAAyB,mBAAVA,EACRY,KAAKiQ,GAAG,iDAEZjQ,KAAKiQ,GAAG,yCACnB,GAEJhR,QAAS,CACL+pD,uBAAuBxgC,EAAAA,GAAAA,IAAQ,wBAAwBrjB,eAAqCvH,GACxF,MAAM8rD,EAAc7hB,GAA2BjqC,GAC/C,IAAK8rD,EAAa,OAClB,MAAMC,QAAuBnoC,GAAc5jB,EAAQ8c,YAAagvC,EAAa1pD,KAAKsP,QAC3E6oC,EAAcmR,GAAkB7B,GAA8BkC,GAAgB,GACrF3pD,KAAKspD,eAAiBA,EACtBtpD,KAAK2zB,aAAe,CAChB6F,OAAQ,IAAI2e,EAAa3e,QACzByD,SAAU,IAAIkb,EAAalb,WAE/Bj9B,KAAKqgC,QAAUqpB,EAAY7xC,OAC3B7X,KAAKopD,gBAAkBO,EAAeG,UACtC9pD,KAAKqpD,eAAiBM,EAAeI,SACrC,MAAM1Y,EAAKn6B,GAAON,MACZozC,EAAK9yC,GAAON,MAAMqB,KAAK,EAAG,UAChCjY,KAAK+mD,iBAAmB4C,EAAeM,oBAAoB5Y,EAAG9iC,OAAO,WAAW8iC,EAAG9iC,OAAO,QAAU,EACpGvO,KAAKipD,gBAAkBU,EAAeO,mBAAmB7Y,EAAG9iC,OAAO,WAAW8iC,EAAG9iC,OAAO,QAAU,EAClGvO,KAAKkpD,cAAgBS,EAAeM,oBAAoBD,EAAGz7C,OAAO,WAAWy7C,EAAGz7C,OAAO,QAAU,EACjGvO,KAAKmpD,aAAeQ,EAAeO,mBAAmBF,EAAGz7C,OAAO,WAAWy7C,EAAGz7C,OAAO,QAAU,EAC/FvO,KAAKsqD,cAAgBlK,GAAqBsJ,EAAaC,EAC3D,IACA91B,sBAAqB,MAAEtb,EAAK,QAAEglB,IAC1B,GAAIA,EACAv9B,KAAKgnD,mBAAmB1tC,YAActZ,KAAKgnD,mBAAmB1tC,YAAc,QACzE,GAAItZ,KAAKgnD,mBAAmBtsC,aAAautB,WAAW,QAAkB,CACzE,MAAMxF,EAAiBziC,KAAKspD,eAAe/wC,GACrCtD,EAAM,GAAGk4B,mBAAmBntC,KAAKmV,WAAWg4B,mBAAmB1K,KACrEziC,KAAKiS,QAAQnU,KAAK,qCAAqCqvC,mBAAmBntC,KAAKmV,eAAeF,W,KAC3F,CACH,MAAMwtB,EAAiBziC,KAAKspD,eAAe/wC,GAC3CvY,KAAKiS,QAAQnU,KACT,6BAA6BkC,KAAKgnD,mBAAmBtsC,eAAe+nB,W,CAGhF,EACAkP,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,6BAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,+BAC1B,EACAqhC,0BAA0B9oB,EAAAA,GAAAA,IAAQ,4BAA4BrjB,iBACtDnF,KAAKyrB,YAAYgB,SAAS/hB,SAAS,wBACnC1K,KAAK0wC,4BAA8BvwB,EAAAA,EAAAA,KAAAA,IAC1B,gCACJzS,MAAMG,GAAMA,EAAE9O,KAAKA,OAExBiB,KAAK0wC,sBAAwB,CAAC,CAEtC,IACAa,yBAAyB/oB,EAAAA,GAAAA,IAAQ,2BAA2BrjB,iBACpDnF,KAAKyrB,YAAYgB,SAAS/hB,SAAS,wBACnC1K,KAAK2wC,2BAA6BxwB,EAAAA,EAAAA,KAAAA,IACzB,yCACJzS,MAAMG,GAAMA,EAAE9O,OAEnBiB,KAAK2wC,qBAAuB,CAAC,CAErC,IACAjd,uBACI,MAAM,gBAAEzH,GAAoBH,GAAgB9rB,KAAKyrB,aAC7CQ,EACIjsB,KAAK2wC,qBAAqB4K,iBAAmB,EAC7Cv7C,KAAKiS,QAAQnU,KAAK,aAElBkC,KAAKiS,QAAQnU,KAAK,oBAGtBkC,KAAKinD,2BAA4B,CAEzC,KC/KmS,M,uBCAxF,GAAe,KCQ9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCvBkF,W,IAA0B,EAAM,K,EAAY,QAAW,G,OAAE,+BAAE,MAAK,CAAUjpD,MAAM,uBAAC,gBAAiC,cAAuBuB,CAAAA,EAAK,KAAC,C,MAAM,CAAWe,mBAAmBsoB,c,mBAAiB,I,MAAEnpB,CAAgB,YAAIe,SAAU,SAAC,GAACxC,EAAM,KAAC,EAAwB,mBAAiBA,CAAAA,EAAK,KAAC,C,MAAC,CAAS,yBAAkGA,CAAAA,EAAK,IAAC,C,MAAK,CAAkB,UAAiBA,CAAAA,EAAK,GAAC,6E,MAAC,CAAS,uBAA0FA,CAAAA,EAAK,IAAC,C,MAAK,CAAmB,UAAiBA,CAAAA,EAAK,GAAC,qE,MAAC,CAAS,wBAA0GA,CAAAA,EAAK,IAAC,C,MAAK,CAAkB,UAAiBA,CAAAA,EAAK,GAAC,qF,MAAC,CAAS,uBAAiIA,CAAAA,EAAK,IAAC,C,MAAK,CAAmB,UAAiBA,CAAAA,EAAK,GAAC,wG,MAAC,CAAS,wBAA0IA,CAAAA,EAAK,IAAC,C,MAAK,CAAoB,UAAiBA,CAAAA,EAAK,GAAC,+G,MAAC,CAAS,yBAA+IA,CAAAA,EAAK,IAAC,C,MAAK,CAAmB,UAAiBA,CAAAA,EAAK,GAAC,oH,MAAC,CAAS,wBAA4IA,CAAAA,EAAK,IAAC,C,MAAK,CAAsB,UAAiBA,CAAAA,EAAK,GAAC,iH,MAAC,CAAS,2BAA0JA,CAAAA,EAAK,IAAC,C,MAAK,CAAmB,UAAiBA,CAAAA,EAAK,GAAC,+H,MAAC,CAAS,wBAAwGA,CAAAA,EAAK,IAAC,C,MAAK,CAAmB,UAAiBA,CAAAA,EAAK,GAAC,iF,MAAC,CAAS,wBAA8FA,CAAAA,EAAK,IAAC,C,MAAK,CAAyB,UAAiBA,CAAAA,EAAK,GAAC,yE,MAAC,CAAS,8BAAqGA,CAAAA,EAAK,IAAC,C,MAAK,CAAoB,UAAiBA,CAAAA,EAAK,GAAC,gF,MAAC,CAAS,yBAAoGA,CAAAA,EAAK,IAAC,C,MAAK,CAA0B,UAAiBA,CAAAA,EAAK,GAAC,+E,MAAC,CAAS,+BAAiIA,CAAAA,EAAK,IAAC,C,MAAK,CAAwB,UAAiBA,CAAAA,EAAK,GAAC,wG,MAAC,CAAS,6BAAiIA,CAAAA,EAAK,IAAC,C,MAAK,CAAoB,UAAiBA,CAAAA,EAAK,GAAC,sG,MAAC,CAAS,yBAAsGA,CAAAA,EAAK,IAAC,C,MAAK,CAAoB,UAAiBA,CAAAA,EAAK,GAAC,+E,MAAC,CAAS,yBAA0GA,CAAAA,EAAK,IAAC,C,MAAK,CAAuB,UAAiBA,CAAAA,EAAK,GAAC,qF,MAAC,CAAS,4BAAgGA,CAAAA,EAAK,IAAC,C,MAAK,CAAqB,UAAiBA,CAAAA,EAAK,GAAC,2E,MAAC,CAAS,0BAAmHA,CAAAA,EAAK,IAAC,C,MAAK,CAAkB,UAAiBA,CAAAA,EAAK,GAAC,0F,MAAC,CAAS,uBAAoIA,CAAAA,EAAK,IAAC,C,MAAC,CAAmC,U,CAAK,oBAAwB,IAAK4e,EAAAA,GAAAA,EAAAA,GAAAA,wBAAAA,MAAAA,GAAAA,EAAAA,MAAAA,IAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,cAAAA,CAAgB,OAAI,iBAAO,iBAEnyHte,GAAAA,CAEJ,uBAAgC,uB,cCyHhC,MAAMq2D,GAA+BhwD,EAAA,mBAAwB,uBACvDiwD,GAA0BjwD,EAAA,mBAAwB,uBACxD,QACA5F,OACA,OACAguD,IAAAA,KACAxhC,QAAAA,EACA7W,cAAAA,GAEA,EACAzV,QAAAA,CACA2d,kBAAAA,EAAAA,GAAAA,IAAAA,oBAAAA,iBACA,sCACAxS,+BACAsD,MAAAA,GAAAA,EAAAA,MACA,KAEA3N,UACA,uBACA,EACA2C,SAAAA,CACAmyD,mBACA,OACAF,IACA,wDAEA,EACAC,0BACA,0CACA,uBAEA,YACA,EACAE,uBACA,wDACA,EACAC,qBACA,qDACA,EACAC,kBACA,wDACA,EACAC,mBACA,wDACA,EACAC,kBACA,wDACA,EACAC,iBACA,4DACA,MACA,eChLkQ,M,sBCA/C,GAAe,KCO9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB2N,W,IAAgBzuD,EAAG,K,EAAW,QAAW,GAA6B,EAAC,kB,SAAC,KAAQ,kBAAgB,C,aAAgD,8B,QAAE,kC,YAA0B,O,wCAA+B,8B,GAAC,C,MAA2BjG,SAAY,G,OAAY,EAAC,+B,eAAmC,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAG,OAAI,kBAAC,eAAa,WAAO,OAAwC,UAA2CA,CAAAA,EAAI+c,GAAAA,SAAS,SAAkB,2BAAE,OAAsCvU,E,OAAc0N,M,GAAQ,iCAAoB,C,MAAC3N,C,MAAwB,EAAC,oB,QAAe,QAAS,wB,YAAO,O,6BAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAgS,yBAAC,I,CAAkE,oGAAC,IAAIA,MAAG,YAAoR,+BAAC,I,CAAqE,yMAAC,IAAIA,MAAG,YAA8Q,oCAAC,I,CAA0D,+LAAC,IAAIA,MAAG,YAA0O,uCAAC,I,CAA4D,iMAAC,IAAIA,MAAG,YAA8K,4BAAQ,IAAmD,2JAAC,IAAqC,kBAAO,8BAAM,IAAwD,CAAC60D,EAAAA,GAAAA,EAAAA,CAAAA,EAAoB,IAAI,wGAAE51D,MAAAA,KAAiC,sCAAG,GAAG,CAA+C,QAAC,0BAAqC,MAAC,CAACF,MAAM,uBAACH,SAAU,SAACk2D,GAA+Bh1D,EAAAA,qBAAwB,C,EAAsC,WAAC,0BAA2C,8CAAG,GAAG,CAAgCtC,QAAM,0BAA6B,MAAC,CAAG,MAAC,gCAAC,SAAS,SAAKu3D,GAAuB,iCAACh2D,EAAOH,WAAWo2D,mC,EAA+Ct3D,8BAA4B,C,MAAC,CAACuB,QAAU,EAAC,gBAAyB,GAAG,CAAmCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,uBAAC,SAAS,SAAKu3D,GAAuB,wBAACh2D,EAAOH,WAAWq2D,0B,EAA8Cv3D,iCAA2B,C,MAAC,CAACuB,KAAAA,EAAW,gBAAwB,GAAG,CAA4CzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,sBAAC,SAAS,SAAKu3D,GAAuB,uBAACh2D,EAAOH,WAAWs2D,yB,EAAuDx3D,0CAAoC,C,MAAC,CAACuB,KAAAA,EAAW,gBAAiC,GAAG,CAAmCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,+BAAC,SAAS,SAAKu3D,GAAuB,gCAACh2D,EAAOH,WAAWu2D,kC,EAAkDz3D,iCAA+B,C,MAAC,CAACuB,QAAU,EAAC,gBAA4B,GAAG,CAAyCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,0BAAC,SAAS,SAAKu3D,GAAuB,2BAACh2D,EAAOH,WAAWw2D,6B,EAAqD13D,uCAAkC,C,MAAC,CAACuB,QAAU,EAAC,gBAA+B,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,2BAC9nJ,qBACGnB,EAAAA,2BAAoB,CAExB,E,6GCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,uBAAuBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,qBAAsBK,WAAW,yBAAyBzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,UAAW,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACvvB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAoD,oCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACzuB,UAGD,E,SCJ6I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,oC,QAAiH,W,YAAkB,EAAQ,GAAEA,CAAAA,C,IAAwB,W,GAAE,WAA6C,qHAAC4S,MAAM,CAAM,eAAK,KAAS,4BAAelB,CAAAA,EAAM,oC,EAAQ,OAAE,G,KAAgC,U,aAC5f1R,O,EACN43D,M,UAGIC,CAAAA,EAAK,GAAE73D,UAAI83D,KAAe,C,KAC1BC,C,KACAC,EAAAA,KACJ,0CACH,uBAAC,WAAe,cAAC,MAAUh4D,EAAIS,gBAAM,UAAcK,EAAAA,aAAQ,WAAQ4S,EAAAA,aAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAWE,CAAkC,EAAsB,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACqB,SAAM,4BAACH,MAAOlB,EAAI8C,UAAMV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAgBxC,SAAM,YAAC,sBAAc,CAA4B,EAAyD,WAAW,yBAA+B,OAAW,CAAE,MAAC,CAACuB,YAAM,4BAACH,MAAOlB,EAAIi4D,GAAAA,0CAAa71D,MAAQ,EAAC,iB,QAAoB61D,GAAsD,SAAC,IAAyB,OAAI31D,MAAG,cAAgBxC,SAAM,YAAC,cAAc,8BAAgD,EAAwE,WAAWo4D,iBAAuG,OAAYC,C,MAAqB,CAAa,YAAW,gDAAG,kEAAG,KAAC,wCAAC,WAAe,8CAA2D,6BAAC92D,QAAM,GAACH,SAAW42D,I,GAA0C93D,CAA8D,eAAC,kDAA6B,OAAIsC,MAAG,kBAA0BxC,SAAM,YAAC,kBAAe,6BAAwC,CAAC,EAAqB,gCAAQoB,EAAAA,yBAAsB,C,MAACkB,C,MAA6Bg2D,EAAAA,GAAU,yCAAI,MAAC,UAAwB,OAAI91D,MAAG,aAA0BxC,SAAM,YAAC,aAAkBm4D,CAAY,EAAsC,WAASj4D,gBAAyE,2BAAYq4D,CAAiB,MAAC,CAACh3D,YAAM,cAACH,gBAAWo3D,EAAa,gBAACl2D,OAAS,a,MAAoBk2D,EAAAA,GAAAA,2CAAuD,MAAC,qBAA0B,OAAI,MAAG,eAC19E,qBACGl4D,EAAAA,aAAoB,8BAExB,E,wCCbwFN,GAAM,W,IAAC,O,EAAkB,EAAO,MAAKy4D,G,OAAgB,OAAcz3D,C,MAAQ,CAA0B,MAAQd,EAAI2V,MAAM,wBAAkB,UAAe,QAAI,eAAY2S,EAAK,OAAC,cAAmB,kBAAG,gBAAC,GAAC,MAAQ,Q,gBAA4BxiB,I,GAAwB,C,MAA0C0yD,SAAO7mD,GAAO,yBAAC,E,qBAAwD,sBAAE,EAACpJ,sBAAoB,YAAClG,EAAI,QAAgBmG,G,YAAqG,O,wCAAuB,GAAQ,QAAS,Q,MAAC,CAAkB,QAAI,UAAC,gBAAM,cAAC,MAA/B,wBACnoB,EACGpI,OAAAA,M,QCqBJ,IACAC,MAAAA,CAAAA,QAAAA,cAAAA,kBAAAA,SAAAA,QAAAA,SACAmE,SAAAA,CACA+zD,kBACA,gCACA3oD,KAAAA,GAAAA,EAAAA,aACA2wB,OACA,mBACA,cACA3lB,OAAAA,EAAAA,QAAAA,GAAAA,EAAAA,WAAAA,KAAAA,WACAf,QAAAA,CAAAA,EAAAA,EAAAA,IACA,mBAJA,CAMA,EACA4+C,oBACA,gEACA,GAEA70D,MAAAA,CACA60D,oBACA,gBACA,sBACA,EACA,gBACA,OACA,eACA,mBACA,kBACA,uBACA,cAEA,gBACA,IACA,sCACA1mC,sBAAAA,CACA2mC,WAAAA,KAAAA,YACAb,MAAAA,KAAAA,gBACAG,WAAAA,KAAAA,SAEAxoD,MAAAA,GAAAA,EAAAA,MASA,CARA,UACA/N,GAAAA,EAAAA,MACA,eACA,8HAEA,eACA,SACA,eACA,CAnBA,CAoBA,GAEAZ,OACA,OACA83D,aAAAA,KACAC,SAAAA,EACA93D,SAAAA,EACA03D,OAAAA,GAEA,GCjFsR,MCOlR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBwD14D,GAAM,W,IAAC,O,EAAkB,EAAO,MAAK+4D,G,OAAkB,OAAkB,C,MAAC,CAAoB,MAAS,EAAC74D,MAAY,0BAA0B,YAAY2V,OAAM,aAAYzU,OAAgE,kBAAqB,eAAe,EAAE,OAAC,cAAmB,KAAQlB,EAAIsoB,WAAK,4CAAC,kBAAgB,GAAG,kBAAG,gBAAC,GAAC,MAAQ,Q,gBAA4BxiB,I,GAA6C,C,MAA0C0yD,SAAO7mD,GAAO,qCAAC,E,qBAAwD,sBAAE,EAACpJ,sBAAoB,YAAClG,EAAI,QAAgBmG,G,YAAqG,O,wCAAuB,GAAQ,QAAS,Q,MAAC,CAAkB,QAAI,UAAC,gBAAM,cAAC,MAA/B,wBAClyB,EACGpI,OAAAA,M,QCqCG,MAAM04D,GAAa,CAC1B,CAAA9pD,KAAAA,GAAAlM,KAAAA,cACA,CAAAkM,KAAAA,aAAAlM,KAAAA,mBACA,CAAAkM,KAAAA,iBAAAlM,KAAAA,oBAGA,QACAzC,MAAAA,CAAAA,QAAAA,QAAAA,SACAmE,SAAAA,CACAq0D,oBACA,mBACA,cACAj+C,OAAAA,KAAAA,WAAAA,QAAAA,GAAAA,EAAAA,KAAAA,WAAAA,KAAAA,WACAf,QAAAA,CAAAA,EAAAA,EAAAA,IACA,uCAJA,eAMA,GAEAhZ,OACA,OACAk4D,WAAAA,IAAAA,IACAH,SAAAA,EACA93D,SAAAA,EACA03D,OAAAA,GAEA,GChEsR,M,uBCAlD,GAAe,KCO/O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC2FhC,MAAMQ,GAAmB,eACnBC,GAAuB,qBACvBC,GAAkB,oEACxB,QACA7yD,WAAAA,CAAA8yD,qBAAAA,GAAAC,qBAAAA,IACA/4D,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACA+F,QAAAA,EAAAA,EAAAA,MAAAA,SACA1D,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,6CACAwxB,qBAAAA,EACApB,YAAAA,GACAqB,iBAAAA,CACAnnD,KAAAA,GAAAA,KAAAA,GAAAA,mDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,oDAEAimD,WAAAA,GACAF,qBAAAA,EACAJ,gBAAAA,GACAK,qBAAAA,CACAhmD,KAAAA,GAAAA,KAAAA,GAAAA,uDACAA,GACA8mD,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,4DAEAX,aAAAA,GACAD,kBAAAA,CACAlmD,KAAAA,GAAAA,KAAAA,GAAAA,oDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,0DAGA,EACAvO,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,+CACA,yBACA,oDACA,mDACA,mDACA,sDAEA,oBACA,wBACA,qBACA,oBAEA,EACAiG,WAAAA,EACAlG,MAAAA,KCrK4R,M,uBCAlD,GAAe,KCOrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAkzD,2BAAAA,IACAx4D,QAAAA,CACA4S,OACA,sBACA,IC1B8R,MCO1R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B1S,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,8BAA8B,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACzO,EACIvgB,GAAkB,GCqBtB,IACAC,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,yCACA,IC5B+Q,M,uBCA/C,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCGhC,IACA6E,WAAAA,CAAAmzD,6BAAAA,GAAAC,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5BkS,MCO9R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,uCAAuC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,uBAAuBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,qBAAsBK,WAAW,yBAAyBzB,MAAM,CAAC,MAAQ,IAAKG,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAC3uB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAwD,wCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IAC7uB,UAGD,E,SCJ8H,W,IAAoD,OAAqB,EAAC,WAACjJ,EAAYvI,MAAM,Y,OAAM,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,4C,QAAiH,W,YAAkB,EAAQ,GAAEA,CAAAA,C,IAAwB,W,GAAE,WAA6C,qHAAC4S,MAAM,CAAM,eAAK,KAAS,4BAAelB,CAAAA,EAAM,oC,EAAQ,OAAE,G,KAAgC,U,aACjiB1R,O,EACN8d,M,UAGI47C,CAAAA,EAAAA,GAAAA,UAAkBC,KAAAA,C,KAClBjB,C,KACAb,EAAO73D,K,KACP+3D,EAAAA,iB,oBACgBK,EAAAA,oBACpB,yBACH,0BAAC,WAAe,UAAC,MAAUp4D,EAAIS,YAAM,UAAcK,EAAAA,aAAQ,WAAQ4S,EAAAA,aAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAWE,CAAkC,EAAkC,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACqB,SAAM,4BAACH,MAAOlB,CAAG,EAAC8C,OAAK,YAACV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAK1qB,MAAI45D,EAAAA,oBAAiC95D,SAAM,YAAC,sBAAe,CAAmD,EAA+C,oCAAQoB,EAAAA,eAAkB,Q,MAACkB,C,MAA6By3D,EAAM,GAACnvC,mDAAG,SAAC,+BAAoB,OAAG,MAAO,EAAGpoB,OAAmBxC,SAAM,YAAC,SAAc,CAA+C,EAA6D,WAAUE,YAAsG,OAAU,EAAC,MAAE,MAAC,CAAG,YAAC,+CAAC,MAAQ,EAAC,iD,MAAwBA,CAAAA,EAAI85D,OAAAA,WAAoB,EAAE,wEAAE,a,GAAQ54D,CAAoBkB,OAAS,SAAUsoB,GAAM1qB,OAAI+5D,EAAO,sBAA2C,GAAsB,OAAIz3D,MAAG,UAAgBxC,SAAM,YAAC,UAAc,oBAAmB,UAAC,EAAgE,WAAUE,aAAwE,OAAW,CAAE,MAAC,CAACqB,YAAM,oBAACH,MAAOlB,EAAI25D,GAAAA,iDAAYv3D,MAAQ,CAAC,SAAUsoB,WAAK,iC,QAAKivC,GAAqD,SAAC,IAAwB,OAAIr3D,MAAG,aAAgBxC,SAAM,YAAC,aAAc,oBAAqB,UAAC,EAAiE,WAAUE,gBAAuE,OAAW,CAAE,MAAC,CAACqB,YAAM,sBAACH,MAAOlB,EAAIg6D,GAAAA,kDAAa53D,MAAQ,CAAC,SAAUsoB,WAAK,gC,QAAKsvC,GAAsD,SAAC,IAAyB,OAAI13D,MAAG,cAAgBxC,SAAM,YAAC,cAAe,8BAAiD,EAAqB,4BAAqCuB,EAAK,KAAC,C,MAAM,CAAkBe,MAAQ,EAAC,oD,MAAoBg2D,CAAAA,KAAU,GAAI,YAAC,uBAAwB,OAAI91D,MAAG,aAAgBxC,SAAM,YAAC,aAAe,CAAmD,EAA8B,2BAAsCuB,EAAK,KAAC,C,MAAM,CAAoBe,MAAQ,EAAC,sD,MAAoBk2D,EAAAA,kBAAuD,YAAC,wBAA0B,OAAI,MAAG,eACngG,qBACGl4D,EAAAA,aAAoB,8BAExB,E,wCCVA,MAAM65D,GAAuB,iBACvBf,GAAkB,oEACxB,QAAe9yD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAC,UAAW,QAAS,YAC5BQ,OACI,MAAO,CACHJ,OAAO,EACP+F,QAASC,EAAAA,EAAAA,MAAaC,SACtB5D,KAAM,GACNu2D,qBAAqB,EACrBM,WAAY,GACZI,QAAS,GACTC,YAAaC,GACb3B,aAAc,GACduB,QAAQ,EACRxB,kBAAmB,CACdlmD,KAAQA,GAAKrQ,KAAKiQ,GAAG,4DACrBI,GAAM+mD,GAAgBz0D,KAAK0N,IAAMrQ,KAAKiQ,GAAG,kEAE9CqmD,WAAY,GAEpB,EACAx0D,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACCA,IACLhI,KAAKgB,KAAOgH,EAAIhH,KAChBhB,KAAK+3D,OAAsB,eAAb/vD,EAAI/J,KAClB+B,KAAKu3D,oBAAsBvvD,EAAIuvD,oBAC3BvvD,EAAIowD,yBACJp4D,KAAK63D,WAAa7vD,EAAIowD,wBAAwBC,aAC9Cr4D,KAAKi4D,QAAUjwD,EAAIowD,wBAAwBE,WAC3Ct4D,KAAKk4D,YAAclwD,EAAIowD,wBAAwBnvD,MAC/CjJ,KAAKs2D,WAAatuD,EAAIowD,wBAAwB9B,WAC9Ct2D,KAAKw2D,aAAexuD,EAAIowD,wBAAwBG,YAEhDv4D,KAAK63D,WAAa,GAClB73D,KAAKi4D,QAAU,GACfj4D,KAAKk4D,YAAcC,GACnBn4D,KAAKw2D,aAAe,GACpBx2D,KAAKs2D,WAAa,IAE1B,EACAruD,WAAW,EACXlG,MAAM,IAGdW,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,IACb2rC,iBACI,OAAO93D,KAAKyrB,YAAYO,iBAAiB,eAC7C,EACA+tB,mBACI,OAAO/5C,KAAK+3D,OAAS,aAAe,QACxC,GAEJ94D,QAAS,CACL+4D,uBACI,GAAIh4D,KAAK63D,WAAY,OACrB,IAAK73D,KAAKi4D,QAAS,OACnB,IAAKj4D,KAAKi4D,QAAQhwB,WAAW,iBAAkB,OAC/C,MAAO,CAAC,CAAC,CAAC,CAAC4vB,GAAc73D,KAAKi4D,QAAQp/C,MAAM,KACvCg/C,IACL73D,KAAK63D,WAAaA,EACtB,KCrEwU,M,uBCA9F,GAAe,KCO7P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAt5D,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAi0D,mCAAAA,IACAv5D,QAAAA,CACA4S,OACA,sBACA,IC1BsS,MCOlS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCUhC,IACAtN,WAAAA,CAAAk0D,qCAAAA,GAAAd,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,SAEAsD,SAAAA,KACA,eClC0S,MCOtS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BvD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,sBAAsB,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,qBAAsBK,WAAW,yBAAyBzB,MAAM,CAAC,KAAO,wBAAwB,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,MACjwB,EACIpR,GAAkB,GCFlBa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kBAAkBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAQ,gCAA+BE,EAAIkB,OAAS,CAAC,GAAG+H,MAAMjJ,EAAID,OAAO,QAAU,KAAK,OAASC,EAAIkB,OAAS,CAAC,GAAGlB,EAAID,MAAQ,KAAKyC,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,kBAAkB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACrT,EACIvgB,GAAkB,GCsBtB,IACAC,MAAAA,IACA,UAEAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,oCACA,IC/B4Q,M,uBCA/C,GAAe,KCOxO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCGhC,IACA6E,WAAAA,CAAAmzD,6BAAAA,GAAAiB,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICpCgS,MCO5R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BE,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,uCAAuC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,sBAAsB,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,EAAM8C,QAAQ,IAAQl4D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,qBAAsBK,WAAW,yBAAyBzB,MAAM,CAAC,KAAO,0BAA0B,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,MACrxB,EACIpR,GAAkB,GCuBtB,IACAiG,WAAAA,CAAAk0D,qCAAAA,GAAAE,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICpCyS,MCOrS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBYuB,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAA+C,+BAAuB,C,MAAiB,CAAoB,QAAQxR,EAAM,MAAC,oBAAkC,QAAWA,QAA4C,6CAACuI,SAAYvI,EAAI+Q,GAAI,sC,YAAkB,EAAS,K,IAAErI,U,GAASgJ,UAAM,QAAEnR,EAAAA,OAAO,EAAC,MAAC,I,MAA8B,GAAO,cAAUoR,C,GAAQ,CAAc,kBAAC,UAAIrP,KAA8DQ,EAAAA,GAAAA,GAAK,gCAAY,C,WAAS,EAAe5B,KAAK,aAAmBK,QAAAA,eAA8B,sBAACzB,WAAM,oB,MAAqB,CAAc,MAAQ4I,EAAAA,QAAQ,MAAOgJ,EAAO,QAAG,KAAC,G,GAA4BF,CAAgD,oBAAC,oCAAI,KAAiB,eAAgB,IACtgC,UAGD,E,MCJIvQ,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAQ,gCAA+BE,EAAIkB,OAAS,CAAC,GAAG+H,KAAK,QAAU,MAAMzG,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACrQ,EACIvgB,GAAkB,GCqBtB,IACAC,MAAAA,IACA,WACAa,MAAAA,CACAnB,KAAAA,SAGAgB,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,yCACA,ICjCiR,M,uBCA/C,GAAe,KCO7O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCmBhC,IACA6E,WAAAA,CAAAs0D,uBAAAA,GAAAC,yBAAAA,IACAv6D,MAAAA,CACAa,MAAAA,QACA25D,QAAAA,SC7CiR,M,uBCA/C,GAAe,KCO7O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYv4D,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA6C,eAAG,mCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAA6C,GAAO,0BAAY,C,MAAC,CAA8C,gBAACjJ,QAAYvI,EAAI+Q,MAAI,2B,YAAkB,EAAS,K,IAAErI,U,GAASgJ,UAAM,QAAE5Q,EAAO,OAAEb,EAAAA,QAAM,EAAC,KAAC,I,MAA8B,GAAO,cAAU0R,C,GAAQ,CAAc,kBAAC,UAAIrP,KAA6DQ,EAAAA,GAAAA,GAAK,+BAAY,C,WAAS,EAAe5B,KAAK,aAAyBK,QAAAA,eAAoC,4BAACzB,WAAM,0B,MAAqB,C,MAAiB,U,QAAiB,EAAQoB,GAAAA,UAAmB,YAAC,MAAOwQ,EAAM,OAAkB,KAAO,EAAS,MAAS,OAAS,QAAG,QAAC,G,GAA4BF,CAAoD,oBAAC,2CAAI,KAAiB,eAAgB,IAC1gC,UAGD,E,MCJ4ClP,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAiB,C,MAAC,CAAwB,MAAS,EAACE,MAAY,oBAACuI,QAAYvI,EAAI+Q,S,YAAsB,EAAS,K,IAAEW,U,GAAQgC,UAAAA,OAAO,EAAC,MAAC,I,MAAmD,GAAQA,GAAAA,UAAK,MAAC,QAAShC,EAAAA,MAAO,MAAS,EAAa,OAAO,E,QAAW,EAACE,QAAW,MAAI,qBAAevQ,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAIe,WAAG,U,CAAuB,OAAaw4D,C,MAAmB,CAAqB,MAAQ96D,CAAAA,EAAI+R,OAAG,YAAQ,kBAAW,GAAG,mBAAC1Q,SAAM,I,MAAwBe,C,MAA6BwP,EAAAA,WAAc,SAAC,YAACrQ,EAAAA,WAAW,CAAY,EAAI,WAAG,iBAEtqBnB,EAEJ,E,MCkBA,IACAC,MAAAA,CACAa,MAAAA,OACAJ,QAAAA,CACAN,SAAAA,EACAT,KAAAA,SAEAsI,MAAAA,CACA7H,QAAAA,cACAT,KAAAA,QAEAuI,SAAAA,CACA9H,QAAAA,6CACAT,KAAAA,SAGAc,OACA,OACAJ,OAAAA,EACAmR,WAAAA,GAEA,EACAhO,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,uBACA,EACAiG,WAAAA,KClD6Q,MCOzQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B9I,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,oBAAoBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,MAAQE,EAAI+6D,QAAQ,KAAQ,gCAA+B/6D,EAAIkB,OAAS,CAAC,GAAG+H,KAAK,QAAU,MAAMzG,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,oBAAoB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACvR,EACIvgB,GAAkB,GCsBtB,IACAC,MAAAA,IACA,SACAJ,KAAAA,CACAF,KAAAA,QAEAmB,MAAAA,CACAnB,KAAAA,QAEAg7D,QAAAA,CACAh7D,KAAAA,MACAS,QAAAA,IAAAA,KAGAO,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,wCACA,ICzCgR,M,uBCA/C,GAAe,KCO5O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCUhC,IACAnB,MAAAA,CACAa,MAAAA,QACA25D,QAAAA,QAEAx0D,WAAAA,CAAA20D,qBAAAA,GAAAC,wBAAAA,IACAl6D,QAAAA,CACAm6D,uBAAAA,IACAx5D,EAAAA,EAAAA,IAAAA,2BAAAA,EAAAA,QACA,uBACA,IC1CmR,MCO/Q,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBYY,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA6C,eAAG,mCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAuD,GAAO,oCAAY,C,MAAC,CAAoD,gBAACjJ,QAAYvI,EAAI+Q,MAAI,iC,YAAkB,EAAS,K,IAAErI,U,GAASgJ,UAAM,QAAE5Q,EAAO,OAAEb,EAAAA,QAAM,EAAC,KAAC,I,MAA8B,GAAO,cAAU0R,C,GAAQ,CAAc,kBAAC,UAAIrP,KAA6DQ,EAAAA,GAAAA,GAAK,+BAAY,C,WAAS,EAAe5B,KAAK,aAA+BK,QAAAA,eAA0C,kCAACzB,WAAM,gC,MAAa,CAAsC,MAAC,CAAC,KAAS,QAAE,mB,QAAuB,EAAuBoB,GAAAA,UAAkC,2BAAC,MAAOwQ,EAAM,sBAAkB,KAAO,EAAS,MAAS,OAAS,QAAG,QAAC,G,GAA4BF,CAAoD,oBAAC,2CAAI,KAAiB,eAAgB,IACpmC,UAGD,E,SCJgJ,W,IAA4D,OAAqB,EAAC,W,OAACjJ,EAAAA,YAAoB,C,MAAK,CAAUC,MAAG,KAASkJ,uC,SAAuB1R,EAAM,GAAC,0C,QAAsB,EAAC,S,YAAgD,O,IAAC,U,GAAgB,SAAS,EAAKS,G,MAAM,GAAS,GAACT,UAAW,MAAC,KAAO,CAAS,2CAAI,OAAU,EAAM,QAAC,QAACkB,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAWxC,SAAM,YAAC,QAAQ,CAAU,EAAS,qBAAiBA,CAAAA,EAAK,KAAC,C,MAAC,CAAU,MAAQ,UAAS,UAAmHA,CAAAA,EAAK,IAAC,C,MAAC,CAAsC,QAA4D,kB,CAAsBuC,EAAG,GAAC,aAAQ,4E,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAI,MAAG,sBAC/1C,qBACGtqB,EAAAA,oBAAoB,CAExB,E,+CC+CA,IACAC,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACA44D,qBAAAA,EAEA,EACAz1D,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,+CACA,EACAiG,WAAAA,EACAlG,MAAAA,KClEsR,M,uBCA/C,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCQhC,IACAxD,MAAAA,CACAa,MAAAA,QACA25D,QAAAA,QAEAx0D,WAAAA,CAAA80D,8BAAAA,GAAAF,wBAAAA,IACAl6D,QAAAA,CACAm6D,uBAAAA,IACAx5D,EAAAA,EAAAA,IAAAA,yCACA,uBACA,ICxCyR,MCOrR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBsD5B,GAAM,W,IAAC,O,EAAsB,QAAUE,G,OAAY,OAAY2xB,C,MAAc,CAAgB,kBAAkC,QAAU3xB,EAAImyB,QAAS,QAAYnyB,cAAe,gBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,iBAAE,EAACpJ,mBAAoB,YAAClG,EAAI,WAAS,CAACmG,G,YAA2F,OAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,MAAU,yDAACmG,E,OAAc0N,GAAM,C,IAAE,Y,GAAqBpW,UAAM,K,UAAqB,a,MAAC,C,KAAyB,UAAoC,IAAIwC,MAAS,SAAC,GAACC,OAAW,EAAC,qBAAkBvC,IAAyC,WAAI,YAAE,iBAAkC,UAAS,sB,GAAQ,C,IAAE,gC,GAAmB8wD,UAAM56C,KAA8C,I,MAAgF,UAAS,CAAE,MAAC,yCAAC3N,CAAAA,EAAAA,GAAAA,IAAYvI,EAAM,GAAE,yC,MAAK,CAAYwI,OAAG,I,YAAgB,O,IAAC,Y,GAA4B1I,UAAM,G,UAAuB,GAAO,IAAMs7D,EAAAA,GAAAA,CAA0C,OAAG54D,MAASrC,GAA2D,SAAQ,MAAK,2CAAkK,wDAAG,IAAM,UAA6B,UAAS,qI,GAAQ,C,IAAE,2B,GAAqJ2wD,UAAM56C,KAA0D,IAA2E,yGAAI,MAAEA,EAAA,oBAAa,2BAAI,QAAS,qDAAhC,sB,GAAwC,C,IAAE,e,GAAiC,UAAOA,KAAc,IAAO,MAAK,GAAI,qBAAG,mBAE7iE9V,IAEJ,MAASa,I,QCCH,SAAUo6D,GAA8BC,GAC1C,MAA2B,WAApBA,EAAGh/C,YACd,CAEA,QACIjc,MAAO,CACHyoB,MAAOhR,MACPhX,QAAS,CACLf,KAAMiD,QACNxC,SAAS,GAEbyzC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,qBAGjBK,OACI,MAAO,CACHsxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GAEtB,EACA5tB,SAAU,CACNmtB,gBACI,OAAK7vB,KAAKgnB,MACHhnB,KAAKgnB,MAAMjP,OAAOwhD,IAA+BzrD,KAAK0rD,IACzD,IAAIC,EACAD,EAAGE,uBAAyBF,EAAGE,sBAAsBD,WAC/C,IAAItgD,KAAKqgD,EAAGE,sBAAsBC,QAClC,KAENF,GAActsD,MAAMssD,EAAW37B,aAC/B27B,EAAa,MAEjB,MAAMG,EACFJ,EAAGE,uBAAuBpB,YAC1BkB,EAAGpB,yBAAyBE,YAChB,oBAAZkB,EAAGv7D,KACG,WACA,kBACJ47D,EACFL,EAAGE,uBAAuBnB,WAC1BiB,EAAGpB,yBAAyBE,YAChB,oBAAZkB,EAAGv7D,KACG,WACA,kBACJq7D,EACFE,EAAGE,uBAAuB/6D,OAC1B66D,EAAGpB,yBAAyBz5D,OAChB,oBAAZ66D,EAAGv7D,KACP,MAAO,CACH0d,GAAI69C,EAAGryD,GACPyU,KAAM49C,EAAGx4D,KACTs4D,uBACAM,2BACAC,0BACAC,oBAAqBL,EACrBM,UAAWP,EACd,IAlCmB,EAoC5B,EACAn6D,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0CACd7Q,MAAO,2BACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,yCACd7Q,MAAO,0BACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,qCACd7Q,MAAO,sBACP+wB,UAAU,GAEd,CACIrwB,KAAM,UACNV,MAAO,UACP+wB,UAAU,GAGtB,GAEJlxB,QAAS,CACL+6D,mBAAmB5lD,GACf,MAAMy/C,EAA6C,CAC/CP,aAAcF,GAAAA,wBACd3pD,SAAU,KACV0Q,eAAgB/F,EAAKuH,IAGzB,OADA03C,KAAiCE,uBAAuBM,GACjD7zD,KAAKiS,QAAQnU,KAAK,GAAGkC,KAAKmyC,eAAe/9B,EAAKuH,KACzD,IC1GgU,M,uBCA9F,GAAe,KCQrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvB5Bxc,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,qBAAqB,CAACxC,MAAM,CAAC,MAAQE,EAAI+7D,iBAAiBv5D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,IAAI,MAAK,IACjV,EACI7c,GAAkB,GCFmE,GAAU,W,IAAUN,EAAM,K,EAAC,QAAW,GAAG,EAAS,kB,OAAG,QAACyI,MAAAA,CAAqBlG,WAAI,GAAYmG,OAAG,I,YAAkE,OAAG,IAAC,YAAalG,GAAG,SAAS,GAACxC,MAAM,+BAAC,IAAW,UAAiB,SAAE,MAAO,CAAwC,MAAU,GAAYuC,YAASA,Q,EAA6BvC,GAAK,EAAC,+B,OAAC,EAAK,WAAS,C,IAAC,EAAOoW,K,CAAU,qBAAoB,C,MAAC,CAAa,UAAG,KAAC,OAAC,OAAQ,S,OAAwBlW,GAA6B,IAAK+b,MAAS,SAAOjD,GAA8C,OAAG,sBACvnB,KAGD,IAAS7X,EAAQb,MAAAA,OAAgB,EAAD,kB,kBCJ4DuN,GAAAA,W,IAAa,OAAe,EAAC,W,OAAM,EAAC,W,YAAS,CAAS,eAAwDmjD,MAAO,CAA+E9wD,MAAO,YAAoD,EAAG,YAAI,SAAoB,UAACuC,OAAAA,EAAY,oCAAZA,kCAAoB,CAACvC,EAAIqR,GAAG,kBAAqB,MAAO,CAAC/O,EAAG,KAAO,GAACtC,EAAM,MAAqB,KAAI,GAAGsC,EAAG,MAAM,CAACwuD,YAAO,QAAqE,CAAC9wD,EAAIqR,GAAG,WAAS,WAAW,MAAO,CAAC/O,EAAG,OAAKtC,CAAG,EAAIA,GAAG,EAAIA,GAAG,EAACg8D,SAAW,KAAI,GAAG,EAAG,MAAI,CACzoB,sEACG57D,CAAAA,EAAAA,GAAAA,UAAkB,WAEtB,MAASa,CAAAA,EAAM,IAAEb,CAAAA,EAAAA,GAAAA,EAAe,gB,uBCiBhC,IACAC,MAAAA,CAAAA,MAAAA,OAAAA,SAAAA,UCtBuQ,MCOnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCPhC,IAAe+F,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEyoB,MAAOhR,OAChBzR,WAAY,CAAE41D,eAAcA,IAC5Bz3D,SAAU,CACRu3D,kBACI,OAAOj6D,KAAKgnB,KAChB,KCjBgT,MCOhT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCThC,IAAe1iB,EAAAA,EAAAA,iBAAgB,CAC7BC,WAAY,CAAE61D,mBAAkBA,IAChC77D,MAAO,CACLa,MAAO,KACP4nB,MAAO,CACL/oB,KAAM+X,MACNtX,QAAS,IAAM,CACb0X,GAAAA,mBACAA,GAAAA,eAIN1T,SAAU,KACL8lC,EAAAA,GAAAA,IAAUrc,IACb8tC,kBACE,OAAKj6D,KAAKgnB,MAENhnB,KAAKyrB,YAAYO,iBAAiB,gBAC7B,IAAIhW,MAAM,CACfzV,IAAK,qBACL85D,IAAKr6D,KAAKiQ,GAAG,sDACbnQ,KAAME,KAAKiQ,GAAG,uDACdiqD,OAAQl6D,KAAKiQ,GAAG,2DAGbjQ,KAAKgnB,MACTjP,QACEkC,GACCA,GAAK7D,GAAAA,oBACLzR,EAAAA,EAAAA,iBAAwB,0BAE3BmJ,KAAKmM,IAAS,CACb1Z,IAAK0Z,EACLogD,IAAKr6D,KAAKiQ,GAAG,2BAA2BgK,SACxCna,KAAME,KAAKiQ,GAAG,2BAA2BgK,UACzCigD,OAAQl6D,KAAKiQ,GAAG,2BAA2BgK,gBApBvB,EAsB1B,KC9CiU,M,uBCA9F,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCDhC,IAAe3V,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CACLmW,cAAesB,OAEjBzR,WAAY,CACV+1D,iCAAgC,GAChCC,yCAAwC,GACxCC,+BAA8B,GAC9BC,wCAAuC,GACvCC,yBAAwB,GACxBC,2BAA0B,GAC1BC,2BAA0B,GAC1BC,iCAAgC,GAChCC,wBAAuBA,IAEzBv0D,QACE,OAAOvG,KAAKiQ,GAAG,wBACjB,EACAlR,OACE,MAAO,CACLs2D,sBAAsB,EACtBC,+BAA+B,EAC/BG,qBAAqB,EACrBC,8BAA8B,EAC9BC,yBAAyB,EACzBC,4BAA4B,EAC5BJ,sBAAsB,EACtBuF,eAAgB,KAChBC,yBAA0Br2D,EAAAA,EAAAA,iBAAwB,wBAEtD,EACAjC,SAAU,CACRu4D,sBACE,OAAOj7D,KAAK0U,cAAcqD,OAAOwhD,GACnC,MACG/wB,EAAAA,GAAAA,IAAUrc,KAEfltB,QAAS,CACPi8D,6BACE36D,GAEIA,IAAQ6V,GAAAA,mBACVpW,KAAKs1D,+BAAgC,EAC5B/0D,IAAQ6V,GAAAA,cACjBpW,KAAKq1D,sBAAuB,EAEhC,EACA1jB,mBAAmB8E,GACbA,IACJz2C,KAAKiS,QAAQnU,KAAK,oBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,yBACxB,EACAslD,yBACEv1D,KAAKgE,MAAM,yBACb,EACAoxD,cAAc2D,GACZ/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK21D,yBAA0B,CACjC,EACAwF,oBAAoBpC,GAClB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK41D,4BAA6B,CACpC,EACAwF,4BAA4BrC,GAC1B/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKy1D,qBAAsB,CAC7B,EACA4F,yBAAyBtC,GACvB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK01D,8BAA+B,CACtC,EACA4F,iBAAiBlnD,GACf,MAAMmnD,EAA4C,CAChDjI,aAAcF,GAAAA,YACd3pD,SAAU,KACV0Q,eAAgB,MAElBk5C,KAAiCE,uBAAuBgI,GACxD,MAAMpoB,EAAM,uBAAuB/+B,EAAK+F,iBACxCna,KAAKiS,QAAQnU,KAAKq1C,EACpB,EACA0c,mBAAmBkJ,GACjB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKw1D,sBAAuB,CAC9B,KCzGwS,M,sBCAxF,GAAe,KCO/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtByN,W,IAAgB9uD,EAAG,K,EAAW,QAAW,GAA6B1I,EAAM,kB,SAAC,KAAW,CAACw9D,EAAAA,eAAAA,C,MAAkB,C,MAAI,6B,QAAC,EAAQ,+B,YAAsD,O,IAAE,gB,GAAC/0D,W,MAAwB,GAAC,4BAAW,C,MAAI,C,MAAW/F,EAAAA,mB,GAAM,C,MAA2BD,SAAY,G,OAAY,EAAC,qB,eAAmC,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAG,OAAI,kBAAC,eAAa,WAAO,OAAoC,UAA0CA,CAAAA,EAAI+c,GAAAA,SAAS,SAAkB,2BAAE,OAAgDvU,E,OAAc0N,M,GAAQ,6BAAoB,C,MAAC3N,C,MAAwB,EAAC,mB,QAAe,QAAS,wB,YAAO,O,uCAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAW4T,GAA+E,IAA0B,MAAOlW,CAAAA,EAAIu9D,EAAAA,EAAAA,EAAAA,GAAAA,CAA2B,OAAC,UAAyN,mCAAC,IAAyB,U,CAAuC,6DAAC,IAAIj7D,MAAG,YAAoU,iCAAG,IAAoB,QAAS,kIAAE4T,GAAAA,CAAO,kBAAC,OAAW,yBAAS,EAAC3N,I,CAAqCC,EAAE,KAAU,4N,iCAAmC1I,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAqP,yBAAC,I,CAA0D,oGAAC,IAAIA,MAAG,YAA0O,+BAAC,I,CAA4D,0KAAC,IAAIA,MAAG,YAA8K,4BAAQ,IAAoD,2JAAC,IAAqC,kBAAO,8BAAM,IAA6D,CAACk7D,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAA0B9yC,CAAAA,EAAG,qGAAEnpB,MAAAA,KAAsC,uCAAG,GAAG,CAA4C,QAAC,0BAAqC,MAAC,CAACF,MAAM,4BAACH,SAAU,SAACu8D,GAA2Br7D,EAAAA,0BAAwB,C,EAAkC,WAAC,+BAAuC,2CAAG,GAAG,CAA2C,QAAC,0BAAqC,MAAC,CAACf,MAAM,4BAACH,SAAU,SAACw8D,GAA0Bt7D,EAAAA,0BAAwB,C,EAAiC,WAAC,+BAAsC,0CAAG,GAAG,CAAwC,QAAC,0BAAqC,MAAC,CAACf,MAAM,2BAACH,SAAU,SAACy8D,GAAwBv7D,EAAAA,yBAAwB,C,EAA+B,WAAC,8BAAoC,uCAAG,GAAG,CAA+C,QAAC,0BAAqC,MAAC,CAACf,MAAM,yBAACH,SAAU,SAAC08D,GAA4Bx7D,EAAAA,uBAAwB,C,EAAmC,WAAC,4BAAwC,8CAAG,GAAG,CAAwCtC,QAAM,0BAA0B,MAAC,CAAG,MAAC,6BAAC,SAAS,SAAKu3D,GAAuB,8BAACh2D,EAAOH,WAAW28D,gC,EAAmD79D,sCAAgC,C,MAAC,CAACuB,KAAAA,EAAW,gBAA6B,GAAG,CAAwCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,2BAAC,SAAS,SAAKu3D,GAAuB,4BAACh2D,EAAOH,WAAW48D,8B,EAAmD99D,sCAAgC,C,MAAC,CAACuB,KAAAA,EAAW,gBAA6B,GAAG,CAAuCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,2BAAC,SAAS,SAAKu3D,GAAuB,4BAACh2D,EAAOH,WAAW68D,8B,EAAkD/9D,qCAA+B,C,MAAC,CAACuB,KAAAA,EAAW,gBAA4B,GAAG,CAAoCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,0BAAC,SAAS,SAAKu3D,GAAuB,2BAACh2D,EAAOH,WAAW88D,6B,EAAgDh+D,kCAA6B,C,MAAC,CAACuB,KAAAA,EAAW,gBAA0B,GAAG,CAAgCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,wBAAC,SAAS,SAAKu3D,GAAuB,yBAACh2D,EAAOH,WAAW+8D,2B,EAA4Cj+D,8BAAyB,C,MAAC,CAACuB,QAAU,EAAC,gBAAsB,GAAG,CAAmCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,oBAAC,SAAS,SAAKu3D,GAAuB,qBAACh2D,EAAOH,WAAWg9D,uB,EAA+Cl+D,iCAA4B,C,MAAC,CAACuB,QAAU,EAAC,gBAAyB,GAAG,CAAyCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,uBAAC,SAAS,SAAKu3D,GAAuB,wBAACh2D,EAAOH,WAAWw2D,0B,EAAqD13D,uCAAkC,C,MAAC,CAACuB,QAAU,EAAC,gBAA+B,GAAG,CAA4CzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,6BAAC,SAAS,SAAKu3D,GAAuB,8BAACh2D,EAAOH,WAAWi9D,gC,EAAoDn+D,0CAAiC,C,MAAC,CAACuB,QAAU,EAAC,gBAA8B,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,0BAC90M,qBACGnB,EAAAA,0BAAoB,CAExB,E,4GCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,qBAAqB,CAACxC,MAAM,CAAC,MAAQE,EAAI+7D,iBAAiBv5D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,IAAI,MAAK,IACjV,EACI7c,GAAkB,GCItB,IAAegG,EAAAA,EAAAA,iBAAgB,CAC7BC,WAAY,CAAE61D,mBAAkBA,IAChC77D,MAAO,CACLa,MAAO,KACP4nB,MAAO,CACL/oB,KAAM+X,MACNtX,QAAS,IAAM,CACbyX,GAAAA,MACAA,GAAAA,SACAA,GAAAA,OACAA,GAAAA,OACAA,GAAAA,aACAA,GAAAA,MACAA,GAAAA,OACAA,GAAAA,WAINzT,SAAU,CACRu3D,kBACE,OAAKj6D,KAAKgnB,MACHhnB,KAAKgnB,MAAMlZ,KAAKmM,IAAS,CAC9B1Z,IAAK0Z,EACLogD,IAAKr6D,KAAKiQ,GAAG,0BAA0BgK,SACvCna,KAAME,KAAKiQ,GAAG,0BAA0BgK,UACxCigD,OAAQl6D,KAAKiQ,GAAG,0BAA0BgK,gBALpB,EAO1B,KCjCoT,M,sBCAxF,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5B9a,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,4BAA4Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,0BAA2BK,WAAW,8BAA8BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,SAAU,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACrwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAoD,oCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACzuB,UAGD,E,SCJ6I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,oC,QAA2O,W,YAAkB,EAAQ,GAAEA,CAAAA,C,IAAyB,W,GAAE,WAAkC,+OAAC4S,MAAM,CAAM,eAAK,KAAS,6BAAelB,CAAAA,EAAM,yB,EAAQ,OAAE,G,KAAgC,U,aAC5mB1R,O,EACN43D,M,UAGI8B,CAAAA,EAAAA,GAAAA,UAAkBnuD,KAAQ,C,KAC1BmtD,C,KACAb,EAAO73D,KACX,0CACH,gDAAC,0CAAe,CAAC,aAAcS,EAAK,SAAC,WAAcK,EAAAA,SAAQ,MAAQ4S,EAAAA,eAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAWE,CAAkC,EAAsB,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACqB,SAAM,4BAACH,MAAOlB,EAAI8C,UAAMV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcqL,SAAW,SAAC,GAAC,OAAQ,CAAQ,EAAC7N,WAAM,UAAuC,OAAWE,CAAgD,YAAC,CAACuI,MAAW,S,MAA0B,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACA,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAcqL,SAAW,SAAC,GAAC,sBAAQ,CAAQ,EAAC7N,WAAM,yBAA6D,OAAWE,CAA2C,YAAC,CAACuI,MAAW,S,MAA0B,C,MAAkB,EAAI,gD,SAAmB,uC,YAAa,O,IAACA,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAAiF,WAAc,4CAAO,MAA4BoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,qE,EAAuB,OAAC,KAA4B,OAAIpoB,MAAG,iBAAgBxC,SAAM,YAAC,iBAAYs+D,CAAc,EAAc,WAAW,oBAA4C/8D,EAAK,KAAC,C,MAAM,CAAgBe,MAAQ,EAAC,c,SAAoBmJ,GAAmD,MAAC,6CAAsB,OAAIjJ,MAAG,WAAgBxC,SAAM,YAAC,WAAyB,kBAAbu+D,EAAa,UAAC,EAAa,WAAW,cAAyD,QAACh9D,MAAM,CAACH,MAAOlB,EAAIs+D,cAAUl8D,QAAS,G,SAAoBk8D,GAAmD,MAAC,6CAAsB,OAAIh8D,MAAG,WAAgBxC,SAAM,YAAC,WAA6B,kBAAjBy+D,EAAiB,UAAC,EAAqE,WAAWC,cAAqD,OAAc,CAA2C,MAAC,CAAG,MAAC,oBAAC,cAAc,EAAC,iBAAWA,iBAAwBA,aAAkB,0CAACn9D,SAAM,GAACH,MAAOlB,EAAIy+D,GAAAA,4C,GAAuCz+D,CAA2D,eAAC,4CAA0B,OAAI,MAAG,eAC3rF,qBACGI,EAAAA,aAAoB,8BAExB,E,wCC2GA,MAAMs+D,GAAY,6EAClB,QACAr+D,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACA2F,QAAAA,EAAAA,EAAAA,MAAAA,SACA/F,OAAAA,EACAqC,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,6CACAwxB,qBAAAA,EACAsF,gBAAAA,EACApzD,SAAAA,GACA6yD,cAAAA,CACAjsD,KAAAA,GAAAA,KAAAA,GAAAA,gDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,gDAEAmsD,SAAAA,GACAD,cAAAA,CACAlsD,KAAAA,GAAAA,KAAAA,GAAAA,gDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,gDAEAssD,aAAAA,GACAF,kBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,qDACAC,kBAAAA,EAEA,EACA56D,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,+CACA,2EACA,6CACA,qEACA,oEACA,yEAEA,iBACA,qBACA,kBAEA,EACAiG,WAAAA,EACAlG,MAAAA,KCpK4R,M,uBCAlD,GAAe,KCOrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAu4D,2BAAAA,IACA79D,QAAAA,CACA4S,OACA,sBACA,IC1B8R,MCO1R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAAw4D,6BAAAA,GAAApF,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5B+R,MCO3R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,4BAA4Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,0BAA2BK,WAAW,8BAA8BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,YAAa,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACxwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAoD,oCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACzuB,UAGD,E,MCJoKjJ,GAAAA,W,IAAqBlG,EAAI,K,EAAa,EAAC,S,OAAW,cAAe,C,MAA2QvC,C,MAAO,KAAS,oC,QAAQ,EAAQ,S,YAAsCK,EAAG,KAAwB,IAAC,WAACyS,GAAAA,WAAY,sRAAI,MAAC,CAAa,OAAS,QAAElB,KAAM,gCAAU,4B,SAAgC,G,4BAGxpB,O,EACRotD,M,UAGIjH,CAAAA,EAAK,GAAE73D,UAAIy+D,KAAY,C,KACvBzG,C,KACAD,EAAAA,KACJ,0CACH,gDAAC,2CAAe,CAAC,aAAct3D,EAAK,SAAC,WAAcK,EAAAA,SAAQ,MAAQ4S,EAAAA,aAAQ,iGAAsBxS,OAAWT,EAAO2B,QAAS,QAAgBpC,QAAU0qB,EAAG,QAAC,UAAmB,IAAM,MAAC,GAAgB5qB,MAAM,CAAC,QAAU,MAAmC,SAAQE,SAAI6nC,GAAU,QAAa,CAAC,EAAe,WAAW,UAAaxmC,CAAAA,EAAK,KAAC,C,MAAM,CAAYe,SAAS,YAAe,gB,MAAKU,EAAK4nB,UAAG,SAAC,GAACnpB,UAAW,GAAM,oBAA6CoM,MAAAA,CAAa,MAAO,EAAC,KAAQ,qBAAC7N,EAAM,MAAC,EAAsC,WAAWE,UAAkDuI,EAAAA,GAAAA,EAAW,GAACvI,GAAAA,EAAQ,S,YAAK,CAASwI,MAAG,S,MAAmC1I,C,MAAO,KAAS,uB,SAAG,4C,YAA0B,O,iCAA8BA,CAAAA,EAAAA,GAAAA,EAAAA,C,MAAQ,C,OAASwC,I,YAAiC,EAAO,GAAE,E,mBAAW,aAAC,EAAC,MAA6D,IAAS,MAAO,GAAEtC,EAAAA,EAAOA,EAAI0S,GAAG1S,EAAI+R,GAAG,CAAsC,OAAO,QAAO,WAAmBsnD,QAAAA,GAAAA,GAAoB,8BAACj3D,MAAqD,+DAACb,EAAgC,YAAqCoM,MAAAA,CAAa,MAAO,EAAC,oBAAQ,qBAAC7N,EAAM,qBAAC,EAA4D,WAAWE,0BAA6CuI,GAAAA,EAAAA,GAAAA,EAAe,CAACwI,EAAG,KAAC,C,YAAK,CAASvI,MAAG,S,MAAmC1I,C,MAAO,KAAS,6C,SAAG,uC,YAA0B,O,iCAA8BA,CAAAA,EAAAA,GAAAA,EAAAA,C,MAAQ,C,OAASwC,I,YAAiC,EAAO,GAAE,E,mBAAW,aAAC,EAAC,MAA6D,IAAS,MAAO,GAAEtC,EAAAA,EAAOA,EAAI0S,GAAG1S,EAAI+R,GAAG,CAA4D,OAAO,QAAO,WAAmB4sD,QAAAA,GAAe,iCAACv8D,MAAgD,qFAACb,EAA2B,YAA+BzB,MAAM,CAAC,MAAO,EAACE,eAAkB,SAAU,SAAG,GAAC,iBAAe,CAAuC,EAACqB,WAAM,qBAAsBe,IAAAA,GAAS,OAAe,C,MAAI,CAAoD,MAAC,gBAACb,SAAW,GAAU,mDAAuBzB,MAAM,CAAC,MAAO,EAACE,SAAkB,SAAS,SAAG,GAAC,WAAa,8BAAC,EAAsD,yBAAQkB,EAAAA,GAAAA,EAAWo9D,C,MAAUl8D,C,MAA6Bk8D,EAAAA,cAAmD,QAAC,GAAC/8D,SAAW,GAAU,mDAAuBzB,MAAM,CAAC,MAAO,EAACE,SAAsB,kBAAkBw+D,GAAmD,EAAM,SAAwB,kBAAnBA,EAA4B,SAAU,CAAC,EAAc,WAAW,cAAkD,EAAC,M,MAAC,CAAoE,0BAACn9D,cAAM,iDAACH,KAAOlB,EAAIy+D,iBAAa,kBAACr8D,SAAS,G,MAAoBq8D,EAAAA,GAAAA,4C,GAAyDl9D,CAAyB,2DAA+CzB,MAAM,CAAC,QAAU,aAAG,SAAQE,SAAI++D,GAAoB,eAAa,8BAAC,EAA4D,6BAAQ79D,EAAAA,GAAAA,EAAOlB,CAAG,EAACg/D,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAe,C,MAAC58D,C,QAA6B48D,GAAyD,MAAC,sBAACz9D,SAAW,GAAgB,yDAAuCzB,MAAM,CAAC,QAAU,eAAG,SAAQE,SAAIi/D,GAAe,iBAAa,8BAAC,EAAuD,gCAAQ/9D,GAAK,EAAElB,GAAAA,EAAIq6D,CAAAA,EAAAA,GAAAA,EAAU,C,MAACj4D,C,QAA6Bi4D,GAAoD,MAAC,iBAAC94D,SAAW,GAAW,oDAAuDzB,MAAM,CAAC,QAAU,UAAG,SAAQE,SAAIk/D,GAAmB,YAAa,8BAAC,EAA2D,2BAAQh+D,IAAK,GAAK,EAACi+D,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAc,S,MAAC/8D,C,QAA6B+8D,GAAwD,MAAC,qBAAC59D,SAAW,GAAe,wDAAuCzB,MAAM,CAAC,QAAU,cAAG,SAAQE,SAAIo/D,GAAgB,gBAAa,8BAAC,EAAwD,+BAAQl+D,GAAK,EAAElB,GAAAA,EAAIq/D,CAAAA,EAAAA,GAAAA,EAAW,C,MAACj9D,C,QAA6Bi9D,GAAqD,MAAC,kBAAC99D,SAAW,GAAY,qDACl7H,OACGnB,MAAAA,EAAAA,WAEJ,SAAe,SAAEA,G,2FCmGjB,MAAM,GAAY,6EAClB,QACAC,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACA2F,QAAAA,EAAAA,EAAAA,MAAAA,SACA/F,OAAAA,EACAqC,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,6CACAm3B,eAAAA,GACAD,oBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,uDACA1E,UAAAA,GACA4E,eAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,kDACAE,cAAAA,GACAD,mBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,sDACAG,WAAAA,GACAD,gBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,mDACA/F,qBAAAA,EACAsF,gBAAAA,EACApzD,SAAAA,GACA6yD,cAAAA,CACAjsD,KAAAA,GAAAA,KAAAA,GAAAA,gDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,gDAEAmsD,SAAAA,GACAD,cAAAA,CACAlsD,KAAAA,GAAAA,KAAAA,GAAAA,gDACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,gDAEAssD,aAAAA,GACAF,kBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,qDACAC,kBAAAA,EAEA,EACA56D,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,+CACA,2EACA,8CACA,sEACA,qEACA,wEACA,4EACA,oFACA,wFACA,uFAEA,iBACA,qBACA,iBACA,uBACA,kBACA,sBACA,oBAEA,EACAiG,WAAAA,EACAlG,MAAAA,KC9K4R,M,uBCAlD,GAAe,KCOrP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAi5D,2BAAAA,IACAv+D,QAAAA,CACA4S,OACA,sBACA,IC1B8R,MCO1R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAAk5D,6BAAAA,GAAA9F,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5BkS,MCO9R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kCAAkC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,2BAA2Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,yBAA0BK,WAAW,6BAA6BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,WAAY,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACnwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAmD,mCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACxuB,UAGD,E,SCJ4I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,sC,QAAgB,W,YAAmB,EAAO,K,IAAE,W,GAAE,WAA6X,cAAC4S,MAAM,CAAM,gBAAK,KAAS,KAAelB,CAAAA,EAAM,oX,EAAQ,OAAE,G,KAAgC,U,aAC/sB1R,O,EACN43D,M,UAC6C,sBACjD,KAAC,CAAC,KAAQ,EAAClmD,KAAO,oBAAmB,sBAAC,sBAAqB,CAAC,MAAQgC,EAAAA,WAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAY+nC,CAAU,EAA6C,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACxmC,MAAM,YAACH,SAAW4B,EAAK,0BAACV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAgBxC,SAAM,YAAC,sBAAc,CAAsB,EAAiE,WAAW0/D,yBAAwF,OAAYC,C,MAAc,CAAc,kCAAG,cAAC,6CAAC,oBAA0BD,OAAAA,WAAkC,iDAACn+D,MAAM,gBAACH,SAAWw+D,I,GAAmC1/D,CAAuD,eAAC,oCAAsB,OAAKA,MAAI2/D,EAAAA,SAAqC7/D,SAAM,YAAC,WAAe,8BAA8C,EAAc,yBAAQoB,EAAAA,iBAAWy+D,EAAAA,GAAAA,EAAiB,C,MAACv9D,C,MAA6Bu9D,EAAAA,GAAAA,8CAA2D,SAAC,IAA8B,OAAG,MAAO,EAAI3/D,iBAAmCF,SAAM,YAAC,mBAAe,sBAAuC,QAAC,EAAc,iCAAQoB,EAAK,KAAMq6D,EAAAA,WAAW,Q,MAACn5D,C,MAA6Bm5D,EAAAA,GAAU,wCAAI,SAAC,IAAwB,OAAG,MAAO,EAAG,WAC3+D,qBACGn7D,EAAAA,WAAoB,CAExB,E,sDCRc,SAAUw/D,GAAS70D,GAC7B,IACI,OAAO5C,KAAKsf,MAAMo4C,KAAK90D,EAAM4P,MAAM,KAAK,I,CAC1C,MAAOqN,GACL,OAAO,I,CAEf,CCgFA,QACA3nB,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACAqC,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,4CACAwxB,qBAAAA,EACAsG,iBAAAA,GACApE,WAAAA,KACAiE,cAAAA,EACAE,SAAAA,GACAD,cAAAA,CACAttD,KAAAA,GAAAA,KAAAA,GAAAA,+CACAA,IACA,eACA,cACA,gEAGA,8BACA,sDAHA,wDAKA,GAIA,EACAvO,MAAAA,CACA87D,SAAAA,GACA,MAGA,OAFA,8BACA,sBAGA,cACA,MAGA,OAFA,8BACA,sBAGA,yCACA,mCACA,EACAx+D,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,+CACA,wBACA,4CAEA,iBAEA,EACAiG,WAAAA,EACAlG,MAAAA,KC9I2R,M,uBCAlD,GAAe,KCOpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAy5D,0BAAAA,IACA/+D,QAAAA,CACA4S,OACA,sBACA,IC1B6R,MCOzR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAA05D,4BAAAA,GAAAtG,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5BiS,MCO7R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,+BAA+B,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,yBAAyBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,uBAAwBK,WAAW,2BAA2BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,SAAU,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACxvB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAgD,gCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACruB,UAGD,E,SCJ0I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,iC,QAAiE,W,YAAkB,EAAO,K,IAA0C,W,GAAE,WAAsD,qEAAC4S,MAAM,CAAM,eAAK,KAAS,6CAAelB,CAAAA,EAAM,6C,EAAQ,OAAE,G,KAAgC,U,aACje1R,O,EACN43D,M,UACgDC,CAAAA,EAAK,GAAE73D,UAAIy+D,KAAAA,C,KAAa,CAC3E,YAAC,oBAAe,sBAAC,mBAAmB,CAAC,WAAc39D,EAAAA,SAAQ,MAAQ4S,EAAAA,eAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAY+nC,CAAU,EAA6C,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACxmC,MAAM,YAACH,SAAW4B,EAAK,0BAACV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAgBxC,SAAM,YAAC,sBAAyB,CAAC,EAAa,WAAW,yBAAsD,QAACuB,MAAM,CAACH,MAAOlB,EAAIs+D,cAAUl8D,QAAS,G,SAAoBk8D,GAAmD,MAAC,0CAAsB,OAAIh8D,MAAG,WAAgBxC,SAAM,YAAC,WAA6B,kBAAjBy+D,EAAiB,UAAC,EAAqE,WAAWC,cAAqD,OAAc,CAAwC,MAAC,CAAG,MAAC,oBAAC,cAAc,EAAC,iBAAWA,iBAAwBA,aAAkB,0CAACn9D,SAAM,GAACH,MAAOlB,EAAIy+D,GAAAA,yC,GAAuCz+D,CAA2D,eAAC,4CAA0B,OAAI,MAAG,eACjvD,qBACGI,EAAAA,aAAoB,8BAExB,E,wCCsEA,MAAM,GAAY,6EAClB,QACAC,MAAAA,CAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACAqC,KAAAA,GACA+kC,UAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,0CACAwxB,qBAAAA,EACAiF,SAAAA,GACAD,cAAAA,CACAlsD,KAAAA,GAAAA,KAAAA,GAAAA,6CACAA,GAAAA,GAAAA,KAAAA,IAAAA,KAAAA,GAAAA,6CAEAssD,aAAAA,GACAF,kBAAAA,CAAAA,KAAAA,GAAAA,KAAAA,GAAAA,kDACAC,kBAAAA,EAEA,EACA56D,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,iBACA,+CACA,sBACA,8CACA,+CAEA,iBACA,sBAEA,EACAiG,WAAAA,EACAlG,MAAAA,KChHyR,M,uBCAlD,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAA25D,wBAAAA,IACAj/D,QAAAA,CACA4S,OACA,sBACA,IC1B2R,MCOvR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAA45D,0BAAAA,GAAAxG,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5B+R,MCO3R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,2BAA2B,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,0BAA2BK,WAAW,8BAA8BzB,MAAM,CAAC,KAAO,4CAA4C,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IACt4B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAAw4D,6BAAAA,GAAApE,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvCiS,MCO7R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BE,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mCAAmC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,2BAA2B,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,0BAA2BK,WAAW,8BAA8BzB,MAAM,CAAC,KAAO,6CAA6C,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IACv4B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAAk5D,6BAAAA,GAAA9E,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvCiS,MCO7R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BE,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kCAAkC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,0BAA0B,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,yBAA0BK,WAAW,6BAA6BzB,MAAM,CAAC,KAAO,wBAAwB,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IAC92B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAA05D,4BAAAA,GAAAtF,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvCgS,MCO5R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BE,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,+BAA+B,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,wBAAwB,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,uBAAwBK,WAAW,2BAA2BzB,MAAM,CAAC,KAAO,qBAAqB,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,MAChwB,EACIpR,GAAkB,GCuBtB,IACAiG,WAAAA,CAAA45D,0BAAAA,GAAAxF,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICpC8R,MCO1R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClBkG,W,IAAsB,O,EAA0B,QAAW,G,OAAO,aAAiBf,CAAAA,EAAIoyB,GAAAA,EAAY,C,MAAC,CAAuB,QAAW,EAACpyB,QAAe,QAAU,EAAI,QAAU,QAAa,cAAI,kBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,WAAmB,SAAC,WAAC,kB,GAAiE,CAAC,sBAAgB,SAAe,GAAEpyB,EAAImyB,aAASxgB,CAAM,EAAE,wBAAiB,SAAe,GAAE3R,EAAImyB,aAASxgB,CAAM,EAAE,gBAAiB,SAAC,GAAiB3R,EAAI4xB,SAAU,CAAO,EAAE,iBAAkB,SAAC,GAAiB5xB,EAAI4xB,SAAU,CAAO,EAAE,kBAAkB,SAASjgB,GAAQ3R,EAAIkgE,WAASvuD,CAAM,EAAE,+BAACpJ,EAAAA,WAAoB,CAAClG,EAAcmG,kBAAa,YAAC,WAAe,CAA0D,GAAY,YAAE,OAACnG,IAAI,UAAgBmG,GAAG,WAAW0N,MAAI,4D,EAAU,OAAE,G,KAAkBpW,gB,aAAO,K,EAAwB,QAAC,I,MAAgD,GAAC,M,MAAC,CAAU,mBAAkCyC,CAAAA,EAAAA,GAAAA,EAAY,CAAY,YAAamQ,OAAgNnQ,MAAAA,CAAqBvC,MAAO,KAG9vCF,CAAAA,EAAK,QAAC,iB,YAAS,a,CAAY,OAAW,GAAC,EAAE,sL,YAAW,QAAG,8IAAC0C,YAAG,O,MAAC,C,MAAgCxC,YAAgC,aAAC,cAAgFuC,GAAAA,CAAsBvC,MAAO,SAAU,GAAU2N,OAAW,EAAC,yBAAC,IAAwB,CAACrL,EAAG,QAAW,EAAC,yDAACxC,YAAM,S,CAAC,aAAS,WAAE,YAAC,CAACyI,aAAe,W,CAAsBC,EAAE,KAAC,C,MAAWhG,CAAG,OAAE,I,YAAmC,O,6BAAmB,G,IAA8D,MAAK,CAAC,EAACxC,EAAAA,EAAO,EAAIA,GAAG,CAA2D,OAAQ,MAAK,GAAO,MAAW,GAAgJ2N,MAAY,6CAAsB,kEAAKuI,IAA0HpW,MAAM,I,CAAC,SAAS,oIAAE,YAAC,CAACyI,aAAe,W,CAAkC,SAAZC,EAAG,UAAS,4E,MAAEhG,CAAG,OAAE,I,YAAmC,O,6BAAmB,G,IAIvhC,MAAK,CAAC,EAACxC,EAAAA,EAAO,EAAIA,GAAG,CAA8D,OAAQ,MAAK,GAAO,MAAW,GAA8RuC,MAAY,kFAA6IA,GAAW,CAAC,KAAM,4DAACzC,IAAO,MAAO,I,CAAa,SAAW,GAAG,+P,YAAW,QAAG,mHAAC0C,YAAG,O,MAAC,C,MAAgCxC,YAAgC,aAAC,cAAgFuC,GAAAA,CAAsBvC,MAAO,SAAU,GAAU2N,OAAW,EAAC,yBAAC,IAAwB,CAACrL,EAAG,KAAO,GAACtC,EAAM,GAAC,6CAAiB,SAAC2N,YAAY,S,CAAC,aAAa,WAAQ,aAAIrL,aAAc,W,CAAS,SAAS,uBAAE,YAAC,CAACiG,aAAe,W,CAAsBC,EAAE,KAAC,C,MAAWhG,CAAG,OAAE,I,YAAmC,O,6BAAmB,G,IAI5jC,MAAK,CAAC,EAACxC,EAAAA,EAAO,EAAIA,GAAG,CAA8D,OAAQ,MAAK,GAAO,MAAW,GAA2SkW,MAAK2lD,EAAAA,0BAAAA,UAAAA,EAAAA,sBAAAA,QAAAA,YAAgB,qEAAG,IAAM,UAAc,UAAS,2QAAE3lD,KAAAA,EAAAA,aAAO,G,uBAA4C,UAAC,K,UAA8B,YAAW4lD,C,MAAwB,CAAC,eAAev5D,GAAAA,CAA8BvC,MAAO,SAAU,GAAqB,8BAAG,IAAuB,UAAS,CAAEkW,YAAAA,iBAAO,gC,QAA0D,iCAAI,IAA+B3N,MAAW,GAAI,GAAG,YAAE,MAAI,KAAC,EAAS,Y,IAAsB,MAAC,K,EAAC,cAAW,C,YAA8B,O,iBAA+B,UAAC,M,UAAsC,CAAC,yBAAU,C,MAAC,C,MAA6B,sB,YAA0B,EAAOiJ,GAAAA,CAAAA,C,iBAAQ,WAAC,MAAG,kBAAC,IAAM,MAAC,YAAY,OAAI,GAAI,KAAW,EAAM,OAAM2uD,IAA2B,MAAC,KAAyC,KAAgC,OAAI,MAAG,oBACnwC,qBACG//D,EAAAA,kBAAoB,CAExB,E,6CCf4CkC,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAe,CAA+B,MAAC,CAACyI,MAAW,EAACvI,GAAI+Q,iC,YAAuB,KAAU,E,IAAC,W,GAAkMjR,W,MAAO,GAAQ,GAAC,2KAAO,O,MAAC,CAAmC,eAAIE,KAAO,KAAQ,wBAAuB,GAAC,yBAAK,EAAEqC,OAAI,GAAUmG,C,IAAckL,UAAM,GAAE,gBAAC,IAA4C,MAAG,gCAAerS,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAIe,WAAG,U,CAAuB,OAAU,C,MAAC,CAA2C,MAAS,GAAa,QAAQtC,EAAI8W,MAAAA,GAAAA,oBAAc,kBAAyB,sBAACvO,sBAAoB,I,YAAkB,KAAU,E,IAAC,UAAiF,GAAC,WAACqK,MAAM,oEAAK,EAAEvQ,OAAK,GAAWmG,C,IAAc0N,YAAK,GAAE,eAAC,IAA8C,MAAK,GAAI,yBAAI,IAChjC,YACG9V,EAEJ,E,MC4CA,IACAC,MAAAA,CAAAA,SACAQ,OACA,OACAJ,OAAAA,EACAK,SAAAA,EACAgW,cAAAA,GACAtQ,QAAAA,EAAAA,EAAAA,MAAAA,SAEA,EACAzF,QAAAA,CACA4d,kBAAAA,EAAAA,GAAAA,IAAAA,oBAAAA,iBACA,kCACA,0BACA,qBAEA,gFAEAnP,MAAAA,GAAAA,EAAAA,OAEA,+BAAAkO,KAAAA,KACA,KAEAlZ,SAAAA,CACArD,UACA,OACA,CACAS,KAAAA,KAAAA,GAAAA,wCACAV,MAAAA,OACA+wB,UAAAA,GAGA,GAEAruB,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,sBACA,wBACA,EACAiG,WAAAA,KCzF8R,M,sBCAlD,GAAe,KCOvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QChB1B,SAAUq2D,GAA6B9E,GACzC,MAA2B,UAApBA,EAAGh/C,YACd,CAEA,QACIjW,WAAY,CACRg6D,oBAAmBA,IAEvBhgE,MAAO,CACHyoB,MAAOhR,MACPhX,QAAS,CACLf,KAAMiD,QACNxC,SAAS,GAEbyzC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,oBAGjBO,QAAS,CACLu/D,uBAAuBpqD,GAEdA,EAAK2lD,UAAU0E,2CACfrqD,EAAK2lD,UAAU0E,0CAA0Ct3D,KAK9DnH,KAAK0+D,mBAAqB,CACtBvkD,eAAgB/F,EAAK2lD,UAAU5/C,eAC/BwkD,aAAcvqD,EAAK2lD,UAAU0E,0CAA0Ct3D,IAE3EnH,KAAKq+D,mBAAoB,EAC7B,EACArE,mBAAmB5lD,GACf,MAAMy/C,EAA6C,CAC/CP,aAAcF,GAAAA,0BACd3pD,SAAU,KACV0Q,eAAgB/F,EAAKuH,IAGzB,OADA03C,KAAiCE,uBAAuBM,GACjD7zD,KAAKiS,QAAQnU,KAAK,GAAGkC,KAAKmyC,eAAe/9B,EAAKuH,KACzD,GAEJjZ,SAAU,CACNmtB,gBACI,IAAK7vB,KAAKgnB,MAAO,MAAO,GACxB,MAAM+N,EAAW/0B,KAAKgnB,MAAMjP,OAAOumD,IAA8BxwD,KAAK0rD,IAClE,MAAMoF,EAAmB,CACrBjjD,GAAI69C,EAAGryD,GACPyU,KAAM49C,EAAGx4D,KACT69D,wBAAuBrF,EAAGiF,2CACpBjF,EAAGiF,0CAA0CpG,aAEnD0B,UAAWP,GAEf,OAAQA,EAAGv7D,MACP,IAAK,QACD2gE,EAAYE,qBAAuB,uBACnCF,EAAYG,yBAAyBvF,EAAGiF,2CAClCjF,EAAGiF,0CAA0C9/D,MAEnDigE,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MACJ,IAAK,WACDigE,EAAYE,qBAAuB,gDACnCF,EAAYG,yBAAyBvF,EAAGyF,4CAClCzF,EAAGyF,2CAA2CtgE,MAEpDigE,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MACJ,IAAK,UACDigE,EAAYE,qBAAuB,uBACnCF,EAAYM,qBAAuB,uBACnCN,EAAYG,yBAAyBvF,EAAG2F,uBAClC3F,EAAG2F,sBAAsBxgE,MAE/BigE,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MACJ,IAAK,QACDigE,EAAYE,qBAAuB,iBACnCF,EAAYM,qBAAuB,uBACnCN,EAAYG,yBAAyBvF,EAAG4F,oBAClC5F,EAAG4F,mBAAmBzgE,MAE5BigE,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MACJ,IAAK,YACDigE,EAAYE,qBAAuB,mBACnCF,EAAYM,qBAAuB,uBACnCN,EAAYG,uBAAyBvF,EAAGpB,yBAAyBz5D,QAAS,EAC1EigE,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MACJ,IAAK,kBACDigE,EAAYE,qBAAuB,eACnCF,EAAYM,qBAAuB,uBACnCN,EAAYG,wBAAyB,EACrCH,EAAYI,4BAA4BxF,EAAGiF,2CACrCjF,EAAGiF,0CAA0C9/D,MAEnD,MAER,OAAOigE,CAAW,IAEtB,OAAO7pC,CACX,EACA11B,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAM,UACNV,MAAO,UACP+wB,UAAU,GAGtB,GAEJpxB,OACI,MAAO,CACHq/D,SAAU,GACVhuC,aAAa,EACbC,SAAU,OACVP,YAAY,EACZQ,aAAc,GACd+tC,mBAAmB,EACnBK,mBAAoB,CAChBvkD,eAAgB,KAChBwkD,aAAc,MAG1B,GCtJiU,M,uBCA9F,GAAe,KCQlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCKhC,IAAer6D,EAAAA,EAAAA,iBAAgB,CAC7BiC,QACE,OAAOvG,KAAKiQ,GAAG,uBACjB,EACA1R,MAAO,CACLmW,cAAesB,OAEjBzR,WAAY,CACV86D,8BAA6B,GAC7BC,gCAA+B,GAC/BC,iCAAgC,GAChCC,8BAA6B,GAC7BC,gCAA+B,GAC/BC,gCAA+B,GAC/BC,+BAA8B,GAC9BC,6BAA4B,GAC5BlF,yBAAwB,GACxBmF,wBAAuB,GACvBjF,2BAA0B,GAC1BC,iCAAgC,GAChCN,yCAAwC,GACxCE,wCAAuC,GACvCqF,uBAAsBA,IAExB/gE,OACE,MAAMy8D,EAAoB,CAACrlD,GAAAA,MAAwBA,GAAAA,SAA2BA,GAAAA,SAO9E,OANIxR,EAAAA,EAAAA,iBAAwB8pB,GAAAA,eAC1B+sC,EAAkB19D,KAAKqY,GAAAA,OAErBxR,EAAAA,EAAAA,iBAAwB8pB,GAAAA,mBAC1B+sC,EAAkB19D,KAAKqY,GAAAA,WAElB,CACLulD,2BAA2B,EAC3BK,0BAA0B,EAE1BJ,2BAA2B,EAC3BK,0BAA0B,EAE1BJ,0BAA0B,EAC1BK,yBAAyB,EAEzBJ,wBAAwB,EACxBK,uBAAuB,EAEvBJ,4BAA4B,EAC5BO,2BAA2B,EAE3BD,sBAAsB,EACtBxG,4BAA4B,EAC5BuG,mBAAmB,EACnBpB,eAAgB,KAEhBS,oBAEJ,EACA94D,SAAU,CACRq9D,qBACE,OAAO//D,KAAK0U,cAAcqD,OAAOumD,GACnC,MACG91B,EAAAA,GAAAA,IAAUrc,KAEfltB,QAAS,CACP0yC,mBAAmB8E,GACbA,IACJz2C,KAAKiS,QAAQnU,KAAK,mBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,wBACxB,EACAslD,yBACEv1D,KAAKgE,MAAM,yBACb,EACAwsD,mBAAmBvyD,GACjB,OAAQA,GACN,IAAK,QACH+B,KAAK07D,2BAA4B,EACjC,MACF,IAAK,UACH17D,KAAK47D,0BAA2B,EAChC,MACF,IAAK,WACH57D,KAAK27D,2BAA4B,EACjC,MACF,IAAK,YACH37D,KAAK87D,4BAA6B,EAClC,MACF,IAAK,QACH97D,KAAK67D,wBAAyB,EAC9B,MACF,QACE,MAAM,IAAI9/B,MAAM,0BAEtB,EACA0/B,sBAAsB1C,GAEpB,OADA/4D,KAAK+6D,eAAiBhC,EACdA,EAAQ96D,MACd,IAAK,QACH+B,KAAK+7D,0BAA2B,EAChC,MACF,IAAK,UACH/7D,KAAKi8D,yBAA0B,EAC/B,MACF,IAAK,WACHj8D,KAAKg8D,0BAA2B,EAChC,MACF,IAAK,YACHh8D,KAAKq8D,2BAA4B,EACjC,MACF,IAAK,QACHr8D,KAAKk8D,uBAAwB,EAC7B,MACF,QACE,MAAM,IAAIngC,MAAM,0BAEtB,EACAq5B,cAAc2D,GACZ/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKo8D,sBAAuB,CAC9B,EACAjB,oBAAoBpC,GAClB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK41D,4BAA6B,CACpC,EACA/F,mBAAmBkJ,GACjB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKm8D,mBAAoB,CAC3B,EACA6D,uBAAuBjH,GACrB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK+7D,0BAA2B,CAClC,EACAkE,uBAAuBlH,GACrB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKg8D,0BAA2B,CAClC,EACAV,iBAAiBlnD,GACf,MAAMmnD,EAA4C,CAChDjI,aAAcF,GAAAA,cACd3pD,SAAU,KACV0Q,eAAgB,MAElBk5C,KAAiCE,uBAAuBgI,GACxD,MAAMpoB,EAAM,uBAAuB/+B,EAAK+F,iBACxCna,KAAKiS,QAAQnU,KAAKq1C,EACpB,KC3KuS,M,uBCAxF,GAAe,KCO9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBiN,W,MAAW,K,IAA6C,MAAC,G,SAAC,KAAUj1C,CAAAA,EAAIq3D,eAAAA,C,MAAuB,C,MAAC9uD,EAAAA,GAAW,yB,QAAc,kC,YAA0B/F,EAAAA,GAAAA,CAAAA,C,yCAAiCD,EAAAA,+BAAkB,C,YAAQ,EAAQ,wB,YAA0B,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAI,OAAO,kBAAM,UAAMgiE,KAAkD,GAACA,CAAAA,EAAAA,EAAAA,EAAAA,CAAyB,OAACzgE,KAAW,KAA0B,mDAAC,KAAa,OAAO,6BAAqC,qBAAQ,EAAI,qBAAoB,CAAC,EAA2C,qCAAsCiH,E,OAAc0N,M,GAAQ,8BAAoB,C,MAAC3N,C,MAAwB,EAAC,oB,QAAe,QAAS,wB,YAAO,O,6BAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAgO,yBAAC,I,CAA+D,oGAAC,IAAIA,MAAG,YAAsQxC,OAAM,wBAAC,IAAoD,CAACwC,EAAG,QAAkB,IAAK,MAAS,wBAAyB,GAAG,EAAEA,GAAAA,GAAG,SAA0B,QAAmB,GAAEtC,EAAIG,GAAGH,wBAAc,OAAiC,oBAAjC,EAA0B,KAAyB,EAAC8d,GAAAA,EAAS,CAAqCtb,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI2xD,sBAAmBz7C,EAAK,IAAI,CAAC5T,EAAG,QAAkB,IAAK,MAAS,6BAA6B,GAAGA,EAAG,SAAqB,MAAK,MAAmB,EAAEtC,GAAIG,EAAGH,GAAI0S,8BAA6B,IAAG1S,GAAI4Q,EAAK,KAAI,EAAI,gEAAQ,GAAK,4CAA4C,2JAAC,IAA6B,kBAAI,8BAAC,IAA4C,mHAAC1P,IAAiCkB,MAAQ,K,EAAiBpC,8BAA4B,C,MAAC,CAACuB,QAAU,EAAC,gBAAyB,GAAG,CAA0CzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,uBAAC,SAAS,SAAKu3D,GAAuB,wBAACh2D,EAAOH,WAAW+gE,0B,EAA8CjiE,wCAA2B,C,MAAC,CAACuB,KAAAA,EAAW,gBAAwB,GAAG,CAAmCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,sBAAC,SAAS,SAAKu3D,GAAuB,uBAACh2D,EAAOH,WAAWghE,yB,EAAkDliE,iCAA+B,C,MAAC,CAACuB,QAAU,EAAC,gBAA4B,GAAG,CAAyCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,0BAAC,SAAS,SAAKu3D,GAAuB,2BAACh2D,EAAOH,WAAWw2D,6B,EAAqD13D,uCAAkC,C,MAAC,CAACuB,QAAU,EAAC,gBAA+B,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,2BACnjH,qBACGnB,EAAAA,2BAAoB,CAExB,E,6GCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qCAAqC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,0BAA0Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,wBAAyBK,WAAW,4BAA4BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,UAAW,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAClwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAsD,sCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IAC3uB,UAGD,E,8BCJ4N,GAAC,W,IAACjJ,EAAAA,K,EAAwB,EAAC,S,OAAa,EAAC,YAAU,C,MAAC,C,MAA+H,EAAC,yC,SAAO,EAAE,GAAEvI,sC,QAAiC,EAAQ,S,YAAiBG,EAAG,KAAiC,IAAC,WAACyS,GAAAA,WAAY,sHAAI,MAAC,CAAa,KAAS,kCAAElB,OAAM,WAAU,uC,SAAgC,G,4BAGpkBywD,O,EACItK,M,UAGAa,CAAAA,EAAAA,GAAAA,UAAgB0J,KAAAA,C,KACpB,CACH,YAAC,oBAAe,sBAAC,0BAAmB,CAAC,MAAUpiE,EAAIc,cAAQ,aAAQ4S,EAAAA,UAAQ,6CAAsBxS,OAAWT,EAAO2B,QAAS,QAAgBpC,QAAU0qB,EAAG,QAAC,UAAmB,IAAM,MAAC,GAAgB5qB,MAAM,CAAC,MAAO,EAAEE,MAAuB,SAAU,SAAKkJ,GAA8B,QAAa,CAAC,EAAe,WAAW,UAAa7H,CAAAA,EAAK,KAAC,C,MAAM,CAAYe,MAAQ,CAAC,SAAUsoB,Y,SAAc,EAAI,mCAAC,GAACnpB,UAAW,GAAM,oBAAqBzB,MAAM,CAAC,MAAO,EAACE,KAA8B,SAAU,SAAKkJ,GAA6C,QAACX,EAAqBlG,WAAI,U,EAAuB,KAAW,C,MAAavC,C,MAAO,KAAS,uB,SAAG,4C,YAA0B,O,iCAA8BA,CAAAA,EAAAA,GAAAA,EAAAA,C,MAAQ,C,OAASwC,I,YAAiC,EAAO,GAAE,E,mBAAW,aAAC,EAAC,MAA6D,IAAS,MAAO,GAAEtC,EAAAA,EAAOA,EAAI0S,GAAG1S,EAAI+R,GAAG,CAAsC,OAAO,QAAO,WAAmBsnD,QAAAA,GAAAA,GAAoB,8BAACj3D,MAAqD,+DAACb,EAAgC,YAAuBzB,MAAM,CAAC,4BAAuB,SAAQE,SAAO,GAAgD,uBAAG,EAAE,WAASA,yBAAiCsC,EAAG,KAAY,CAAExC,MAAM,CAAC,kBAAa,KAAC,MAAQ,EAAI,GAACg7D,iD,GAAiC,CAA+D,sCAAQ55D,EAAAA,GAAAA,EAAWmhE,C,MAAejgE,C,SAA6BigE,GAAiB,MAAC,sBAAC9gE,SAAW,GAAe,4DAAuBzB,MAAM,CAAC,MAAO,EAAEE,cAAuB,SAAU,SAAG,GAAC,gBAAe,CAA0C,EAACqB,WAAM,mBAAuBe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAc,MAAC,sBAACb,SAAW,GAAW,sDAAuBzB,MAAM,CAAC,MAAO,EAAEE,UAAuB,SAAU,SAAG,GAAC,YAAc,CAA0C,EAAuD,0BAAQkB,EAAAA,GAAAA,EAAWohE,C,MAASlgE,C,MAA6BkgE,CAAAA,EAAO,OAAI,qBAAC,GAAC/gE,YAAW,0CAAS,oDACr7D,OACGnB,MAAAA,EAAAA,QAEJ,SAAe,SAAEA,G,gDCXjB,IACIC,MAAO,CAAC,UAAW,QAAS,YAC5BQ,OACI,MAAO,CACHJ,OAAO,EACPqC,KAAM,GACNu2D,qBAAqB,EACrBkJ,UAAW,GACXD,QAAS,GACTD,cAAe,GACf77D,QAASC,EAAAA,EAAAA,MAAaC,SAE9B,EACAlC,SAAU,CACN49D,YACI,IAAKtgE,KAAKugE,cAAe,OAAO,KAChC,IACI,MAAMG,EAAYr6D,KAAKsf,MAAM3lB,KAAKugE,eAClC,OAAOG,EAAU,eAAiB,I,CACpC,MACE,OAAO,I,CAEf,GAEJzhE,QAAS,CACLkG,gCAAgCggB,GACvBA,IACLnlB,KAAKugE,oBAAsBp7C,EAAKrlB,OACpC,GAEJgC,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACCA,IACLhI,KAAKgB,KAAOgH,EAAIhH,KAChBhB,KAAKu3D,oBAAsBvvD,EAAIuvD,oBAC3BvvD,EAAI24D,2BACJ3gE,KAAKugE,cAAgBv4D,EAAI24D,0BAA0B13D,MACnDjJ,KAAKwgE,QAAUx4D,EAAI24D,0BAA0BpI,UAC7Cv4D,KAAKygE,UAAYz4D,EAAI24D,0BAA0BtI,eAE/Cr4D,KAAKugE,cAAgB,GACrBvgE,KAAKwgE,QAAU,GACfxgE,KAAKygE,UAAY,IAEzB,EACAx4D,WAAW,EACXlG,MAAM,KCjDwT,M,uBCA9F,GAAe,KCOvP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAAq8D,6BAAAA,IACA3hE,QAAAA,CACA4S,OACA,sBACA,IC1BgS,MCO5R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAAs8D,+BAAAA,GAAAlJ,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5B2R,MCOvR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qCAAqC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,yBAAyB,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,wBAAyBK,WAAW,4BAA4BzB,MAAM,CAAC,KAAO,4BAA4B,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IACl3B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAAs8D,+BAAAA,GAAAlI,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvCmS,MCO/R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBsDjB,GAAM,W,IAAC,O,EAAsB,QAAUE,G,OAAY,OAAY2xB,C,MAAc,CAAgB,kBAAkC,QAAU3xB,EAAImyB,QAAS,QAAYnyB,cAAe,gBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,iBAAE,EAACpJ,mBAAoB,YAAClG,EAAI,WAAS,CAACmG,G,YAAyF,OAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,MAAU,uDAACmG,E,OAAc0N,GAAM,C,IAAE,Y,GAA0BpW,UAAM,K,IAAsC,MAAM,CAACK,EAAG,cAAW+V,CAAc,OAAG,gCAA+B,UAAS,gB,GAAQ,C,IAAE,uB,GAAmB46C,UAAM56C,KAAiD,I,MAAuE,UAAS,CAAE,MAAC,4CAAC3N,CAAAA,EAAAA,GAAAA,IAAYvI,EAAM,GAAE,gC,MAAK,CAAYwI,OAAG,I,YAAgB,O,IAAC,Y,GAA4B1I,UAAM,G,UAAuB,GAAO,IAAM8iE,EAAAA,GAAAA,CAA6C,OAAGpgE,MAASrC,GAA8D,SAAQ,MAAK,8CAAmK,2DAAG,IAAM,UAAgC,UAAS,sI,GAAQ,C,IAAE,8B,GAA2J2wD,UAAM56C,KAA6D,IAA8E,+GAAI,MAAEA,EAAA,uBAAa,2BAAI,QAAS,wDAAhC,sB,GAAwC,C,IAAE,e,GAAiC,UAAOA,KAAc,IAAO,MAAK,GAAI,qBAAG,mBAE19D9V,IAEJ,MAASa,I,QCyDF,SAAS4hE,GAA8BvH,GAC9C,+BACA,CAEA,QACAj7D,MAAAA,CACAyoB,MAAAA,MACAhoB,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEAyzC,YAAAA,CACAl0C,KAAAA,OACAS,QAAAA,qBAGAK,OACA,OACAsxB,SAAAA,OACAP,YAAAA,EACAQ,aAAAA,GAEA,EACA5tB,SAAAA,CACAmtB,gBACA,kBACA,+BACA,MACA2pC,EAAAA,2BAAAA,EAAAA,0BAAAA,WAAAA,IAAAA,KAAAA,EAAAA,0BAAAA,QAAAA,KAKA,OAHA,wBACAC,EAAAA,MAEA,CACA99C,GAAAA,EAAAA,GACAC,KAAAA,EAAAA,KACAklD,wBAAAA,EAAAA,0BACAtH,EAAAA,0BAAAA,MACAA,oBAAAA,EAAAA,KACAwH,gBAAAA,EAAAA,0BACAxH,EAAAA,0BAAAA,YAAAA,kBACAA,oBAAAA,EAAAA,KACA,WACA,kBACAyH,gBAAAA,EAAAA,0BACAzH,EAAAA,0BAAAA,aACAA,oBAAAA,EAAAA,KACA,WACA,kBACA0H,uBAAAA,EACAnH,UAAAA,EACA,IA1BA,EA4BA,EACA16D,UACA,OACA,CACAS,KAAAA,KAAAA,GAAAA,QACAV,MAAAA,OACA+wB,UAAAA,GAEA,CACArwB,KAAAA,KAAAA,GAAAA,sCACAV,MAAAA,kBACA+wB,UAAAA,GAEA,CACArwB,KAAAA,KAAAA,GAAAA,sCACAV,MAAAA,kBACA+wB,UAAAA,GAEA,CACArwB,KAAAA,KAAAA,GAAAA,mCACAV,MAAAA,yBACA+wB,UAAAA,GAEA,CACArwB,KAAAA,UACAV,MAAAA,UACA+wB,UAAAA,GAGA,IC/I0R,M,uBCAlD,GAAe,KCQnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC2FhC,IACA5pB,QACA,uCACA,EACAhI,MAAAA,CACAmW,cAAAA,OAEAnQ,WAAAA,CACA48D,yBAAAA,GACAC,0BAAAA,GACA1G,yBAAAA,GACAE,2BAAAA,GACAC,iCAAAA,GACAwG,kCAAAA,IAEAtiE,OACA,OACAmhE,sBAAAA,EACAC,qBAAAA,EACAC,yBAAAA,EACAxK,4BAAAA,EACA0L,sBAAAA,EACAvG,eAAAA,KAEA,EACAr4D,SAAAA,CACA6+D,sBACA,oCACA,MACA,cAEAtiE,QAAAA,CACA0yC,mBAAAA,GACA,IACA,sCACA,6CACA,EACA4jB,yBACA,oCACA,EACAH,cAAAA,GACA,sBACA,+BACA,EACAqG,sBAAAA,GACA,sBACA,2BACA,EACA5L,mBAAAA,GACA,sBACA,4BACA,EACAsL,oBAAAA,GACA,sBACA,kCACA,ICzKmQ,M,uBCA/C,GAAe,KCO/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB2N,W,IAAgBz0D,EAAG,K,EAAW,QAAW,GAAkC,EAAC,kB,SAAC,KAAUxI,CAAAA,EAAIq3D,eAAAA,C,MAAuB,C,MAAC9uD,EAAAA,GAAW,yB,QAAc,kC,YAA0B/F,EAAAA,GAAAA,CAAAA,C,yCAAiCD,EAAAA,+BAAkB,C,YAAQ,EAAQ,wB,YAA0B,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAI,OAAO,kBAAM,UAAMsjE,KAAkD,GAACA,CAAAA,EAAAA,EAAAA,EAAAA,CAAyB,OAAC/hE,KAAW,KAA0B,mDAAC,KAAa,OAAO,6BAAqC,qBAAQ,EAAI,qBAAoB,CAAC,EAA2C,qCAAsCiH,E,OAAc0N,M,GAAQ,8BAAoB,C,MAAC3N,C,MAAwB,EAAC,oB,QAAe,QAAS,wB,YAAO,O,6BAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAgO,yBAAC,I,CAA+D,oGAAC,IAAIA,MAAG,YAAyQ,+BAAC,I,CAA0D,kJAAC,IAAIA,MAAG,YAA0O,iCAAC,I,CAA4D,4LAAC,IAAIA,MAAG,YAA8K,4BAAQ,IAAiD,2JAAC,IAA6B,kBAAI,8BAAC,IAA4C,mHAACpB,IAAiCkB,MAAQ,K,EAAiBpC,8BAA4B,C,MAAC,CAACuB,QAAU,EAAC,gBAAyB,GAAG,CAAqCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,uBAAC,SAAS,SAAKu3D,GAAuB,wBAACh2D,EAAOH,WAAWqiE,0B,EAA8CvjE,mCAA2B,C,MAAC,CAACuB,KAAAA,EAAW,gBAAwB,GAAG,CAAmCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,sBAAC,SAAS,SAAKu3D,GAAuB,uBAACh2D,EAAOH,WAAWsiE,yB,EAAkDxjE,iCAA+B,C,MAAC,CAACuB,QAAU,EAAC,gBAA4B,GAAG,CAAyCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,0BAAC,SAAS,SAAKu3D,GAAuB,2BAACh2D,EAAOH,WAAWw2D,6B,EAAqD13D,uCAAkC,C,MAAC,CAACuB,QAAU,EAAC,gBAA+B,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,2BACllH,qBACGnB,EAAAA,2BAAoB,CAExB,E,6GCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,gCAAgC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,0BAA0Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,wBAAyBK,WAAW,4BAA4BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,UAAW,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAC7vB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAiD,iCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACtuB,UAGD,E,MCJoN,GAAC,W,IAACjJ,EAAAA,K,EAAwB,EAAC,S,OAAa,EAAC,YAAU,C,MAAC,C,MAA+H,EAAC,qC,SAAO,EAAE,GAAEvI,kC,QAAiC,EAAQ,S,YAAiBG,EAAG,KAAiC,IAAC,WAACyS,GAAAA,WAAY,sHAAI,MAAC,CAAa,KAAS,kCAAElB,OAAM,WAAU,uC,SAAgC,G,4BAG5jB+xD,O,EACI5L,M,UAGAa,CAAAA,EAAAA,GAAAA,UAAgBgL,KAAS,C,KACzB1L,CACJ,YACH,0CAAC,iBAAe,CAAC,MAAUh4D,EAAIS,QAAM,aAAcK,EAAO,OAAC,UAAQ4S,EAAAA,YAAQ,+CAAsBxS,OAAWT,EAAO2B,QAAS,QAAgBpC,QAAU0qB,EAAG,QAAC,UAAmB,IAAM,MAAC,GAAgB5qB,MAAM,CAAC,MAAO,EAAEE,MAAuB,SAAU,SAAKkJ,GAA8B,QAAa,CAAC,EAAe,WAAW,UAAa7H,CAAAA,EAAK,KAAC,C,MAAM,CAAYe,MAAQ,CAAC,SAAUsoB,Y,SAAc,EAAI,mCAAC,GAACnpB,UAAW,GAAM,oBAAqBzB,MAAM,CAAC,MAAO,EAACE,KAA8B,SAAU,SAAKkJ,GAA6C,QAACX,EAAqBlG,WAAI,U,EAAuB,KAAW,C,MAAavC,C,MAAO,KAAS,uB,SAAG,4C,YAA0B,O,iCAA8BA,CAAAA,EAAAA,GAAAA,EAAAA,C,MAAQ,C,OAASwC,I,YAAiC,EAAO,GAAE,E,mBAAW,aAAC,EAAC,MAA6D,IAAS,MAAO,GAAEtC,EAAAA,EAAOA,EAAI0S,GAAG1S,EAAI+R,GAAG,CAAsC,OAAO,QAAO,WAAmBsnD,QAAAA,GAAAA,GAAoB,8BAACj3D,MAAqD,+DAACb,EAAgC,YAAuBzB,MAAM,CAAC,4BAAuB,SAAQE,SAAO,GAA2C,uBAAG,EAAE,WAASA,yBAAiCsC,EAAG,KAAY,CAAExC,MAAM,CAAC,kBAAa,KAAC,MAAQ,EAAI,GAACg7D,4C,GAAiC,CAA0D,sCAAQ55D,EAAAA,GAAAA,EAAWyiE,C,MAASvhE,C,SAA6BuhE,GAAW,MAAC,sBAACpiE,SAAW,GAAS,uDAAuBzB,MAAM,CAAC,MAAO,EAAEE,QAAuB,SAAU,SAAG,GAAC,UAAc,CAAuF,EAAqD,wBAAQkB,EAAAA,GAAAA,EAAWwiE,C,MAAWthE,C,MAA6BshE,CAAAA,EAAAA,OAAa,qBAAC,GAACniE,YAAW,uFAAW,kDAAuBzB,MAAM,CAAC,MAAO,EAAEE,UAAuB,SAAU,SAAG,GAAC,YAAc,CAAoF,EAAkD,0BAAQkB,EAAAA,GAAAA,EAAW0iE,C,MAAQxhE,C,MAA6BwhE,CAAAA,EAAM,OAAI,qBAAC,GAACriE,YAAW,oFAAQ,+CAAuBzB,MAAM,CAAC,MAAO,EAAEE,OAAuB,SAAU,SAAG,GAAC,SAAc,CAAuD,EAAuD,uBAAQkB,EAAAA,GAAAA,EAAW2iE,C,MAAazhE,C,MAA6ByhE,CAAAA,EAAAA,OAAYn5C,YAAG,SAAC,GAACnpB,YAAW,uDAAa,oDAAuBzB,MAAM,CAAC,MAAO,EAAEE,YAAuB,SAAU,SAAG,GAAC,cAAc,CAAsB,EAAoD,4BAAQkB,EAAAA,GAAAA,EAAW4iE,C,MAAU1hE,C,MAA6B0hE,CAAAA,EAAQ,OAAI,qBAAC,GAACviE,YAAW,sBAAU,iDAC3kF,OACGnB,MAAAA,EAAAA,SAEJ,SAAe,SAAEA,G,kDCZjB,IACIC,MAAO,CAAC,UAAW,QAAS,YAC5BQ,OACI,MAAO,CACHJ,OAAO,EACPqC,KAAM,GACNu2D,qBAAqB,EACrBqK,UAAW,GACXE,OAAQ,GACRE,SAAU,GACVD,YAAa,GACbF,QAAS,GACTn9D,QAASC,EAAAA,EAAAA,MAAaC,SAE9B,EACA3F,QAAS,CACLkG,gCAAgCggB,GACvBA,IACLnlB,KAAK6hE,cAAgB18C,EAAKrlB,OAC9B,GAEJgC,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACCA,IACLhI,KAAKgB,KAAOgH,EAAIhH,KAChBhB,KAAKu3D,oBAAsBvvD,EAAIuvD,oBAC3BvvD,EAAIi6D,uBACJjiE,KAAK4hE,UAAY55D,EAAIi6D,sBAAsB3J,WAC3Ct4D,KAAK6hE,QAAU75D,EAAIi6D,sBAAsBh5D,MACzCjJ,KAAK+hE,YAAc/5D,EAAIi6D,sBAAsB1J,UAC7Cv4D,KAAK8hE,OAAS95D,EAAIi6D,sBAAsB5J,aACxCr4D,KAAKgiE,SAAWh6D,EAAIi6D,sBAAsB3L,aAE1Ct2D,KAAK4hE,UAAY,GACjB5hE,KAAK6hE,QAAU,GACf7hE,KAAK+hE,YAAc,GACnB/hE,KAAK8hE,OAAS,GACd9hE,KAAKgiE,SAAW,IAExB,EACA/5D,WAAW,EACXlG,MAAM,KC5CoT,M,uBCA9F,GAAe,KCOnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCFhC,IACAxD,MAAAA,CAAAA,QAAAA,UAAAA,WAAAA,QACAgG,WAAAA,CAAA29D,yBAAAA,IACAjjE,QAAAA,CACA4S,OACA,sBACA,IC1B4R,MCOxR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAtN,WAAAA,CAAA49D,2BAAAA,GAAAxK,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5B2R,MCOvR,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,gCAAgC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,yBAAyB,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,wBAAyBK,WAAW,4BAA4BzB,MAAM,CAAC,KAAO,mBAAmB,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IACp2B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAA49D,2BAAAA,GAAAxJ,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvC+R,MCO3R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBsDjB,GAAM,W,IAAC,O,EAAsB,QAAUE,G,OAAY,OAAY2xB,C,MAAc,CAAgB,kBAAkC,QAAU3xB,EAAImyB,QAAS,QAAYnyB,cAAe,gBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,iBAAE,EAACpJ,mBAAoB,YAAClG,EAAI,WAAS,CAACmG,G,YAAyF,OAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,MAAU,uDAACmG,E,OAAc0N,GAAM,C,IAAE,Y,GAAqBpW,UAAM,K,UAAqB,a,MAAC,C,KAAyB,UAAoC,IAAIwC,MAAS,SAAC,GAACC,OAAW,EAAC,qBAAkBvC,IAAyC,WAAI,YAAE,iBAAyB,UAAS,sB,GAAQ,C,IAAE,uB,GAAmB8wD,UAAM56C,KAAiD,I,MAAuE,UAAS,CAAE,MAAC,4CAAC3N,CAAAA,EAAAA,GAAAA,IAAYvI,EAAM,GAAE,gC,MAAK,CAAYwI,OAAG,I,YAAgB,O,IAAC,Y,GAA4B1I,UAAM,G,UAAuB,GAAO,IAAMokE,EAAAA,GAAAA,CAA6C,OAAG1hE,MAASrC,GAA8D,SAAQ,MAAK,8CAAmK,2DAAG,IAAM,UAAiB,UAAS,sI,GAAQ,C,IAAE,e,GAAiC,UAAO+V,KAAc,IAAO,MAAK,GAAI,qBAAG,mBAE7sD9V,IAEJ,MAASa,I,QCAH,SAAUkjE,GAA8B7I,GAC1C,MAA2B,WAApBA,EAAGh/C,YACd,CAEA,QACIjc,MAAO,CACHyoB,MAAOhR,MACPhX,QAAS,CACLf,KAAMiD,QACNxC,SAAS,GAEbyzC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,qBAGjBK,OACI,MAAO,CACHsxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GAEtB,EACA5tB,SAAU,CACNmtB,gBACI,OAAK7vB,KAAKgnB,MACHhnB,KAAKgnB,MAAMjP,OAAOsqD,IAA+Bv0D,KAAK0rD,IAClD,CACH79C,GAAI69C,EAAGryD,GACPyU,KAAM49C,EAAGx4D,KACTohE,wBAAyB5I,EAAGyI,sBACtBzI,EAAGyI,sBAAsBtjE,MACb,oBAAZ66D,EAAGv7D,KACTqkE,gBAAiB9I,EAAGyI,sBACdzI,EAAGyI,sBAAsB3J,WAAW5gD,UAAU,EAAE,KAAO,kBAC3C,oBAAZ8hD,EAAGv7D,KACH,WACA,kBACNskE,aAAc/I,EAAGyI,sBACXzI,EAAGyI,sBAAsB5J,aAAa3gD,UAAU,EAAG,IACvC,oBAAZ8hD,EAAGv7D,KACH,WACA,kBACN87D,UAAWP,MAlBK,EAqB5B,EACAn6D,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,sCACd7Q,MAAO,kBACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,mCACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAM,UACNV,MAAO,UACP+wB,UAAU,GAGtB,GAEJlxB,QAAS,CACL+6D,mBAAmB5lD,GAEf,MAAMy/C,EAA6C,CAC/CP,aAAeF,GAAAA,2BACf3pD,SAAW,KACX0Q,eAAiB/F,EAAKuH,IAG1B,OADA03C,KAAiCE,uBAAuBM,GACjD7zD,KAAKiS,QAAQnU,KAAK,GAAGkC,KAAKmyC,eAAe/9B,EAAKuH,KACzD,ICtF8T,M,uBCA9F,GAAe,KCQnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCPhC,IAAerX,EAAAA,EAAAA,iBAAgB,CAC3BiC,QACI,OAAOvG,KAAKiQ,GAAG,wBACnB,EACA1R,MAAO,CACHmW,cAAesB,OAEnBzR,WAAY,CACRi+D,yBAAwB,GACxBC,0BAAyB,GACzB/H,yBAAwB,GACxBE,2BAA0B,GAC1BC,iCAAgC,GAChC6H,8BAA6BA,IAEjC3jE,OACI,MAAO,CACHyiE,sBAAsB,EACtBC,qBAAqB,EACrBC,yBAAyB,EACzB9L,4BAA4B,EAC5B+M,sBAAsB,EACtB5H,eAAgB,KAExB,EACAr4D,SAAU,CACNkgE,sBACI,OAAO5iE,KAAK0U,cAAcqD,OAAOsqD,GACrC,MACG75B,EAAAA,GAAAA,IAAUrc,KAEjBltB,QAAS,CACL0yC,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,oBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,yBAC1B,EACAslD,yBACIv1D,KAAKgE,MAAM,yBACf,EACAoxD,cAAc2D,GACV/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK0hE,yBAA0B,CACnC,EACAjG,sBAAsB1C,GAClB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAKyhE,qBAAsB,CAC/B,EACAnG,iBAAiBlnD,GAEd,MAAMmnD,EAA6C,CAC9CjI,aAAeF,GAAAA,eACf3pD,SAAW,KACX0Q,eAAiB,MAErBk5C,KAAiCE,uBAAuBgI,GACzD,MAAMpoB,EAAM,uBAAuB/+B,EAAK+F,iBACxCna,KAAKiS,QAAQnU,KAAKq1C,EACrB,EACA0c,mBAAmBkJ,GACf/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK2iE,sBAAuB,CAChC,EACAxH,oBAAoBpC,GAChB/4D,KAAK+6D,eAAiBhC,EACtB/4D,KAAK41D,4BAA6B,CACtC,KClFoS,M,uBCAxF,GAAe,KCO/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBmN,W,MAAW,K,IAAoD,MAAC,G,SAAC,KAAU13D,CAAAA,EAAIq3D,eAAAA,C,MAAuB,C,MAAC9uD,EAAAA,GAAW,0B,QAAc,mC,YAA0B/F,EAAAA,GAAAA,CAAAA,C,yCAAiCD,EAAAA,sCAAkB,C,YAAQ,EAAQ,wB,YAA0B,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAI,OAAO,kBAAM,UAAM2kE,KAA+C,GAACA,CAAAA,EAAAA,EAAAA,EAAAA,CAAsB,OAACpjE,KAAW,KAAuB,mDAAC,KAAa,OAAO,0BAAsC,qBAAQ,EAAI,kBAACqjE,CAAqB,EAA2C,kCAAsCp8D,E,OAAc0N,M,GAAQ,+BAAoB,C,MAAC3N,C,MAAwB,EAAC,qB,QAAe,QAAS,wB,YAAO,O,6BAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAgO,yBAAC,I,CAA+D,oGAAC,IAAIA,MAAG,YAAsQxC,OAAM,wBAAC,IAAoD,CAACwC,EAAG,QAAkB,IAAK,MAAS,wBAAyB,GAAG,EAAEA,GAAAA,GAAG,SAA0B,QAAmB,GAAEtC,EAAIG,GAAGH,wBAAc,OAAiC,oBAAjC,EAA0B,KAAyB,EAAC8d,GAAAA,EAAS,CAAqCtb,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI2xD,sBAAmBz7C,EAAK,IAAI,CAAC5T,EAAG,QAAkB,IAAK,MAAS,6BAA6B,GAAGA,EAAG,SAAqB,MAAK,MAAmB,EAAEtC,GAAIG,EAAGH,GAAI0S,8BAA6B,IAAG1S,GAAI4Q,EAAK,KAAI,EAAI,gEAAQ,GAAK,4CAAkD,2JAAC,GAAO5Q,CAAmB,kBAAI,8BAAC,IAA4C,mHAACkB,IAA6BkB,MAAQ,K,EAAiBpC,oCAAwB,C,MAAC,CAACuB,KAAAA,EAAW,gBAAqB,GAAG,CAAgCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,mBAAC,SAAS,SAAKu3D,GAAuB,oBAACh2D,EAAOH,WAAW+8D,sB,EAA4Cj+D,8BAAyB,C,MAAC,CAACuB,QAAU,EAAC,gBAAsB,GAAG,CAAmCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,oBAAC,SAAS,SAAKu3D,GAAuB,qBAACh2D,EAAOH,WAAWg9D,uB,EAA+Cl+D,iCAA4B,C,MAAC,CAACuB,QAAU,EAAC,gBAAyB,GAAG,CAAyCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,uBAAC,SAAS,SAAKu3D,GAAuB,wBAACh2D,EAAOH,WAAWw2D,0B,EAAqD13D,uCAAkC,C,MAAC,CAACuB,QAAU,EAAC,gBAA+B,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,2BACthH,qBACGnB,EAAAA,2BAAoB,CAExB,E,6GCJsFN,GAAM,W,IAAC,O,EAAsB,QAAUE,G,OAAY,OAAY2xB,C,MAAc,CAAgB,kBAAkC,QAAU3xB,EAAImyB,QAAS,QAAYnyB,cAAe,gBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,iBAAE,EAACpJ,mBAAoB,YAAClG,EAAI,WAAS,CAACmG,G,YAA0F,OAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,MAAU,wDAACmG,E,OAAc0N,GAAM,C,IAAE,Y,GAA0BpW,UAAM,K,IAAsC,MAAM,CAACK,EAAG,cAAW+V,CAAc,OAAG,gCAA2B,UAAS,gB,GAAQ,C,IAAE,mB,GAAmB46C,UAAM56C,KAA2C,I,MAAmE,UAAS,CAAE,MAAC,sCAAC3N,CAAAA,EAAAA,GAAAA,IAAYvI,EAAM,GAAE,4B,MAAK,CAAYwI,OAAG,I,YAAgB,O,IAAC,Y,GAA4B1I,UAAM,G,UAAuB,GAAO,IAAM+kE,EAAAA,GAAAA,CAAuC,OAAGriE,MAASrC,GAAwD,SAAQ,MAAK,wCAA8J,qDAAG,IAAM,UAAoB,UAAS,iI,GAAQ,C,IAAE,kBAAgD,kBAAG,IAAsB,MAAC,GAAS,+B,GAAQ,C,IAAE,e,GAAiC,UAAO+V,KAAc,IAAO,MAAK,GAAI,qBAAG,mBAEvrD9V,IAEJ,MAASa,I,QCHH,SAAU6jE,GAA+BxJ,GAC3C,MAA2B,YAApBA,EAAGh/C,YACd,CAEA,QACIjc,MAAO,CACHyoB,MAAOhR,MACPhX,QAAS,CACLf,KAAMiD,QACNxC,SAAS,GAEbyzC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,sBAGjBK,OACI,MAAO,CACHsxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GAEtB,EACA5tB,SAAU,CACNmtB,gBACI,IAAK7vB,KAAKgnB,MAAO,MAAO,GACxB,MAAMi8C,EAAkBjjE,KAAKgnB,MAAMjP,OAAOirD,IAAgCl1D,KAAK0rD,IACpE,CACH79C,GAAI69C,EAAGryD,GACPyU,KAAM49C,EAAGx4D,KACT+hE,kBAAmBvJ,EAAG0J,uBAChB1J,EAAG0J,uBAAuBvkE,MACd,oBAAZ66D,EAAGv7D,KACTklE,YAAa3J,EAAG0J,uBACV1J,EAAG0J,uBAAuB5K,YAAc,kBAC5B,oBAAZkB,EAAGv7D,KACH,WACA,kBACNi4D,WAAYsD,EAAG0J,uBACT1J,EAAG0J,uBAAuB5M,WACd,oBAAZkD,EAAGv7D,KACH,WACA,kBACN87D,UAAWP,MAInB,OAAOyJ,CACX,EACA5jE,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,yCACd7Q,MAAO,cACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,wCACd7Q,MAAO,aACP+wB,UAAU,GAEd,CACIrwB,KAAM,UACNV,MAAO,UACP+wB,UAAU,GAGtB,ICzE+T,M,uBCA9F,GAAe,KCQpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvB5BhxB,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,iCAAiC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,2BAA2Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,4BAA4B,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,yBAA0BK,WAAW,6BAA6BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,WAAY,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAClwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAkD,kCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACvuB,UAGD,E,SCJ4I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,mC,QAAqH,W,YAAkB,EAAQ,GAAEA,CAAAA,C,IAAiC,W,GAAE,WAAgD,yHAAC4S,MAAM,CAAM,eAAK,KAAS,qCAAelB,CAAAA,EAAM,uC,EAAQ,OAAE,G,KAAgC,U,aAC3gB1R,O,EACN43D,M,UAGIC,CAAAA,EAAK,GAAE73D,UAAI83D,KAAe,C,KAC1BE,CACJ,YACH,0CAAC,uBAAe,CAAC,WAAcv3D,EAAK,YAAC,MAAUT,EAAIc,gBAAQ,WAAQ4S,EAAAA,aAAY,OAAU,EAAM,QAAC,QAACxS,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAWE,CAAkC,EAAsB,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACqB,SAAM,4BAACH,MAAOlB,EAAI8C,UAAMV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAgBxC,SAAM,YAAC,sBAAc,CAAgC,EAAwD,WAAW,yBAAgC,QAACuB,MAAM,CAACH,YAAW+2D,gCAAa71D,MAAQ,EAAC,4C,MAAoB61D,EAAAA,iBAAsD,SAAC,IAAyB,OAAI31D,MAAG,cAAgBxC,SAAM,YAAC,cAAc,8BAA8C,EAAwE,WAAWo4D,iBAAsG,OAAYC,C,MAAqB,CAAc,0DAAG,cAAC,oDAAC,2BAA0BD,OAAAA,WAAgD,wDAAC72D,MAAM,uBAACH,SAAW42D,I,GAA0C93D,CAA8D,eAAC,kDAA6B,OAAIsC,MAAG,kBAA+BxC,SAAM,YAAC,kBAAe,sBAAsC,OAAC,CAAC,EAAqB,gCAAQoB,EAAAA,8BAAsB,C,MAACkB,C,MAA6Bg2D,EAAAA,GAAU,wCAAI,MAAC,UAAwB,OAAI,MAAG,aACxlE,qBACGh4D,EAAAA,WAAoB,CAExB,E,sCCZwFN,GAAM,W,IAAC,O,EAAkB,EAAO,MAAKolE,G,OAAuB,OAAkB,C,MAAC,CAAoB,MAAS,EAACllE,MAAY,+BAA0B,YAAY2V,OAAM,aAAYzU,OAAqE,kBAAqB,eAAe,EAAE,OAAC,cAAmB,KAAQlB,EAAIsoB,WAAK,iDAAC,kBAAgB,GAAG,kBAAG,gBAAC,GAAC,MAAQ,Q,gBAA4BxiB,I,GAA6C,C,MAA0C0yD,SAAO7mD,GAAO,qCAAC,E,qBAAwD,sBAAE,EAACpJ,sBAAoB,YAAClG,EAAI,QAAgBmG,G,YAAqG,O,wCAAuB,GAAQ,QAAS,Q,MAAC,CAAkB,QAAI,UAAC,gBAAM,cAAC,MAA/B,wBAC5yB,EACGpI,OAAAA,M,QCAG,MAAM+kE,GAAkB,CAC3B,CAAEn2D,KAAM,aAAclM,KAAM,WAC5B,CAAEkM,KAAM,aAAclM,KAAM,WAC5B,CAAEkM,KAAM,iBAAkBlM,KAAM,eAChC,CAAEkM,KAAM,eAAgBlM,KAAM,UAC9B,CAAEkM,KAAM,gBAAiBlM,KAAM,WAC/B,CAAEkM,KAAM,cAAelM,KAAM,YAC7B,CAAEkM,KAAM,cAAelM,KAAM,YAC7B,CAAEkM,KAAM,cAAelM,KAAM,YAC7B,CAAEkM,KAAM,YAAalM,KAAM,UAC3B,CAAEkM,KAAM,eAAgBlM,KAAM,aAC9B,CAAEkM,KAAM,aAAclM,KAAM,WAC5B,CAAEkM,KAAM,iBAAkBlM,KAAM,WAGpC,QACIzC,MAAO,CAAC,QAAS,QAAS,SAC1BmE,SAAU,CACN0gE,yBACI,OAAKpjE,KAAK02D,OACH,CAAC12D,KAAK02D,QACR59C,OAAO9Y,KAAKi3D,WAAWl/C,QAAO0Y,GAAKA,EAAEzvB,KAAKinC,WAAWjoC,KAAK02D,WAC1D3+C,QAAO,CAAC3Y,EAAOmZ,EAAOC,IACZA,EAAKvK,WAAUN,GAAKA,EAAET,MAAQ9N,EAAM8N,SAAUqL,IAJpCvY,KAAKi3D,UAMlC,GAEJl4D,OACI,MAAO,CACHk4D,WAAY,IAAIoM,IAChBvM,SAAS,EACT93D,SAAS,EACT03D,OAAQ,GAEhB,GCpCmU,M,uBCA9F,GAAe,KCOpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCnBhC,IACInyD,WAAY,CAAE++D,0BAAyBA,IACvC/kE,MAAO,CAAC,UAAW,QAAS,YAC5BQ,OACI,MAAO,CACHJ,OAAO,EACP+F,QAASC,EAAAA,EAAAA,MAAaC,SACtB5D,KAAM,GACN+kC,UAAW,CAAE11B,KAAQA,GAAKrQ,KAAKiQ,GAAG,4CAClCsnD,qBAAqB,EACrBpB,YAAa,GACbqB,iBAAkB,CAAEnnD,KAAQA,GAAKrQ,KAAKiQ,GAAG,mDACzCqmD,WAAY,GACZF,qBAAqB,EACrBJ,gBAAiB,GACjBK,qBAAsB,CAAEhmD,KAAQA,GAAKrQ,KAAKiQ,GAAG,uDAErD,EACAnO,MAAO,CACH1C,MAAO,CACH4C,QAAQgG,GACCA,IACLhI,KAAKgB,KAAOgH,EAAIhH,KAChBhB,KAAKu3D,oBAAsBvvD,EAAIuvD,oBAC3BvvD,EAAIk7D,wBACJljE,KAAKm2D,YAAcnuD,EAAIk7D,uBAAuB5K,WAC9Ct4D,KAAKg2D,gBAAkBhuD,EAAIk7D,uBAAuBj6D,MAClDjJ,KAAKs2D,WAAatuD,EAAIk7D,uBAAuB5M,aAE7Ct2D,KAAKm2D,YAAc,GACnBn2D,KAAKg2D,gBAAkB,GACvBh2D,KAAKs2D,WAAa,IAE1B,EACAruD,WAAW,EACXlG,MAAM,KCtCqT,M,uBCA9F,GAAe,KCOpP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCpBhC,IACIxD,MAAO,CAAC,QAAS,UAAW,WAAY,QACxCgG,WAAY,CAAEg/D,0BAAyBA,IACvCtkE,QAAS,CACL4S,OACI7R,KAAKgE,MAAM,SAAS,EACxB,ICRiU,MCOrU,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCOhC,IACAO,WAAAA,CAAAi/D,4BAAAA,GAAA7L,uBAAAA,IACAp5D,MAAAA,CACAa,MAAAA,UC5BiS,MCO7R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5BD,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,iCAAiC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,0BAA0B,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,yBAA0BK,WAAW,6BAA6BzB,MAAM,CAAC,KAAO,yBAAyB,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IAC92B,EACIpR,GAAkB,GC0BtB,IACAiG,WAAAA,CAAAi/D,4BAAAA,GAAA7K,oBAAAA,IACAp6D,MAAAA,CACAa,MAAAA,QACAy2D,KAAAA,OACAzuD,SAAAA,QAEAnI,QAAAA,CACA,8BACA,IACA,uBACA,ICvCgS,MCO5R,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCiGhC,IACAsH,QACA,wCACA,EACAhI,MAAAA,CACAmW,cAAAA,OAEA3V,OACA,OACAg8D,eAAAA,KACAqB,sBAAAA,EACAxG,4BAAAA,EACA6N,kBAAAA,EACAZ,mBAAAA,EACA1G,mBAAAA,EAEA,EACA53D,WAAAA,CACAm/D,0BAAAA,GACAhJ,yBAAAA,GACAE,2BAAAA,GACA+I,+BAAAA,GACAC,gCAAAA,GACA/I,iCAAAA,IAEAn4D,SAAAA,CACAogE,uBACA,oCACA,MACA,cAEA7jE,QAAAA,CACA0yC,mBAAAA,GACA,IACA,uCACA,8CACA,EACA4jB,yBACA,oCACA,EACAkG,sBAAAA,GACA,sBACA,wBACA,EACArG,cAAAA,GACA,sBACA,4BACA,EACA+F,oBAAAA,GACA,sBACA,kCACA,EACAtL,mBAAAA,GACA,sBACA,yBACA,IC1KoQ,M,uBCA/C,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBiO,W,IAAgBnpD,EAAG,K,EAAW,QAAW,GAAkC,EAAC,kB,SAAC,KAAUxI,CAAAA,EAAIq3D,eAAAA,C,MAAuB,C,MAAC9uD,EAAAA,GAAW,4B,QAAc,qC,YAA0B/F,EAAAA,GAAAA,CAAAA,C,yCAAiCD,EAAAA,+BAAkB,C,YAAQ,EAAQ,wB,YAA0B,O,IAAGC,Y,GAAkB1C,UAAM,G,IAAW,MAAM,CAACK,EAAG,IAAM,EAAGH,GAAG,CAAuC,mBAAI,OAAO,kBAAM,UAAMiW,KAAwC,GAACA,CAAAA,EAAAA,EAAAA,EAAWyU,CAAI,OAACnpB,KAAW,KAAgB,mDAAC,KAAa,OAAO,mBAA+B,qBAAQ,EAAI,WAACokE,CAAkB,EAA2C,2BAAsCn9D,E,OAAc0N,M,GAAQ,wBAAoB,C,MAAC3N,C,MAAwB,EAAC,kB,QAAe,QAAS,wB,YAAO,O,6BAA4BzI,K,UAAkB,GAAG,KAAM,C,YAAoC,OAAG,IAAC,YAAawC,GAAG,UAAUA,GAAqB,IAA0B,MAAOtC,CAAAA,EAAIk3D,EAAAA,EAAAA,EAAAA,GAAa,CAAM,OAAC,UAAkL,mCAAC,IAAyB,U,CAAoC,gBAAC,IAAI50D,MAAG,YAAgO,yBAAC,I,CAA+D,oGAAC,IAAIA,MAAG,YAAyQ,+BAAC,I,CAA0D,kJAAC,IAAIA,MAAG,YAA0O,iCAAC,I,CAA4D,4LAAC,IAAIA,MAAG,YAA8K,4BAAQ,IAA8C,2JAAC,IAA6B,kBAAI,8BAAC,IAA4C,mHAACpB,IAAuBkB,MAAQ,K,EAAiBpC,2BAAkB,C,MAAC,CAACuB,QAAU,EAAC,gBAAe,GAAG,CAAqCzB,QAAM,0BAA0B,MAAC,CAAG,MAAC,aAAC,SAAS,SAAKu3D,GAAuB,cAACh2D,EAAOH,WAAW0kE,gB,EAAoC5lE,mCAAiB,C,MAAC,CAACuB,KAAAA,EAAW,gBAAc,GAAG,CAA+BzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,YAAC,SAAS,SAAKu3D,GAAuB,aAACh2D,EAAOH,WAAW2kE,e,EAAwC7lE,6BAAqB,C,MAAC,CAACuB,QAAU,EAAC,gBAAkB,GAAG,CAAqCzB,QAAM,0BAA6B,MAAC,CAAG,MAAC,gBAAC,SAAS,SAAKu3D,GAAuB,iBAACh2D,EAAOH,WAAW4kE,mB,EAA8C9lE,mCAA2B,C,MAAC,CAACuB,QAAU,EAAC,gBAAwB,GAAG,CAAkB,QAAC,0BAA+B,OAAI,MAAM,EAAC,oBACx7G,qBACGnB,EAAAA,oBAAoB,CAExB,E,sGCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,gCAAgC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,6BAA6Bxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,yBAAyB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,2BAA4BK,WAAW,+BAA+BzB,MAAM,CAAC,MAAQ,IAAKG,EAAM6d,KAAM,aAAc,MAAQvd,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IACtwB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAiD,iCAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQH,CAAmB,kBAAC,WAAIlP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACtuB,UAGD,E,SCJ8I,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAU,C,MAAI,C,MAAkB,EAAI,GAAG,qC,QAA+G,W,YAA0C,EAAQ,GAAC,E,IAAQ,W,GAAE,WAA2C,mHAAC4S,MAAM,CAAM,qCAAK,OAAS,WAAelB,CAAAA,EAAM,oC,EAAQ,OAAE,G,KAAgC,U,GAAoB,UAASA,O,EAAO,M,IAAuD,MAAG,sCAAI,OAAU,EAAM,QAAC,QAACxQ,QAAWT,EAAM,QAAC2B,MAAS,IAA6B,IAAEb,MAAAA,GAAkB,OAAIe,MAAG,QAAgBxC,SAAM,YAAC,QAAag7D,CAAmB,EAA6C,WAAW,U,CAAkB,OAAc,CAAQ,MAAC,CAACz5D,MAAM,sBAACH,SAAW4B,EAAK,0BAACV,SAAS,G,UAAyBsoB,GAAG,MAAC,cAAkB,OAAIpoB,MAAG,OAAcxC,SAAM,YAAC,OAAYiS,CAA0B,EAA4D,qBAAsB1P,EAAG,KAAS,C,MAAI,C,MAAkB,EAAI,0B,SAAmB,4C,YAAa,O,IAACkG,S,oBAAuC,CAAC,OAAS,C,MAAI,C,OAAEzI,I,YAAiBwC,EAAG,K,IAAuBxC,Y,aAAc,G,YAA4E,wBAAG,OAAO,KAAQE,GAA2D,WAAc,4CAAO,MAAiCoC,CAAAA,EAAQ,OAAC,GAAUsoB,GAAK,+C,EAA4B,OAAC,KAAiC,OAAIpoB,MAAG,sBAAgBxC,SAAM,YAAC,sBAAoBimE,CAAY,EAAc,WAAW,yBAAqD1kE,EAAK,KAAC,C,MAAM,CAAwBe,MAAQ,CAAC,SAAUsoB,Y,SAAUs7C,GAAoB,MAAC,sDAA8B,OAAI1jE,MAAG,mBAAgBxC,SAAM,YAAC,mBAAoBimE,CAAY,EAAc,WAAW,sBAAgD1kE,EAAK,KAAC,C,MAAM,CAAmBe,MAAQ,CAAC,SAAUsoB,Y,SAAUu7C,GAAe,MAAC,iDAAyB,OAAI3jE,MAAG,cAAgBxC,SAAM,YAAC,cAAmB,CAAa,EAAc,WAAW,iBAA6CuB,EAAK,KAAC,C,MAAM,CAAgBe,MAAQ,CAAC,SAAUsoB,Y,SAAUw7C,GAAY,MAAC,8CAAsB,OAAI5jE,MAAG,WAAgBxC,SAAM,YAAC,WAAag7D,CAAmB,EAAkB,WAAW,cAA0D,QAACz5D,MAAM,CAACH,MAAOlB,CAAG,EAACmmE,OAAS,YAAC/jE,KAAQ,W,SAAqB+jE,GAAY,MAAC,8CAAsB,OAAI,MAAG,WAC1/E,qBACG/lE,EAAAA,SAAkB,CAEtB,E,oCCAA,IACIC,MAAO,CACHS,QAASkC,QACT9B,MAAOsC,OACP0F,SAAU1F,QAEd+C,MAAM4U,GACF,MAAM1a,GAAQkG,EAAAA,EAAAA,MAAI,GACZ7D,GAAO6D,EAAAA,EAAAA,KAAI,IACX0yD,GAAsB1yD,EAAAA,EAAAA,MAAI,GAC1Bq/D,GAAmBr/D,EAAAA,EAAAA,KAAI,IACvBs/D,GAAct/D,EAAAA,EAAAA,KAAI,IAClBu/D,GAAWv/D,EAAAA,EAAAA,KAAI,IACfw/D,GAAWx/D,EAAAA,EAAAA,KAAI,IACfH,GAAUG,EAAAA,EAAAA,KAAIF,EAAAA,EAAAA,MAAaC,WAEjC9C,EAAAA,EAAAA,OACIuX,EAAEja,OACDiR,IACG,GAAKA,EAOL,OANArP,EAAK5B,MAAQiR,EAAErP,KACfu2D,EAAoBn4D,MAAQiR,EAAEknD,sBAAuB,EACrD2M,EAAiB9kE,MAAQiR,EAAEi0D,2BAA2BjM,cAAgB,GACtE8L,EAAY/kE,MAAQiR,EAAEi0D,2BAA2B/L,WAAa,GAC9D6L,EAAShlE,MAAQiR,EAAEi0D,2BAA2BhM,YAAc,GAC5D+L,EAASjlE,MAAQiR,EAAEi0D,2BAA2Br7D,OAAS,IAChD,CAAI,GAEf,CAAEhB,WAAW,EAAMlG,MAAM,IAG7B,MAAMgG,GAAWrF,EAAAA,EAAAA,WAAS,KAAM,CAC5BkZ,KAAM5a,EAAK5B,MACX02D,oBAAqByB,EAAoBn4D,MACzCmlE,0BAA2B,CACvBxO,MAAOsO,EAASjlE,MAChBw4D,aAAcsM,EAAiB9kE,MAC/B62D,UAAWkO,EAAY/kE,MACvBw3D,WAAYwN,EAAShlE,WAI7B,MAAO,CACHT,QACAqC,OACAu2D,sBACA2M,mBACAC,cACAC,WACAC,WACA3/D,UACAqD,WAER,GCzDqU,M,uBCA9F,GAAe,KCOtP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCpBhC,IACIxJ,MAAO,CACHa,MAAO8B,QACPlC,QAASkC,QACTkG,SAAU1F,OACVm0D,KAAMn0D,QAEV6C,WAAY,CAAEigE,4BAA2BA,IACzC//D,MAAMqmB,GAAG,KAAEka,IACP,MAAMnzB,EAAO,IAAMmzB,EAAK,SAAS,GACjC,MAAO,CAAEnzB,OACb,GCbuU,MCOvU,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCfhC,IACItN,WAAY,CAAEkgE,8BAA6B,GAAE9M,uBAAsBA,IACnEp5D,MAAO,CACHa,MAAO8B,UCN2T,MCOtU,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B/B,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,gCAAgC,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,+BAA+B,KAAOhd,EAAI23D,KAAK,SAAW,IAAM33D,EAAIkJ,UAAY,CAAC,EAAIwU,MAAM,EAAMk6C,qBAAqB,IAAQp1D,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAEnI,EAAK,MAAEiR,IAAS,MAAO,CAAClP,EAAG,sBAAsB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,8BAA+BK,WAAW,kCAAkCzB,MAAM,CAAC,KAAO,4BAA4B,MAAQ,IAAKE,EAAI23D,QAAS13D,GAAO,MAAQM,EAAM,MAAQmI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQ,OAAO3R,EAAIw6D,aAAa7oD,EAAQH,EAAM,KAAK,IAAI,MAAK,IAC73B,EACIpR,GAAkB,GCCtB,IACIiG,WAAY,CAAEkgE,8BAA6B,GAAE9L,oBAAmBA,IAChEp6D,MAAO,CACHa,MAAO8B,QACP20D,KAAMn0D,OACN0F,SAAU1F,QAEd+C,MAAMqmB,GAAG,KAAEka,IACP,MAAM0zB,EAAevzD,MAAO0K,EAAaH,WAC/BA,IACNs1B,EAAK,UAAWn1B,EAAO,EAE3B,MAAO,CAAE6oD,eACb,GChB0U,MCO1U,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBsD16D,GAAM,W,IAAC,O,EAAsB,QAAUE,G,OAAY,OAAY2xB,C,MAAc,CAAgB,kBAAkC,QAAU3xB,EAAImyB,QAAS,QAAYnyB,cAAe,gBAAG,iBAAC,eAAC,qB,YAA2CoyB,EAAAA,Y,GAAqB,C,sBAA0DzgB,SAAM,GAAC,gBAAC,E,wBAAoD,YAAC,gBAAC,E,gBAA+CA,SAAM,GAAC,YAAC,E,iBAAiD,SAAO,GAAC,YAAC,E,kBAAmDA,SAAM,iBAAE,EAACpJ,mBAAoB,YAAClG,EAAI,WAAS,CAACmG,G,YAA4F,OAACoK,IAAK,UAAM,GAAC,WAACvQ,MAAK,MAAU,0DAACmG,E,OAAc0N,GAAM,C,IAAE,Y,GAAqBpW,UAAM,K,UAAqB,a,MAAC,C,KAAyB,UAAoC,IAAIwC,MAAS,SAAC,GAACC,OAAW,EAAC,qBAAkBvC,IAAyC,WAAI,YAAE,iBAAiB,UAAS,sB,GAAQ,C,IAAE,e,GAAmB8wD,UAAM56C,KAA2C,I,MAA+D,UAAS,CAAE,MAAC,sCAAC3N,CAAAA,EAAAA,GAAAA,IAAYvI,EAAM,GAAE,wB,MAAK,CAAYwI,OAAG,I,YAAgB,O,IAAC,Y,GAA4B1I,UAAM,G,UAAuB,GAAO,IAAM+kE,EAAAA,GAAAA,CAAuC,OAAGriE,MAASrC,GAAwD,SAAQ,MAAK,wCAAgK,qDAAG,IAAM,UAAiB,UAAS,mI,GAAQ,C,IAAE,e,GAAiC,UAAO+V,KAAc,IAAO,MAAK,GAAI,qBAAG,mBAE3qD9V,IAEJ,MAASa,I,QCGH,SAAUulE,GAAiClL,GAC7C,OAAOA,EAAGh/C,eAAiBmqD,GAAAA,SAC/B,CAEA,QACIpmE,MAAO,CACHyoB,MAAOhR,MACPhX,QAAS,CACLf,KAAMiD,QACNxC,SAAS,GAEbyzC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,wBAGjB+F,MAAM4U,GACF,MAAMgX,GAAWxrB,EAAAA,EAAAA,KAAI,QACfirB,GAAajrB,EAAAA,EAAAA,MAAI,GACjByrB,GAAezrB,EAAAA,EAAAA,KAAI,IAEnBgrB,GAAgBntB,EAAAA,EAAAA,WAAS,IACtB2W,EAAE2N,MACA3N,EAAE2N,MAAMjP,OAAO2sD,IAAkC52D,KAAK0rD,IAAwB,CACjF79C,GAAI69C,EAAGryD,GACPyU,KAAM49C,EAAGx4D,KACT+hE,kBAAmBvJ,EAAG8K,0BAChB9K,EAAG8K,0BAA0B3lE,MACjB,oBAAZ66D,EAAGv7D,KACT2mE,QAASpL,EAAG8K,0BACN9K,EAAG8K,0BAA0BjM,cAAgB,kBACjC,oBAAZmB,EAAGv7D,KACH,WACA,kBACN4mE,YAAarL,EAAG8K,0BACV9K,EAAG8K,0BAA0B/L,WAAa,kBAC9B,oBAAZiB,EAAGv7D,KACH,WACA,kBACN87D,UAAWP,MAjBM,KAqBzB,MAAO,CAAEnpC,WAAUP,aAAYQ,eAAcT,gBACjD,EACAntB,SAAU,CACNrD,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,uCACd7Q,MAAO,UACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,2CACd7Q,MAAO,cACP+wB,UAAU,GAEd,CACIrwB,KAAM,UACNV,MAAO,UACP+wB,UAAU,GAGtB,GAEJlxB,QAAS,CACL+6D,mBAAmB5lD,GACf,MAAMy/C,EAA6C,CAC/CP,aAAcF,GAAAA,8BACd3pD,SAAU,KACV0Q,eAAgB/F,EAAKuH,IAGzB,OADA03C,KAAiCE,uBAAuBM,GACjD7zD,KAAKiS,QAAQnU,KAAK,GAAGkC,KAAKmyC,eAAe/9B,EAAKuH,KACzD,ICvF2T,M,sBCA9F,GAAe,KCQhP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCNhC,IAAerX,EAAAA,EAAAA,iBAAgB,CAC3BiC,QACI,OAAOvG,KAAKiQ,GAAG,2BACnB,EACA1R,MAAO,CACHmW,cAAesB,OAEnBzR,WAAY,CACRugE,sBAAqB,GACrBC,6BAA4B,GAC5BC,iCAAgC,GAChCtK,yBAAwB,GACxBE,2BAA0B,GAC1BC,iCAAgCA,IAEpCp2D,MAAM4U,GAAG,KAAE2rB,IACP,MAAM7wB,GAAatP,EAAAA,EAAAA,MAAI,GACjBi/D,GAAYj/D,EAAAA,EAAAA,MAAI,GAChBk/D,GAAgBl/D,EAAAA,EAAAA,MAAI,GACpBm/D,GAAsBn/D,EAAAA,EAAAA,MAAI,GAC1BogE,GAAapgE,EAAAA,EAAAA,MAAI,GACjBk2D,GAAiBl2D,EAAAA,EAAAA,KAAiC,MAElDg/D,GAAoBnhE,EAAAA,EAAAA,WAAS,IACxB2W,EAAE3E,cAAcqD,OAAO2sD,MAG5BnP,EAAyB,KAC3BvwB,EAAK,yBAAyB,EAG5BowB,EAAiB2D,IACnBgC,EAAe37D,MAAQ25D,EACvBgL,EAAc3kE,OAAQ,CAAI,EAExBq8D,EAAyB1C,IAC3BgC,EAAe37D,MAAQ25D,EACvB+K,EAAU1kE,OAAQ,CAAI,EAEpBywD,EAAsBkJ,IACxBgC,EAAe37D,MAAQ25D,EACvBkM,EAAW7lE,OAAQ,CAAI,EAErB+7D,EAAuBpC,IACzBgC,EAAe37D,MAAQ25D,EACvBiL,EAAoB5kE,OAAQ,CAAI,EAGpC,MAAO,CACH+U,aACA2vD,YACAC,gBACAC,sBACAiB,aACAlK,iBACA8I,oBACAtO,yBACAH,gBACAqG,wBACA5L,qBACAsL,sBAER,EACAz4D,SAAU,KACH8lC,EAAAA,GAAAA,IAAUrc,KAEjBltB,QAAS,CACL0yC,mBAAmB8E,GACXA,IACJz2C,KAAKiS,QAAQnU,KAAK,uBAClBkC,KAAK02C,OAAS12C,KAAKiQ,GAAG,4BAC1B,EACAqrD,iBAAiBlnD,GACb,MAAMmnD,EAA4C,CAC9CjI,aAAcF,GAAAA,kBACd3pD,SAAU,KACV0Q,eAAgB,MAEpBk5C,KAAiCE,uBAAuBgI,GACxD,MAAMpoB,EAAM,uBAAuB/+B,EAAK+F,iBACxCna,KAAKiS,QAAQnU,KAAKq1C,EACtB,KClGuS,M,uBCAxF,GAAe,KCOlO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB2R,W,IAAgBzsC,EAAG,K,EAAW,QAAW,GAASjG,EAAAA,MAAY,Y,SAAOzC,GAAAA,EAAM,mB,oBAAqB,U,MAAe,8B,QAAI,6E,YAA6B,EAACknE,GAAAA,CAAAA,C,uBAAgB,WAAC,MAAM,OAAS,CAAClnE,YAAM,O,MAAC,CAAS,kBAAIE,UAAa,IAAyB4S,GAAM,CAAM,kBAAO,aAAqC,IAA4C,GAAQ5S,EAAAA,EAAIinE,CAAoB,OAAC1+D,KAAe,KAA4B,eAAS,kB,EAAO,OAAE,M,iCAA0C,C,eAAoB,QAAS,uB,MAAE/F,EAAAA,qB,YAAM,EAAO,GAAG,CAAC,C,gCAAuB,K,UAAwD,SAAC,YAAQ,EAAI,KAAIF,IAAG,YAA8B,GAAC,aAAC,IAAuD,mBAAC,OAAO,UAA4K,GAAQ,OAASqP,CAAAA,EAAM,GAAC,mB,IAAqC,UAAC,iBAAE,GAAI,CAAmP7R,MAAM,YAAC,OAAM,kBAA2C,IAA8O0C,CAAE,EAAC,kG,GAAC,C,MAAgCxC,SAAI2xD,GAAwB,+BAAC,IAAqL,2KAAI,MAAK,CAAYrvD,GAAG,uBAAc,qBAAa,GAAEtC,GAAAA,EAAa,mJAACoC,GAAQ,CAAqB4kE,MAAQ,SAAI,GAAC,8BAACzlE,IAA4B,kBAAmC,iGAACzB,IAAO,YAAqD,KAAO,cAAC,C,MAAwB,CAA2F,iBAACyI,SAAW,SAAS,GAAClG,EAAI,SAAS,CAACmG,E,WAAqB,a,GAAQkJ,mCAAAA,C,MAAS,C,QAASpP,EAAG,uC,MAAkB,wB,SAAC,iF,YAA6C,O,IAAC,U,GAAG,UAAI,Q,EAA6B,K,EAAE,O,UAAkD,iBAAiB,C,GAAC,CAAmB,eAAY,GAAG,aAAG,K,EAA2BqP,GAAAA,GAAOkB,EAAAA,EAAAA,EAAAA,C,MAAiB,CAAoC,kBAAC,cAAIvQ,KAAG,EAAUxC,QAAM,EAAC,SAAO,EAAE,cAA4C,IAAG,kBAAgD,OAArC,mBAAqC,wBAAC,IAAiC,QAAC,MAAUE,CAA2B,UAAa,GAAK,GAAC+mE,UAAW,qBAAC3kE,QAA4C,oC,MAACb,CAAuB,0BAAyCzB,GAAAA,CAAO,QAAUE,EAAI68D,wBAAgBr6D,MAAG,CAAC,QAAUxC,WAA2B,qBAACqB,EAAM,YAACH,EAA0BkB,WAAS,gBAAqC,EAAC,kC,MAACb,CAA0B,0BAA+CzB,GAAAA,CAAO,QAAUE,EAAI68D,wBAAgBr6D,MAAG,CAAC,QAAUxC,cAA2B,qBAACqB,EAAM,eAACH,EAAuCkB,WAAS,mBAAkD,EAAC,wC,MAACb,CAAuC,0BACpgH,IACGnB,QAAAA,EAAe,wB,sKCFyBkC,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAsB,oB,OAAC,OAAcxB,C,MAAQ,CAAsB,QAAQd,EAAI8oB,QAAM,QAAU,EAAC,QAAO,cAAkC,WAAU9oB,OAAa,iBAAgB4xB,EAAAA,aAAW,qBAAG,YAAC,c,GAAwC5xB,CAAuB,sBAAC,YAAC,gB,EAAgE,wBAAC,YAAC,eAAgB,C,EAAoC,gBAAC,YAAC,WAAgB,C,EAAqC,iBAAC,YAAC,WAAiB,C,EAAuC,kBAAC,YAAC,aAAkB,C,EAAuC,+BAAE,cAACuI,G,YAAsC,KAAU,E,IAAC,UAA0E,GAAC,WAACqK,MAAM,6DAAK,EAAEvQ,OAAK,GAAcmG,C,IAAc0N,eAAK,GAAE,eAAC,IAA+C,MAAG,oCAAgB,IAC53B,UAGD,E,MCAM,SAAUgxD,GAA8B5L,GAC1C,MAAmB,WAAZA,EAAGv7D,IACd,CAEA,QAAeqG,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHyoB,MAAOhR,MACPhX,QAASkC,QACTixC,YAAa,CACTl0C,KAAMmD,OACN1C,QAAS,qBAIjB+F,QACI,MAAMpF,GAAUwF,EAAAA,EAAAA,KAAI,CAChB,CAAE/E,KAAM,OAAQV,MAAO,OAAQ+wB,UAAU,GACzC,CAAErwB,KAAM,UAAWV,MAAO,UAAW+wB,UAAU,KAGnD,MAAO,CACH9wB,UACAgxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GAEtB,IC9BkU,M,uBCA9F,GAAe,KCOnP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCRhC,IAAehsB,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CACR8gE,yBAAwB,GACxBC,6BAA4B,GAC5B5K,yBAAwB,GACxBE,2BAA0B,GAC1BC,iCAAgCA,IAEpCt8D,MAAO,CAAEmW,cAAesB,OACxBvR,MAAMlG,GAAO,KAAEymC,IACX,MAAMkgC,GAAWrgE,EAAAA,EAAAA,MAAI,GACfk/D,GAAgBl/D,EAAAA,EAAAA,MAAI,GACpB+wD,GAA6B/wD,EAAAA,EAAAA,MAAI,GACjCogE,GAAapgE,EAAAA,EAAAA,MAAI,GACjB0wD,EAAyB,IAAMvwB,EAAK,0BACpC+1B,GAAiBl2D,EAAAA,EAAAA,KAA+B,MAChDsgE,GAAsBziE,EAAAA,EAAAA,WAAS,KACzBnE,EAAMmW,eAAkB,IAA6BqD,OAAOqtD,MAElEG,GAAsB/8C,EAAAA,GAAAA,IAAQ,8BAA8BrjB,eAAkB4C,SAC1EoY,EAAAA,EAAAA,KAAAA,KAAgB,8BAA+B,CACjDliB,KAAM,SACN+C,KAAM+G,EAAS6T,OAEnB25C,IACA2P,EAAS9lE,OAAQ,CACrB,IACMg2D,EAAiB2D,IACnBgC,EAAe37D,MAAQ25D,EACvBgL,EAAc3kE,OAAQ,CAAI,EAExBywD,EAAsBkJ,IACxBgC,EAAe37D,MAAQ25D,EACvBkM,EAAW7lE,OAAQ,CAAI,EAErB+7D,EAAuBpC,IACzBgC,EAAe37D,MAAQ25D,EACvBnD,EAA2Bx2D,OAAQ,CAAI,EAErCqsB,EAAcU,KACpB,MAAO,CACHg5C,sBACAD,WACAK,sBACAxB,gBACAnO,6BACAqP,aACAlK,iBACAxF,yBACAH,gBACA+F,sBACAtL,qBACApkC,cAER,ICpEwS,M,uBCAxF,GAAe,KCO/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBmH,W,IAAiC,OAA4C,EAAC,WAAChlB,EAAYvI,MAAM,Y,OAAM,EAAC,QAAe,gB,MAAI,C,MAAkB,EAAI,4B,QAAeuI,EAAW,GAACvI,6B,YAA4B,O,wCAAiB,iBAAmBA,C,YAAQuC,EAAW,GAAC,E,IAAOzC,Y,aAAc,G,UAAsC,GAAC,U,YAAQ,OAAE,OAAIE,MAAO,cAAgC,WAAI,MAAC,CAAa,KAAS,KAAU,iC,+BAAuE,M,UAA8EuI,CAAAA,EAAAA,mBAAoB,C,MAAK,CAAUC,MAAG,e,MAAe,iB,SAAS,iD,YAAWkJ,EAAAA,GAAAA,CAAAA,CAAO,IAAE,U,GAAC,UAAW,K,EAAiB,Q,EAAE,Q,EAAyB,O,IAAgB,MAAM,iBAAe,CAAS5R,GAAAA,CAAO,MAAQ,YAAY,OAAO4R,GAAO,KAAiD,eAAClP,MAAG,CAAC,MAAQ,Y,KAAqB8kE,EAAyC,eAAC,WAAyB,IAAQ,MAAK,YAAI,wCAAW,oBAAM,IAA+B,MAAC,KAAuC,KAA8B,OAAI,wBAAC,qBAAO,mBAAM,EAAO,gCAAoG/kE,EAA0BvC,OAAO,MAAmD,CAACA,EAAG,KAAI,WAAqBsC,CAAE,EAAC,KAAK,SAACC,YAAY,aAAa,CAACvC,EAAIG,GAAG,UAAW,EAAG,KAAK,CAAiD,YAAU,a,CAAMkC,EAAG,GAAC6T,iBAAKpT,EAAAA,KAAAA,CAAI,YAAW,a,CAAuGhD,EAAAA,GAAM,6B,YAASoW,a,GAAa,oBAAsB,EAACqxD,QAAAA,CAAAA,EAAgB,iBAAkB,Y,OAAC,Q,IAAsB,EAAO,M,CAAuB,QAAU,EAAC,mFAAiF,MAAC,CAAG,MAAC,UAAC,eAAQ,GAAS51D,EAAAA,mC,cAAmB61D,QAAgC,yBAAC,4FAA6B1nE,GAAAA,CAAO,MAAO,YAAG,gCAAG,M,GAA2B,OAAW4yD,CAAAA,EAAAA,EAAAA,EAAAA,C,MAAwB,CAAC,SAAkD5yD,GAAAA,CAAO,MAAO,YAAG,8BAAG,I,GAA2B,IAAOE,CAAAA,EAAI40D,GAAAA,WAAAA,GAAqB1+C,EAAAA,EAAAA,EAAK,C,MAAA,CAAC,SAAiDlW,GAAIuzD,CAA2ChxD,MAAY,YAAmB,OAAC,yBAAC,IAAiBvC,CAAAA,EAAIG,EAAAA,EAAG,mBAA2B,IAAI,I,IAAsD,IAApBoI,EAAAA,WAAgBwI,OAAI,gB,YAAK,c,MAAa,C,QAAWS,M,GAAS,mCAA8B,8B,YAAO,O,2BAA+B,M,UAAuEjJ,CAAAA,EAAAA,mBAAoB,C,MAAK,CAAUC,MAAG,a,MAAe,kB,SAAS,yC,YAAWkJ,EAAAA,GAAAA,CAAAA,CAAO,IAAE,U,GAAC,UAAW,K,EAAiB,Q,EAAE,Q,EAAyB,O,IAAgB,MAAM,iBAAe,CAAS5R,GAAAA,CAAO,MAAQ,YAAY,OAAO4R,GAAO,KAAiD,eAAClP,MAAG,CAAC,MAAQ,Y,KAAqBilE,EAAkE,eAAC,WAAyB,IAAQ,MAAK,YAAI,4DAAW,oBAAM,IAA8B,MAAC,KAAsC,KAA6B,OAAInlE,MAAG,iBAAsBxC,SAAM,YAAC,iBAAqB4nE,CAAW,EAA0B,+BAA2D,EAAC,sB,MAAC,C,eAAsCC,EAAAA,WAAe,wBAAE,uD,GAAQzmE,CAA4BkB,QAAS,SAAUsoB,GAAM1qB,OAAI4nE,EAAAA,eAAmB,GAA8B,OAAI,MAAM,EAAC,gBACh9G,qBACGxnE,EAAAA,gBAAoB,CAExB,E,+CCJ4D,GAAU,W,IAAaN,EAAM,K,EAAC,EAAO,MAAKuI,G,OAAM,cAAeC,C,MAAS,CAAsB,cAACC,SAAYvI,EAAI+Q,SAAK1O,QAAI,EAAS,S,YAAqB,O,IAAEqR,UAAM,GAAE,iBAAC,Q,UAAiE,GAAShC,GAAAA,UAAM,MAAC,QAAU1R,EAAIc,MAAQ,MAAO,E,OAAQd,E,QAAgB6U,EAAa7U,QAAsB,MAAI,qDAAsBkB,IAAkBkB,MAAQ,G,MAAoB,CAAU,MAAC,QAACb,SAAU,SAAC,GAAO,SAAIe,EAAmBxC,WAAM,U,CAAiC,Q,MAAqB,CAAuB,OAAU,EAAC,mBAAG,qBAACuB,MAAM,aAACH,SAAW0Q,I,MAAwC,CAAe,MAAC,aAACrQ,SAAU,SAAC,GAAY,cAAIe,EAAiBxC,WAAM,gBAAiC,Q,MAAqB,CAA8B,OAAU,EAAC,mBAAG,qBAACuB,MAAM,oBAACH,SAAW2mE,I,MAA+C,CAAsB,MAAC,oBAACtmE,SAAU,SAAC,GAAmB,qBAAI,EAC/7B,mCAGD,E,QCyBA,IACAlB,MAAAA,CACAa,MAAAA,OACAJ,QAAAA,CACAN,SAAAA,EACAT,KAAAA,SAEAsI,MAAAA,CACA7H,QAAAA,cACAT,KAAAA,QAEAuI,SAAAA,CACA9H,QAAAA,6CACAT,KAAAA,SAGAc,OACA,OACAJ,OAAAA,EACAmR,WAAAA,GACAi2D,kBAAAA,GAEA,EACAjkE,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,2BACA,yCACA,EACAiG,WAAAA,KC3DyQ,MCOrQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBmFjK,GAAM,W,IAAC,O,EAAwC,EAAO,MAAK6V,GAAY,EAAU,MAAG,Y,OAAC,OAAiB,C,MAAC,CAAgB,gCAAG,MAAC,YAAC,SAAQ,G,MAAwB3V,EAAI2T,MAAM,eAAGpL,GAAAA,CAAqBlG,MAAI,SAAc,GAAG,OAAC,Q,eAA8D,O,uCAA+B,kB,YAASC,EAAG,K,IAAiBxC,Y,aAAc,G,IAAmC,mBAAG,OAAK,MAAS,UAAe0R,GAAAA,CAAAA,EAAAA,GAAAA,UAAM,G,KAA2B1R,U,aAAc,M,UAAoCyI,CAAAA,EAAAA,YAAoB,C,MAAK,CAAUC,MAAG,Q,SAAWkJ,EAAAA,U,YAAkBpP,EAAG,K,IAAeE,U,aAAW,O,UAAiC,kBAAG,GAAG,CAA2B,MAAC,YAAC,OAAQ,G,KAAsC,eAAE,GAAI,CAAW1C,MAAM,YAAC,OAAO,WAAE,IAAoDA,CAAAA,EAAK,IAAC,C,MAAC,CAAoB,KAAO4R,KAAyD,wCAAClP,MAAG,CAAC,MAAQ,Y,KAAuB,E,UAA0BgN,EAAK,UAAUs4D,EAAQ,mBAAE,IAAIxlE,MAAG,SAAS,GAACxC,EAAM,iBAAC,IAAO,sBAAE,IAA4C,QAAI,MAAK,CAAY,UAAqBsC,CAAAA,EAAS,aAAa,EAAE,mB,IAAiB,S,MAACb,CAAoB,gBAAGvB,SAAY8oB,SAAO,GAAiB,EAAOxmB,QAAG,CAAgBD,EAAMvC,WAAM,Y,EAAwB,KAAO,OAAKioE,SAAU,EAAM,G,OAAC,OAAY,CAAE,IAAC,EAACx/D,MAAAA,CAAqBlG,MAAI,EAAQ,WAACmG,MAAG,cAAU,G,UAAY,I,YAAgB,EAAO,K,IAAG,S,GAAChG,W,MAAI,GAAO,IAAC,C,MAAiB,CAAwB,SAAG,GAAI,CAAmC,kBAAO,sBAAW,IAAmB,GAAE0T,EAAAA,EAAKhV,CAAM,qBAACkB,E,OAA6ByvB,IAAyB,S,MAACtwB,CAAuB,cAAG,qBAAM,qBAAI,0BAA2Ba,IAAAA,G,WAAyCb,CAAmB,eAAI,qBAAC,UAAM,EAAO,uBAE7yDnB,EAEJ,OAASa,M,QCGT,IAAemF,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CACL40B,YAAa/xB,OACbhC,MAAO4W,MACPwQ,MAAOplB,OACP8kE,WAAY9kE,OACZ2gB,IAAK1gB,OACLigB,IAAKjgB,OACLkF,MAAOnF,OACPoF,SAAUpF,OACVyS,MAAOmC,MACPiwD,WAAYjwD,OAEdvR,MAAM4U,GAAG,KAAE2rB,IACT,MAAMmhC,GAAWzjE,EAAAA,EAAAA,WAAS,IACjB2W,EAAEja,OAAO4X,OAASqC,EAAEja,MAAM2Z,KAAK,KAAO,KAEzCiO,GAAQniB,EAAAA,EAAAA,KAAsB,IAC9B4xC,GAAS5xC,EAAAA,EAAAA,MAAI,GACb+B,GAAU/B,EAAAA,EAAAA,MAAI,GACdgN,EAAO,KACP4kC,EAAOr3C,QACXq3C,EAAOr3C,OAAQ,EAAI,EAEfsQ,EAAQ,KACP+mC,EAAOr3C,QACZq3C,EAAOr3C,OAAQ,EAAK,EAEhBgnE,EAAcnsD,IAClB+M,EAAM5nB,MAAMq1B,OAAOxa,EAAG,GACtB+M,EAAM5nB,MAAQ,IAAI4nB,EAAM5nB,MAAM,EAE1BinE,EAAU,KACdr/C,EAAM5nB,MAAMtB,KAAK,CAAEsB,MAAO,IAAK,EAE3B4mE,EAAS,KACbhhC,EACE,QACAhe,EAAM5nB,MAAM0O,KAAKmM,GAAMA,EAAE7a,QAC1B,EAEGknE,GAAoB5jE,EAAAA,EAAAA,WAAS,MAC7B2W,EAAE0I,KAAOiF,EAAM5nB,MAAM4X,OAASqC,EAAE0I,QAChC1I,EAAEiI,KAAO0F,EAAM5nB,MAAM4X,OAASqC,EAAEiI,OAWtC,OARAxf,EAAAA,EAAAA,QACE,IAAMuX,EAAEja,QACPiR,IACMA,GAAMA,EAAE2G,OACRgQ,EAAM5nB,MAAQiR,EAAEvC,KAAK1O,IAAa,CAAQA,YAD1B4nB,EAAM5nB,MAAQ,CAAC,CAAEA,MAAO,IACW,GAE1D,CAAE6I,WAAW,EAAMlG,MAAM,IAEpB,CACLokE,WACA1vB,SACA7vC,UACAogB,QACAs/C,oBACAD,UACAD,aACAJ,SACAn0D,OACAnC,QAEJ,ICzE8S,MCO5S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCVhC,IAAepL,EAAAA,EAAAA,iBAAgB,CAC3BiC,QACI,MAAO,QACX,EACAhC,WAAY,CACRgiE,iBAAgB,GAChB98C,mBAAkB,GAClB+8C,eAAcA,IAElBznE,OACI,MAAO,CACH0yD,WAAY,GACZgV,aAAc,CAAEzlE,KAAM,GAAI+R,YAAa,IACvC6yD,WAAY,CAAEz+D,GAAI,GAAInG,KAAM,GAAI+R,YAAa,IAC7C2zD,iBAAiB,EACjBC,gBAAgB,EAChBb,iBAAiB,EAEzB,EACA7mE,QAAS,CACL4mE,eAAer9C,EAAAA,GAAAA,IAAQ,iBAAiBrjB,iBACpCnF,KAAKyxD,iBAAmBtxC,EAAAA,EAAAA,KAAAA,IAAe,0CAA0CzS,MAAMG,GAAMA,EAAE9O,MACnG,IACAymE,iBAAiBh9C,EAAAA,GAAAA,IAAQ,qBAAqBrjB,eAAgBhH,SACpDgiB,EAAAA,EAAAA,KAAAA,KAAgB,yCAA0ChiB,GAChE6B,KAAK6lE,eACT,IACAF,eAAen9C,EAAAA,GAAAA,IACX,oBACArjB,eAAgBgC,EAAYhJ,SAClBgiB,EAAAA,EAAAA,KAAAA,IAAe,0CAA0ChZ,IAAMhJ,GACrE6B,KAAK6lE,eACT,IAEJjV,mBAAmBgW,GACf5mE,KAAK2mE,gBAAiB,EACtB3mE,KAAK4lE,WAAagB,CACtB,EACA9T,qBAAqB8T,GACjB5mE,KAAK8lE,iBAAkB,EACvB9lE,KAAK4lE,WAAagB,CACtB,EACAzhE,yBAAyByhE,EAAejiD,SAC9BxE,EAAAA,EAAAA,KAAAA,IAAe,0CAA0CymD,EAAUz/D,WAAYwd,GACrF3kB,KAAK6lE,eACT,GAEJ9lE,UACIC,KAAK6lE,eACT,ICzDwS,M,uBCAxF,GAAe,KCO/N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB2O,W,MAAW,K,IAAqB7nE,MAAM,G,SAAC,WAAW,2B,YAAG,O,MAACyI,C,MAAwB,EAAC,wB,QAAe,8B,YAAezI,EAAAA,GAAAA,CAAAA,C,yCAA2CyC,EAAAA,GAAAA,EAAAA,C,MAAmBzC,C,WAAO,I,YAAkC,O,IAAG,Y,GAAuCA,UAAM,G,YAA4F,wBAAG,mBAAO,MAAQ,CAAuB,kBAAC,UAAiB6R,KAAuC,yBAAC,OAAO,UAAoI,GAAQ,YAASA,EAAO,sD,MAAgC,iBAAE,GAAI,CAAyI,kBAAO,6BAAM,IAAkB,QAAU,0EAAC,IAA2B,kBAAO,4BAAW,IAAiC,mGAAC,EAAsB,UAAmC,CAACpJ,IAAAA,UAAqBlG,GAAG,WAAe,MAAC,GAAS,c,EAAO,OAAE,IAAC,U,iBAAwC,C,aAAe,Y,QAACkG,EAAW,MAAKwI,GAAG,a,YAAqB,O,6BAAgB,K,aAAmC,KAA62C,wBAAt2C,Q,MAAE,C,WAAQzO,IAAwC,YAAQ,EAAI,KAAK4T,IAAKnW,YAA8BD,GAAK,UAAC,GAAC,IAAgBoW,MAAKs8C,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,GAAI,CAAmB,OAAC,KAAQ,KAAkD,mCAAC,IAAM,MAAC,IAA4KhwD,CAAG,SAAD,EAAC,a,MAAC,C,MAAgCxC,KAA6B,mBAA+O,OAA/O,QAAE,GAAI,CAAuKF,MAAM,YAAC,OAAQ,qBAAE,IAA8C0C,CAAE,EAAC,6F,GAAC,C,MAAgCxC,SAAI0yD,GAAwB,8BAAC,IAAmLlwD,CAAE,EAAC,qG,MAAC,C,MAAgCxC,KAA+B,mBAA4Q,OAA5Q,QAAE,GAAI,CAAyL,kBAAS,OAAI,uBAAS,IAA8C,QAAS,wFAAI,IAAWwR,MAAAA,SAAAA,GAAQ,gCAAC,I,CAAmC,OAAcuL,CAAAA,EAAMC,EAAAA,EAAG,MAAa,+E,UAAwB,M,IAACzU,GAAAA,EAAAA,cAAoB,C,YAAK,O,2BAA4B,M,UAAmBhI,CAAAA,EAAAA,gBAAAA,C,MAAQ,C,QAAS+B,EAAG,uB,MAAkB,c,YAA0B,EAAOkP,GAAAA,CAAAA,C,iBAAQ,eAAC,EAAGlP,O,EAAuD4a,Q,EAAapa,M,UAA8DvB,CAAAA,EAAAA,cAAW,CAAc,GAAE,CAACzB,MAAM,YAAC,OAAQG,GAAK,KAA8B,QAAa,aAAsQ,uBAAa,C,WAAUD,CAAAA,CAAW,kBAAG,QAAC,eAAC,mB,WAAmCwP,iBAAmB,OAAI,gBAAQ,MAAK,EAAI,wBAAW,IAAYsmB,QAAQ68B,SAAAA,GAA6B,IAAUjoC,KAAK,WAAU1qB,KAA7c,qB,WAAUA,CAAAA,CAAW,kBAAG,QAAC,eAAC,mB,WAAmCwP,iBAAmB,OAAG,MAAI,EAAsB0N,MAAU,EAAGpa,MAAK,EAAaqa,KAAO,EAAgBjc,OAAO,UAAuC,GAAE,CAACpB,QAAM,YAAC,IAAQG,KAAI,WAAC,KAAqT,IAAO,WAAoCoC,K,MAA4BmP,CAAM,MAAE,6B,SAASlP,SAAG,G,EAA+BxC,KAAM,iC,aAA6B,gC,gBAA6EE,C,YAAwB4zD,EAAO,GAAE,E,iBAAa,UAAC,M,UAAsC,CAAC,gCAAS,C,MAAE3zD,C,MAAY,kB,QAAS,8B,OAAEyI,EAAAA,WAAQ,SAAE,mBAAC,SAAQpG,GAAkBE,M,YAA6B,EAAOgP,GAAAA,CAAAA,C,iBAAQ,eAAC,EAAGlP,O,EAA2BxC,Q,EAAO,Q,UAAgD,iBAAkB,C,GAAa,CAAkB,kBAAI,UAAC,KAAoE,eAAC,OAAIwC,MAAG,UAAUxC,KAAM,SAAC,KAAO,EAAE,eAAIE,QAAO,GAAoC,GAAK,CAAQ,mDAAI,IAAmB81B,CAAAA,EAAAA,EAAAA,EAAQ2+B,CAAiC,OAAyBz0D,KAAI81B,KAAmD,CAAC,mCAAgC,IAAO,WAAoCzzB,K,MAA4BmP,CAAM,MAAE,iC,SAASlP,SAAG,G,EAAoBxC,KAAM,qC,aAAsC,oC,gBAA4EE,C,YAAmC,EAAQ,GAAC,E,IAAK,U,GAACuI,UAAAA,M,UAAiDG,CAAAA,EAAAA,mBAAO,C,MAAEgJ,C,QAAQnR,EAAAA,MAAAA,GAAAA,cAAM,MAAE,e,MAAQ,EAAI,4B,SAAkB,iC,QAAC,G,YAAuC,O,IAAC,U,GAAG,UAAI,Q,EAAqC2c,O,EAAapa,M,UAA8DvB,CAAAA,EAAAA,cAAW,CAAc,GAAE,CAACzB,MAAM,YAAC,OAAQE,GAAiB,KAA8B,QAAO0R,EAAM,sB,WAAU1R,CAAAA,CAAW,kBAAG,QAAC,eAAC,mB,WAAmCwP,iBAAmB,OAAI,6BAAQ,MAAK,EAAI,wBAAW,IAAYsmB,QAAQ+8B,SAAW,GAAU,IAAUnoC,KAAK,WAAU1qB,KAAgE,IAAO,WAA6B,K,MAAiE,CAAiE,2BAAG,SAAC,YAAC,OAAU,UAAS2R,aAAO,E,EAAsB,mCAAGtQ,EAAK,qBAAC,C,MAAM,CAA+Be,eAAS,EAAUsoB,kB,WAAkB,aAAiC,YAAC,oDAAqC,IAAI,QAAG,YACn0L,mBACGtqB,G,sJC+LJ,IACAiI,MAAAA,GACA,gCACA,EACAhC,WAAAA,CACAwtD,YAAAA,GACAC,WAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,iBAAAA,GACAC,eAAAA,GACAC,4BAAAA,GACA5oC,mBAAAA,IAEA1qB,OACA,OACAwzB,GAAAA,KACAi/B,MAAAA,GACAC,WAAAA,GACAa,sBAAAA,GACAC,aAAAA,KACAC,WAAAA,KACAC,gBAAAA,KACAC,kBAAAA,KACA1+B,QAAAA,CACA+8B,YAAAA,EACAF,oBAAAA,EACA8B,wBAAAA,EACA3B,iBAAAA,GAEA5lB,OAAAA,qCAEA,EACA1oC,SAAAA,CACAkwD,YACA,gDACA,GAEA3zD,QAAAA,CACAuxD,qBACA,qBACA,kCACA,EACAqC,oBACA,0BACA,sCACA,EACAjC,mBAAAA,GACA,sBAAAkB,QAAAA,EAAAA,GAAAllC,YAAAA,EAAAA,aACA,sCACA,EACAijC,mBAAAA,GACA,oBACA,0BACA,EACAc,iBAAAA,GACA,kBACA,kCACA,EACAmC,qBAAAA,GACA,yBACA,+BACA,EACA,qCACA,aACAtH,mDAAAA,EAAAA,UAAAA,EAAAA,aACA99C,MAAAA,GAAAA,EAAAA,OACA,gBACAgC,GACA,EACAqjD,UAAAA,EAAAA,GAAAA,IAAAA,YAAAA,iBACA,gCACA5yC,EAAAA,EAAAA,KAAAA,IAAAA,uCAAAA,MAAAA,GAAAA,EAAAA,OACAA,EAAAA,EAAAA,KAAAA,IAAAA,0CAAAA,MAAAA,GAAAA,EAAAA,OACAA,EAAAA,EAAAA,KAAAA,IAAAA,mDAAAA,MAAAA,GAAAA,EAAAA,SAGA,aACA,kBACA,4BACA,KAEApgB,UACA,eACA,GCrRkQ,M,uBCA/C,GAAe,KCO9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBiN,GAAK,W,IAAuB/B,EAAM,K,EAAC,QAAW,G,OAAG,EAAM,KAAG,S,MAAC,CAAgC,KAAOE,KAA0B,CAACA,EAAG,KAAWA,CAAAA,EAAI2oE,GAAAA,EAAAA,GAAAA,EAAe9zD,GAAAA,4BAA8B0Y,EAAAA,EAAAA,GAAY6C,CAAAA,EAAAA,GAAAA,EAAAA,CAAwPtwB,MAAM,CAAC,MAAO,WAAK,CAACwC,EAAG,aAAgBtC,CAAgmBF,MAAM,CAAC,YAA6G,QAAI,KAAO,EAACE,eAAc2oE,MAA8R7oE,KAAM,wBAAU,wQAAE,MAAK,CAAkNA,KAAM,K,CAAW,OAAQ,GAAS,sgB,MAAC,CAAyC,wGAAK,OAAQE,EAAI4oE,KAAAA,EAAAA,eAAAA,KAAAA,kBAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,wBAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,eAAAA,KAAAA,uBAAAA,GAAAA,EAAAA,MAAAA,IAAAA,GAAAA,EAAAA,MAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,eAAAA,eAAAA,EAAAA,mBAAAA,EAAAA,GAAAA,EAAAA,CAAyB,OAAI5oE,KAAO,KAE1kEI,CAAAA,EAAAA,EAAAA,GAAe,CAAG,EAAE,gKAExB,MAASa,C,wLCJH,MAAO4nE,GAOT1vD,YAAY2vD,IAAS,uLACjBhnE,KAAKinE,OAASD,EAAKC,OACnBjnE,KAAKknE,SAAWF,EAAKE,SACrBlnE,KAAKmnE,gBAAkBH,EAAKG,gBAC5BnnE,KAAKonE,mBAAqBJ,EAAKI,mBAC/BpnE,KAAKqnE,kBAAoBL,EAAKK,iBAClC,EAGE,MAAOC,GAOTjwD,YAAY7N,IAAW,iLACfA,IACAxJ,KAAKunE,cAAgB/9D,EAAO+9D,cAC5BvnE,KAAKwnE,cAAgBh+D,EAAOg+D,cAC5BxnE,KAAKgnE,KAAQx9D,EAAOi+D,YAAe,IAAIV,GAAYv9D,EAAOi+D,aAAe,KACzEznE,KAAK0nE,gBAAkBl+D,EAAOk+D,gBAC9B1nE,KAAKquB,cAAgB7kB,EAAO6kB,cAEpC,CAEIzvB,YACA,OAAQoB,KAAKunE,eACT,KAAK,EACD,MAAO,UACX,KAAK,EACL,KAAK,EACD,MAAO,UACX,QACI,MAAO,UAEnB,CAEIp1D,WACA,OAAQnS,KAAKunE,eACT,KAAK,EACD,MAAO,cACX,KAAK,EACL,KAAK,EACD,MAAO,QACX,KAAK,EACL,QACI,MAAO,UAEnB,CAEIx0D,kBACA,IAAIA,EAAc,GAClB,OAAQ/S,KAAKunE,eACT,KAAK,EACDx0D,EAAc,mDAAmD/S,KAAKwnE,sBACtE,MACJ,KAAK,EACDz0D,EAAc,iCACd,MACJ,KAAK,EACDA,EAAc,qDACd,MACJ,KAAK,EACDA,EAAc,oEACd,MACJ,QACIA,EAAc,yFACd,MAGR,OAAOA,CACX,E,IC/EqF,GAAU,W,IAAoDtS,EAAAA,KAAwBzC,EAAK,EAAC,SAAO,EAAC,kB,OAAG,0CAAE,YAAY,YAA0DyC,MAAAA,CAAyBzC,KAAM,MAAW,wDAAE,YAAY,aAA8E8C,MAAQ,CAA0C9C,KAAM,M,CAAuC,UAAW,CAAC2pE,EAAAA,GAAAA,EAAAA,GAAY,0C,MAAC,oBAAYC,EAAAA,kB,MAAmB,CAAwC,mBAAa,iBAAC,MAAS,EAAC,aAAG,2BAACnhE,eAAgBwI,EAAI,qBAAC1O,OAAI,KAAUmG,QAAG,I,YAAmB,O,IAAC,UAA4D,mBAAG,IACjuB,kDACGpI,Q,UCQJ,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHqpE,mBAAoBvmE,OACpBwmE,qBAAsB,CAAE5pE,KAAMoD,OAAQ3C,QAAS,MAC/CopE,eAAgB,CAAE7pE,KAAMmD,OAAQ1C,QAAS,MACzCqpE,eAAgB,CAAE9pE,KAAMmD,OAAQ1C,QAAS,OAE7C+F,MAAMlG,GACF,MAAMopE,GAAejlE,EAAAA,EAAAA,WAAS,IACtBnE,EAAMqpE,oBAAsB,IACrB5xC,GACAz3B,EAAMspE,sBAAwB,IAC9B5xC,GAEAC,KAGT8xC,GAAiBtlE,EAAAA,EAAAA,WAAS,IACxBnE,EAAMqpE,oBAAsB,IACrBzxC,GACA53B,EAAMspE,sBAAwB,IAC9BzxC,GAEAC,KAGf,MAAO,CACHiH,gBAAiB,UACjBqqC,eACAK,iBAER,ICzC4S,MCO5S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBkL,GAAQ/sD,W,IAA4Cjd,EAAM,K,EAAC,QAAa,G,OAAG,kBAAE,MAAK,CAASyC,MAAW,iDAAQzC,aAAM,OAAC,QAAQ,QAAQ,qBAAmB,4B,OAAA,QAAE,MAAK,CAAgBA,cAAM,KAAgB,SAACuB,YAAM,O,MAAM,CAAiBe,MAAQ,S,QAAqB2nE,W,CAAexoE,EAAAA,GAAAA,EAAW,CAAW,OAAIe,UAAW,I,MAAQ,CAAW,QAAU,UAAI,SAAQ,YAAI,aAAItC,EAAgCF,WAAM,c,CAAY,O,MAAc,CAAa,SAAIE,SAAO,GAAgCF,OAAM,IAAiB,0BAAE,MAAO,CAAkC,MAAU,GAASuC,SAAW,GAAiB,OAAK,I,GAAiB,gBAAS,e,MAAM,CAAE,cAAK,K,EAAgHvC,GAAK,EAAC,sB,OAAC,OAAQ,C,IAAS,EAAU,iBAAQ,SAAE,MAAK,CAASyC,OAAW,S,CAAkB,OAAQ,kDAAQ,mBAAE,MAAMpC,CAAiEL,MAAM,SAAC,QAAU,W,CAAmB,OAAS,CAA4B,YAAC,UAAC0C,MAAG,CAAC,MAAQ,W,CAAgF,qDAAC,OAAIxC,MAAO,GAA+DuC,MAAW,UAAQzC,QAAM,2B,GAAkB,CAAkB,kBAAM,OAAC,EAAQ,8CAACyC,I,CAA6B,KAAO,kBAAC,0BAAqkB,OAArkB,QAAQ,mBAAE,MAAMpC,CAAgEL,MAAM,SAAC,QAAU,W,CAAmB,OAAS,CAA4B,YAAC,UAAC0C,MAAG,CAAC,MAAQ,W,CAA+E,oDAAC,OAAIxC,MAAO,GAAyH,MAAU,UAAMqC,QAAI2nE,EAAAA,MAAAA,GAAAA,gBAA0E,GAAG,CAAuB,MAAI,SAAQ,GAACznE,OAAY,+CAAW,IAAuCvC,CAAAA,EAAM,GAAC,+EACphE,eACGI,IAAAA,GAEKa,CAAAA,EAAAA,GAAQb,IAAAA,EAAAA,GAAAA,GAAe,mB,mPCkEhC,IACAS,OACA,OACAyW,SAAAA,KACAyyD,WAAAA,EAEA,EACA1jE,WAAAA,CAAA4jE,YAAAA,IACApoE,UACA,yBACA,EACAd,QAAAA,CACAmpE,oBAAAA,EAAAA,GAAAA,IAAAA,gBAAAA,iBACA,mFACA,IACA,sBACA,gCACA,2BACAh+D,mDAAAA,KACAsD,MAAAA,GAAAA,EAAAA,OACArD,OAAAA,SAAAA,EAAAA,WACA,IC3FuQ,MCOnQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QC+DhC,IACA9F,WAAAA,CAAA8jE,eAAAA,GAAAC,SAAAA,IACA/hE,MAAAA,GACA,mCACA,EACAxH,KAAAA,KAAAA,CACA8nE,eAAAA,CAAAA,EACA0B,mBAAAA,EAAAA,EAAAA,uBAEA3lE,UACA,wBACA,EACAF,SAAAA,KACA,cAEAzD,QAAAA,CACAupE,mBAAAA,EAAAA,GAAAA,IAAAA,qBAAAA,iBACA,qEACA,6BACA,IACA,kCACA,mCACA,wFACAn+D,OAAAA,SAAAA,EAAAA,SACA,ICzG2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB8Q,W,MAAW,K,IAAoB5J,MAAAA,GAAmBzC,EAAM,kB,SAAC,WAAQ,QAAW,mB,YAAC,O,MAAe,C,MAAI,+B,QAAC,EAAQ,6B,YAAgD,O,IAAC,gB,GAAE,W,MAAoB,GAAC,K,YAAQ,OAAE,OAAIE,MAAO,YAAoD,cAAa,IAAO,eAAe,GAAO,6BAAC,IAA4C,GAAQA,EAAAA,EAAIuqE,CAAQ,MAAU,CAAM,UAAyD,MAAYvqE,SAAI4xB,EAAU,kCAAC,EAAqD,a,CAAK,Q,MAA0C,CAAoB,QAAC,UAAC,kB,MAA6CQ,EAAAA,QAAmB,WAAC,KAAC,iBAAgB,e,UAAqBD,EAAQ,SAAO,YAAC,aAAC,eAAgB,EAAC,mC,GAAqC,CAAC,sBAAkB,SAASxgB,GAAQ3R,EAAI4xB,aAAWjgB,CAAM,EAAE,wBAAmB,SAASA,GAAQ3R,EAAI4xB,aAAWjgB,CAAM,EAAE,4BAACpJ,EAAAA,SAAkB,CAAGlG,EAAcmG,iBAAa,YAAC,WAAe,CAAsD,EAAEoK,kBAAM,YAAM,cAACvQ,EAAqBmG,mBAAY,YAAE0N,EAAAA,WAAAA,CAAK,G,YAA6C,OAAE,IAAC,UAAC7T,GAAG,WAAsB,MAAC,GAAS,qD,EAAO,OAAE,G,CAAqI,qBAAE,GAAC,eAACA,IAAsC6T,MAAAA,CAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,MAAAA,KAAK,G,CAA8E,uBAAE,GAAC,eAAC7T,IAAiC6T,MAAAA,CAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,YAAAA,EAAAA,YAAAA,KAAAA,MAAAA,GAAAA,EAAAA,4CAAAA,KAAK,G,KAAwB3N,oB,aAAyB,K,UAA+B,2D,oCAA4C,K,UAAmD,GAAI,KAAK,CAAE,YAAa,EAAEjG,GAAG,EAAiB,IAAC,YAAC,aAAQ,GAAiB,IAA8B,mBAAO,OAA8J,UAAyBA,GAAG,OAAa,CAAC,wBAACiG,IAAyB,MAAS,IAAI,QAAS,SAAEiJ,GAAAA,CAAQ,kBAAC,OAAW,iBAAyB1R,I,CAA2C,OAAeE,CAAG,EAACwqE,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,aAAAA,GAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,GAAAA,gBAAAA,IAAAA,IAAAA,IAAAA,G,UAAcjiE,M,IAAqBlG,GAAG,EAAC,cAAS,C,YAAI,O,2BAAiBqG,M,UAAkB,2BAA8B,C,MAAgBlG,C,QAAI,EAAQ,sB,aAAwBgP,EAAK,c,YAAG,O,IAAG,U,GAA2E0L,UAAU,K,EAAGpa,Q,EAAkBqa,M,UAAqE,gBAAqD,EAAC,KAAtD,iBAACrd,GAAAA,CAAO,MAAQS,SAAK,GAAC,OAAQmI,GAAQ,KAAgB,uBAA8M,EAAC,IAAI,CAAI,yBAAI,cAAkB,GAACotB,CAAgC,MAAUpL,SAAK,GAAa,IAAQ,KAAE,qBAAsB,IAAmC,qCAA7W,6B,WAAU,CAAC1qB,CAAgB,kBAAG,QAAI,eAASF,MAAM,YAAC,WAAQ,gBAA0B,MAAC,CAAG,MAAC,EAAC,MAAQ,E,KAAsB,GAAgC,IAAIE,QAAU,EAACA,gBAA6M,IAAeuI,MAAe,KAAoBC,K,MAAsB,C,MAAC,EAAQlG,QAAG,c,SAA2B,SAAC,G,EAAC,OAAQtC,QAAIyqE,gBAAW,E,aAAuC,2B,gBAAqH,C,YAAK,O,IAACliE,U,aAAyB,M,UAAiCmJ,CAAAA,EAAAA,qBAAM,C,MAAE5Q,CAAQ,MAAE,c,QAASwB,EAAG,wB,MAAkB,yC,SAAC,EAAQkP,GAAAA,uC,QAAK,G,YAAqD,O,2BAAmC,Q,EAAS,O,EAAkB,Q,UAAmB,iBAAmBG,C,GAAQH,CAAkC,WAAK,0CAAQ,SAAK,cAAI,kBAAI,QAAkB,GAACskB,CAAgC,QAAa,SAAE,GAAa,IAAQ,KAAE,mBAAsB,KAA0C,IACl3H,WAGD,K,gJCJ4CxzB,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAe,C,MAA4B,CAAiD,MAAS,EAACE,GAAIc,4BAAQ,6CAACyH,QAAYvI,EAAI+Q,S,YAAsB,EAAS,K,IAAEW,U,GAAQgC,UAAAA,OAAO,EAAC,MAAC,I,MAA+C,GAAS,GAAC,UAAI,MAAC,OAAS,EAAa,SAAQA,EAAO,QAAC,oBAAiB1T,IAA6EF,MAAM,I,CAAC,SAAW,EAAE,mD,MAAC,CAA6B,YAA8D,yBAACuB,YAAM,+C,MAA0Be,C,MAA6BooE,EAAAA,aAAgB,SAAC,YAACjpE,EAAAA,aAAW,CAAc,EAAI,WAAG,mBAE7qBnB,EAEJ,E,MCHA,IACIC,MAAO,CAAC,UAAW,QAAS,WAAY,QAAS,gBACjDU,QAAS,CACL2pE,OACIC,UAAUC,UAAUC,UAAU/oE,KAAK0oE,aACvC,ICN4S,M,uBCAxF,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYloE,GAAOK,WAAS,MAAU,KAAS7C,EAAK,EAAC,S,OAAC,EAAM,IAAC,C,MAAS,CAAoB,cAAe,MAAS,YAAa,UAAYE,GAAU,QAAU,EAACC,QAAK,kBAAG,KAAC,Q,GAA0B0R,C,MAA+B3R,SAAU,GAAG,OAAD,mBAAC,UAAIA,IAE/QI,CAAAA,EAAAA,GAAAA,IAAe,EAAG,GAAE,iDAExB,E,MCwBA,IACAC,MAAAA,CAAAA,QAAAA,QAAAA,QACAQ,OACA,OAAAC,SAAAA,EACA,EACAC,QAAAA,CACA,eACA,oBACA,gBACA,IACA,4BACAgxB,eAAAA,CAAAhyB,KAAAA,gBAAAa,QAAAA,KAAA8tB,YAAAA,KAAAo8C,UAAAA,IACAt7D,MAAAA,GACA,SAGA,aACA,uBAOA,CANA,WACAhO,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,+BACA,wBACA,SACA,gBACA,kBACA,CACA,ICrD6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5BP,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAOE,EAAI+qE,SAAY,gBAAe/qE,EAAI+qE,WAAa,KAAK,QAAU,MAAMvoE,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACpQ,EACIvgB,GAAkB,GCoBtB,IACAiG,WAAAA,CAAAylB,iBAAAA,GAAAA,GACAzrB,MAAAA,IACA,WACA0qE,SAAAA,CAAAA,OAAAA,SAEAhqE,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,mCACA,IC/B2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCZhC,IAAe4E,EAAAA,EAAAA,iBAAgB,CAC3BiC,MAAMqrB,GACF,OAAOA,EAAI3hB,GAAG,sBAClB,EACA1L,WAAY,CACR2kE,mBAAkB,GAClBC,qBAAoB,GACpBC,mBAAkBA,IAEtBrqE,OACI,MAAO,CACHsxB,SAAU,OACVP,YAAY,EACZQ,aAAc,GACdtxB,SAAS,EACTg1B,QAAS,CACLq1C,eAAe,EACfC,eAAe,GAEnBb,QAAS,GACTr3C,SAAU,GACVs3C,aAAc,KACdC,YAAa,KAErB,EACA1pE,QAAS,CACLsqE,aAAaxqE,GACTiB,KAAK0oE,aAAe3pE,EAAKwB,GAC7B,EACAipE,UAAUC,GACNzpE,KAAK2oE,YAAcc,EACnBzpE,KAAKg0B,QAAQs1C,eAAgB,CACjC,EACAI,qBACI1pE,KAAKg0B,QAAQq1C,eAAgB,CACjC,EACAlkE,2BACInF,KAAK0oE,aAAe,WACd1oE,KAAK2pE,UACf,EACAxkE,0BACIvF,EAAAA,EAAAA,IAAaI,KAAKiQ,GAAG,kCACrBjQ,KAAK2oE,YAAc,WAEb3oE,KAAK2pE,UACf,EACAxkE,iBACInF,KAAKhB,SAAU,EAEf,IACI,MAAMyK,EAAWzJ,KAAKyrB,YAAYhiB,SAClCzJ,KAAKyoE,cAAgB/lD,KAChBhV,MAAMG,GAAMA,EAAEkK,QAAQyY,GAAMA,EAAE/mB,WAAaA,K,CAClD,QACEzJ,KAAKhB,SAAU,C,CAEvB,GAEJ0D,SAAU,CACNrD,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,uCACd7Q,MAAO,YACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,mCACd7Q,MAAO,cACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0CACd7Q,MAAO,eACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,sCACd7Q,MAAO,wBACP+wB,UAAU,GAEd,CACI/wB,MAAO,UACP+wB,UAAU,GAGtB,MACGqY,EAAAA,GAAAA,IAAUrc,KAEjBhnB,sBACUnF,KAAK2pE,UACf,ICrG+S,M,uBCAxF,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,YCtBkN,GAAC,W,IAACljE,EAAAA,K,EAAwB,EAAC,S,OAAkB,EAAC,WAAU,2B,YAASjG,O,MAAYC,C,MAAwB,EAAC,mC,QAAC,EAAQ,sC,YAA2B,O,IAACC,gB,oBAA6B,OAAWkpE,C,YAAiC,OAAC,OAAIppE,MAAG,YAAUxC,UAAM,IAAU,IAAIE,MAAO,SAAUA,GAA4C,wCAAM,IAAc,OAAQ,CAAM,MAAC,CAAO,KAAC,KAAU,gBAAe,qCAACF,EAAO,a,CAA6B,OAAQE,CAAsC,MAAC,CAACqB,KAAM,M,CAA6Be,EAAAA,GAAAA,EAAS,C,MAAmB,CAAkC,SAAC,GAACb,UAAW,GAAiB,4CAAoBzB,MAAM,CAAC,MAAM,EAAC,gBAAG,qBAAM,EAAC,oBAAe,OAACA,EAAO,WAAW,sBAAkB,KAAO,KAAKiS,CAA8B,MAAC,CAAC1Q,KAAM,M,CAA+Be,EAAAA,GAAAA,EAAS,C,MAAmB,CAAoC,SAAC,GAACb,UAAW,GAAmB,wCAAoBzB,MAAM,CAAC,MAAM,EAAC,kBAAG,qBAAM,EAAC,oBAAe,SAACA,EAAO,WAAW,wBAAkB,KAAO,KAAKiS,CAA0C,MAAC,CAAC1Q,KAAM,M,CAA8Ce,EAAAA,GAAAA,EAAS,C,MAAmB,CAAmD,SAAC,GAACb,UAAW,GAAkC,oDAA4EzB,MAAM,CAAC,MAAM,EAAC,iCAAG,qBAAM,EAAC,oBAAe,wBAACA,EAAO,WAAW,uCAAkB,KAAQE,YAAO,sCAAiC,QAAC,MAAC,CAACqB,KAAM,M,CAAsCe,EAAAA,GAAAA,EAAS,C,MAAmB,CAA2C,SAAC,GAACb,UAAW,GAA0B,+CAA6BzB,MAAM,CAAC,MAAM,EAAC,yBAAG,qBAAM,EAAC,KAAOE,EAAIG,aAAG,cAAsB,EAAcL,EAAO,WAAW,+BAA2B,kBAAG,MAAK,CAA0ByI,KAAAA,M,CAAmCC,EAAE,MAAC,GAAS,8B,MAAEgJ,CAAM,WAAE,G,MAAQ,EAAI,iB,IAA6B,OAAQxR,EAAG,cAAe,C,YAAC,EAAS,GAACA,CAAAA,C,2BAAkF,M,UAAkF,GAAC,qBAAS,C,MAAI,C,MAAkB,iB,QAAQ,6B,MAAEc,EAAAA,GAAAA,oCAAQ,SAAE,6C,YAA8B,O,iBAAc,kBAAC,EAAM,O,EAAuChB,Q,UAAkD,iBAAiB,C,GAAC,CAAc,WAAK,QAAU,yBAAgB,C,MAAC0R,CAA4B,uBAAC,QAAI,kBAAiB,wBAAI,sBAAO,KAA+DqgB,IAAuC,WAAkC,KAAsBtpB,MAAAA,CAAqBlG,MAAI,UAAS,aAACmG,SAAG,SAAS,GAAEgJ,EAAAA,KAAAA,EAAAA,QAAAA,eAAAA,EAAM,E,WAAa,0B,gBAAsC,C,YAAc,EAAS,GAACxR,CAAAA,C,2BAAgF,M,UAAgF,GAAC,kBAAS,C,MAAI,C,MAAkB,e,QAAM,6B,MAAQ,uC,SAAEc,EAAAA,GAAAA,sC,YAAmBwB,EAAG,K,IAAeE,U,aAAW,Q,EAAM,KAAC,EAAGF,O,EAAuCxC,Q,UAAsC,GAAGG,cAAAA,C,GAAM,CAAC,MAAQyI,KAA0B,QAAOgJ,EAAAA,oBAAAA,CAAM,MAAC,CAAG,MAAC,IAAC,EAAS,gBAAkBF,G,MAA6DvR,E,QAAQ,UAAI,GAAC,qBAAS,IAAI,6BAAI,sBAAW,KAA+D4xB,IAAuC,WAAkC,KAC79G,OACGzxB,MAAAA,EAAAA,QAAoB,aAExB,SAAe,SAAEA,G,oFCJba,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAOE,EAAIkB,MAAS,wBAAuBlB,EAAIkB,MAAMuc,KAAO,KAAK,QAAU,MAAMjb,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACzQ,EACIvgB,GAAkB,GCsBtB,IACAiG,WAAAA,CAAAylB,iBAAAA,GAAAA,GACAzrB,MAAAA,IACA,WACAa,MAAAA,CACAnB,KAAAA,SAGAgB,QAAAA,CACAgB,QAAAA,GACA,mBACA,kBACAJ,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,4CAEAH,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,mCAEA,ICxC2Q,M,sBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCwGhC,IACA6G,MAAAA,GACA,wCACA,EACAhC,WAAAA,CACAslE,mBAAAA,GACA/5B,gBAAAA,GACAD,cAAAA,IAEA9wC,OACA,OACAqyB,SAAAA,KACA04C,eAAAA,KACA/1C,aAAAA,KACAg2C,aAAAA,GACA/1C,QAAAA,CACAC,cAAAA,EACA+1C,cAAAA,GAGA,EACAjqE,UACA,mBACA,EACA2C,SAAAA,KACA,cAEAzD,QAAAA,CACA2qE,gBAAAA,GACA,oBACA,4BACA,EACAK,kBAAAA,GACA,sBACA,4BACA,EACA14C,cAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,iBACA,iCACAnnB,6BACAsD,MAAAA,GAAAA,EAAAA,KAAAA,QAAAA,GAAAA,EAAAA,OAAAA,KAAAA,KAAAA,YAAAA,aACA,0BACA,6BAGA,0CACA,mBACA,CACAvG,GAAAA,EACAnG,KAAAA,KAAAA,SAAAA,GAAAA,OAAAA,aAAAA,IAAAA,cACAkpE,SAAAA,KAAAA,SAAAA,GAAAA,OAAAA,aAAAA,GAAAA,CACA,CACA/iE,GAAAA,EACAnG,KAAAA,KAAAA,SAAAA,GAAAA,OAAAA,aAAAA,IAAAA,cACAkpE,SAAAA,KAAAA,SAAAA,GAAAA,OAAAA,aAAAA,GAAAA,CACA,CACA/iE,GAAAA,EACAnG,KAAAA,KAAAA,SAAAA,GAAAA,OAAAA,aAAAA,IAAAA,gBAEA,KAEA,IAGA,IACA0wC,kBAAAA,GACA,kCACA,2CAEA,mBACA,EACAy4B,aACA,4BACA,ICtMoQ,M,uBCA/C,GAAe,KCOhO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtB4G,W,IAAiC,O,EAA4B,QAAU,GAA0I,oB,OAAC1jE,EAAAA,GAAAA,EAAmB,CAAC,kB,MAAK,CAAgBC,aAAG,oB,MAAkB,oB,QAAgC,2I,YAA4B,EAAOxI,GAAG,CAACksE,C,uBAAsB,W,MAAE3jE,CAAAA,EAAAA,wBAAoB,C,GAAClG,CAAgBmG,QAAG,SAAS,GAAEhG,OAAAA,EAAAA,qBAAG,G,YAA8BD,EAAW,GAAC,E,IAAOzC,Y,aAAc,G,IAA4B,MAAK,CAAC,EAAG,IAAC,EAAQ,GAAC,CAACA,YAAM,O,MAAC,CAAS,kBAAIE,UAAa,KAA2B,WAAM,MAAC,CAAM,KAAMgnE,KAAsC,CAACA,EAAAA,GAAAA,SAAY,uBAAuB,OAAI,iBAAC,qBAAO,YAAM,EAAO,yBAAgS,EAAClnE,OAAM,MAAc,0NAAE,YAAS,CAAwE,aAAe,UAAM,MAAM,CAAuPA,QAAM,M,CAAW,EAAC,mE,OAAI,Q,IAAC,GAAiC,8NAAG,MAAM,CAAK,MAAO,GAAuCA,GAAK,CAAE,QAAY,EAAC,wBAAwC,I,KAAuG,2BAAE,YAAK,OAAYyC,MAAAA,CAAmBoL,aAAY,cAAC,wBAAoB,QAAQ,gGAAQ7N,CAAAA,EAAK,KAAC,C,YAASE,O,YAA2B,CAAQ,YAAY,QAAS,MAAQ,Q,MAAe,CAAiB,oBAAG,YAAC,OAAC,aAAS,Q,OAAwBA,GAAwB,SAAE,gB,GAAQkB,CAA0BkB,OAAS,SAAUsoB,GAAM1qB,OAAImsE,EAAAA,oBAAiB,GAA4B,OAAI7pE,MAAG,gBAAYqL,SAAW,SAAC,GAAC,gBAAY,CAAQ,EAAC7N,WAAM,mBAA2B,OAAW,C,YAAW,CAAC,YAAQ,SAAY0C,MAAG,CAAC,MAAQ,EAAC,c,OAAwBxC,GAAwB,SAAE,kB,GAAQkB,CAA+BkB,OAAS,SAAUsoB,GAAM1qB,OAAIosE,EAAAA,oBAAsB,GAAiC,OAAI9pE,MAAG,qBAAkBqL,SAAW,SAAC,GAAC,qBAAQ,CAAM,EAAIrL,WAAW,wBAA+M,OAAa,CAAQ,YAAC,CAACxC,MAAM,SAAc,uLAAE,YAAS,CAAuE,aAAe,UAAM,MAAM,CAA+N,QAAU,MAE/jGM,CAAAA,EAAAA,GAAAA,qBAAoB,0CAExB,OAASa,EAAAA,KAAQb,C,qOCJba,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI+c,MAAMC,GAAG,mBAAmBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAE8I,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,iBAAkBK,WAAW,qBAAqBzB,MAAM,CAAC,MAAQG,EAAK,MAAQ,OAAS,MAAQyI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAC9rB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAsC,sBAAuB,C,MAAC,CAAsB,SAAW,EAACmmD,SAAK,kBAACpvD,MAAW,EAACvI,M,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACttB,UAGD,E,SCJyN,W,IAAsB,OAACjJ,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,YAAS,C,MAAI,C,MAAiB,c,SAAE0T,8FAAM,QAAE,W,YAAsC,EAAI,GAAC7J,CAAAA,C,IAAS,U,GAAgB,UAAS,O,EAAW,M,IAAsC,4BAAI,KAAS,EAAC,SAAM,OAAC,EAAC3I,QAAWT,EAAM,MAAC2B,QAAS,UAAgBpC,MAAS,IAAMuB,IAAkB,SAAE,MAAK,CAAWzB,MAAM,QAAC,SAAQ,SAAS,GAAC,EAAM,MAAC,CAAE,EAAIwC,WAAW,U,CAAS,OAAQ,CAAS,OAAItC,MAAO,UAAuNF,KAAM,K,CAA2B,MAAQ,C,MAAkB,CAA2D,kB,CAAQoB,EAAAA,GAAOlB,aAAe,iM,MAACoC,C,MAA6BiqE,EAAAA,cAAc,MAAC,kBAAC9qE,SAAW,2CAAe,MAAI,CAAYzB,MAAM,aAAC,SAAQE,SAAIioC,GAAc,aAAQ,CAAkB,EAAC5mC,WAAM,gBAAgCe,EAAAA,GAAAA,EAAS,C,MAAmB,CAAuB,MAAC,gBAACb,MAAAA,mBAAkC,MAAI,CAAgBzB,MAAM,qBAAC,SAAO,SAAQ,GAAC,qBAAuB,CAAwB,EAAkB,mCAAQoB,EAAAA,GAAAA,EAAWorE,C,MAAQlqE,C,KAA6BkqE,SAAU,SAAC,8BAAC/qE,MAAAA,WAAsB,MAAI,CAAegB,MAAAA,EAAY,OAASvC,SAAO,YAA2CuC,EAAAA,OAAY,CAAOzC,EAAO,WAAY,YAAmB,OAAc,C,YAAW,QAAqF,qCAACuB,YAAM,O,MAAM,CAAqBe,aAAS,G,UAAoBmqE,GAAiB,KAAC,QAAChrE,SAAW,2EAAkB,MAAI,CAC9yD,sBACGnB,SAAAA,SAAoB,GAExB,EAASa,cAAQb,C,2CCiDjB,IACAC,MAAAA,CAAAA,UAAAA,QAAAA,YACA,gBACA,gDACA,EACAQ,OACA,OACAJ,OAAAA,EACA4rE,WAAAA,MACAD,mBAAAA,MACAE,OAAAA,IACAC,eAAAA,IAAAA,MAAAA,cAAAA,UAAAA,EAAAA,IACAtkC,cAAAA,GAEA,EACAzjC,SAAAA,CACAqF,WACA,cACA,CACA,qCACA,OACA2iE,mBAAAA,KAAAA,WACAJ,mBAAAA,KAAAA,mBACAE,OAAAA,KAAAA,OACAG,kBAAAA,EAAAA,cACAC,mBAAAA,EAAAA,WAAAA,EAEA,CAVA,QAWA,GAEA9oE,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,GAMA,qCACA,6CACA,qBACA,wEACA4Y,cACAlD,UAAAA,EAAAA,MAVA,sBACA,8BACA,gBACA,4DASA,EACAzP,WAAAA,EACAlG,MAAAA,KCrGsQ,MCQlQ,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCjBhC,IACIxD,MAAO,CAAC,QAAS,UAAW,WAAY,QACxCgG,WAAY,CAAEsmE,cAAaA,IAC3B5rE,QAAS,CACL4S,OACI7R,KAAKgE,MAAM,SAAS,EACxB,ICRyS,MCO7S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B7E,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,sBAAsB,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACjO,EACIvgB,GAAkB,GCoBtB,IACAC,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,mCACA,IC3B2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCnBhC,IACI6E,WAAY,CAAEumE,gBAAe,GAAEC,mBAAkBA,IACjDxsE,MAAO,CACHa,MAAO8B,UCNqS,MCOhT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClBqI,W,MAAC,K,IAA2BlD,MAAM,GAAC,QAAO,Y,SAAE,M,YAAQwC,EAAG,KAAoC,gBAAG,gBAAM,IAA8C,MAAOtC,CAAAA,EAAIkB,EAAAA,EAAAA,EAAAA,GAAAA,CAAM,OAAI,UAA4B,GAAOlB,CAAAA,EAAI8F,EAAAA,EAAM,MAAS,gBAAS,SAAGyC,CAAAA,EAAAA,GAAAA,EAAW,CAACvI,EAAG,wBAAK,C,MAAK,CAAYwI,KAAG,S,GAAe,C,QAAUlG,SAAG,GAAiK,2BAAG,G,YAAoBwqE,EAAAA,GAAAA,CAAAA,CAAY1qE,IAAAA,Y,GAAyBpC,UAAI8sE,GAAe,IAAwB,qGAAIxqE,K,MAAmC,CAAoB,mBAAG,SAAC,YAAC,aAAU,C,EAAoD,2BAAGiG,EAAAA,wBAAoB,C,MAAK,CAAYC,QAAG,EAAS,O,GAAM,C,QAAUlG,SAAG,GAAqK,2BAAG,G,YAAoBykE,EAAAA,GAAAA,CAAAA,CAAY3kE,IAAAA,Y,GAAyBpC,UAAI+mE,GAAe,IAAwB,yGAAI,KAE3qC3mE,MAAAA,CAEJ,MAASa,EAAQb,W,+ECJba,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,KAAOlB,EAAI23D,KAAK,QAAU33D,EAAI+c,MAAMC,GAAG,kBAAkB,SAAW,CAAEwvD,oBAAoB,EAAMJ,oBAAoB,EAAMK,mBAAmB,IAAQjqE,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAE8I,IAAS,MAAO,CAAClP,EAAG,sBAAsB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,iBAAkBK,WAAW,qBAAqBzB,MAAM,CAAC,MAAQE,EAAI23D,KAAK,MAAQ,OAAS,MAAQjvD,EAAQ,KAAOgJ,EAAO,QAAU,CAAC,CAAEq7D,GAAI,UAAWre,KAAM,SAAUxtD,MAAOjB,EAAKqsE,UAAW9pE,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAI8F,MAAM,UAAW6L,IAAQ,KAAK,IAAI,MAAK,IAC72B,EACIvR,GAAkB,GCFlBa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,oBAAoBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,MAAQE,EAAI+6D,QAAQ,KAAO/6D,EAAIi1C,IAAI,QAAU,MAAMzyC,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,oBAAoB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACzO,EACIvgB,GAAkB,GCetB,IACAC,MAAAA,IACA,SACAJ,KAAAA,CACAF,KAAAA,QAEAmB,MAAAA,CACAnB,KAAAA,QAEAg7D,QAAAA,CACAh7D,KAAAA,MACAS,QAAAA,IAAAA,KAGAgE,SAAAA,CACAywC,MACA,kBAGA,uBACA,6BACA,IACA,yDACA,IACA,8BACA,IACA,8BAVA,GAaA,GAEAl0C,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,kCACA,ICnDyQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCnBhC,IACI6E,WAAY,CAAEumE,gBAAe,GAAEI,iBAAgBA,IAC/C3sE,MAAO,CACHa,MAAO8B,QACP20D,KAAMn0D,SCPoS,MCO9S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClBYlB,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAyC,yBAAuB,C,MAAgB,CAAoB,QAAQxR,EAAM,MAAC,mBAA4B,QAAWA,QAAsC,MAAQ,EAAC,+BAAK,6CAACuI,QAAW,G,YAA2B,EAAS,K,IAAEG,U,GAASgJ,UAAM,QAAEnR,EAAAA,OAAO,EAAC,MAAC,I,MAA8B,GAAO,cAAUoR,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAwDQ,EAAAA,GAAAA,GAAK,0BAAY,C,WAAS,EAAe5B,KAAK,aAAkBK,QAAAA,eAA6B,qBAACzB,WAAM,mB,MAAqB,CAAc,MAAQ4I,EAAAA,QAAQ,MAAOgJ,EAAO,QAAG,KAAC,G,GAA4BF,CAAgD,oBAAC,oCAAI,KAAiB,eAAgB,IACz/B,UAGD,E,MCJIvQ,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAOE,EAAIi1C,IAAI,QAAU,MAAMzyC,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACvN,EACIvgB,GAAkB,GCetB,IACAC,MAAAA,IACA,WACAa,MAAAA,CACAnB,KAAAA,SAGAyE,SAAAA,CACAywC,MACA,kBAGA,uBACA,6BACA,IACA,yDACA,IACA,8BACA,IACA,8BAVA,GAaA,GAEAl0C,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,mCACA,IC5C2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCoBhC,IACA6E,WAAAA,CAAA4mE,iBAAAA,GAAAC,mBAAAA,IACA7sE,MAAAA,CACAa,MAAAA,QACA25D,QAAAA,SC9C2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICnBYsS,GDmBZ,GAAe,GAAiB,QEmBhC,IAAe,IAAA/mE,iBAAgB,CAC/BC,WAAAA,CAAA+mE,mBAAAA,GAAAC,mBAAAA,IACAhtE,MAAAA,CAAAa,MAAAA,QACAqF,QACA,sBACA,gBACA,OAAAumE,aAAA/F,aACA,IChDmQ,MCO/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCVhC,IAAe3gE,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEinE,mBAAkB,GAAEC,WAAUA,IAC5ChnE,QACI,MAAMinE,GAAgB7mE,EAAAA,EAAAA,KAAI,IACpB8mE,GAAe9mE,EAAAA,EAAAA,KAAI,IACnB+mE,GAAc/mE,EAAAA,EAAAA,KAChBmR,MAAM,IACDirC,KAAK,MACLnzC,KAAI,CAACgd,EAAG7Q,IAAM/C,KAASe,KAAK,EAAIgC,EAAG,YACnCnM,KAAKqa,IAAC,CAAQ/oB,MAAO+oB,EAAEtQ,SAAU/X,KAAMqoB,EAAE5Z,OAAO,gBAEnD+7D,GAAqBzlE,EAAAA,EAAAA,KAAI,MACzBshC,GAAgBthC,EAAAA,EAAAA,KAAI,IACpBwlE,GAAgBxlE,EAAAA,EAAAA,KAAI+mE,EAAYxsE,MAAM,GAAGA,OACzC8lE,GAAWrgE,EAAAA,EAAAA,MAAI,GACfulE,EAAsBjlE,UACxBumE,EAActsE,YAAc+gB,EAAAA,EAAAA,KAAAA,IAAe,uBAAuBzS,MAAMG,GAAMA,EAAE9O,MAAK,EAEnF8sE,EAAqB1mE,UACvB,MAAMytB,EAAOy3C,EAAcjrE,MAAM0sE,cAC3Bn5C,EAAQ03C,EAAcjrE,MAAMqpD,WAAa,EAC/CkjB,EAAavsE,YAAc+gB,EAAAA,EAAAA,KAAAA,IAClB,uBAAuByS,KAAQD,IAAS,CACzCzS,OAAQ,CAAEoqD,mBAAoBA,EAAmBlrE,SAEpDsO,MAAMG,GAAMA,EAAE9O,MAAK,EAEtBgtE,EAAwB5mE,UAC1BghC,EAAc/mC,YAAcmO,EAAAA,qBAAqC,EAKrE,OAHAw+D,IACA3B,IACAyB,IACO,CACHH,gBACAC,eACAC,cACAvB,gBACAlkC,gBACAmkC,qBACAF,sBACAyB,qBACA3G,WAER,ICpDyS,MCOzS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClB4iB/pB,W,IAAe,EAAC,K,EAAC17C,EAAAA,MAAW,GAAa,oBAAC,OAAMyP,EAAIhR,WAAY,GAAE,KAAS8tE,CAAW,MAAOxrE,CAAwBD,MAAIyrE,S,CAA4ChuE,EAAAA,EAAAA,EAAM,C,MAAC,CAAiB,U,CAAiByC,EAAAA,GAAAA,UAAY,KAAW,gT,MAAM,C,MAAE,EAAO,YAAE,qBAAID,EAAG,aAA2BxC,E,WAAeguE,gB,EAAsD,KAAO9tE,UAAIi9C,SAAgBlhC,EAAAA,G,OAAE,QAACvZ,IAAG,M,CAAC,OAAuB,C,MAAEsrE,CAAkC,oBAAGvlE,CAAAA,EAAAA,GAAAA,EAAW,C,YAAc,Y,MAAY,C,KAAa,K,6BAA6C,C,aAA0B,E,MAAqD,8B,KAAE,mB,UAAiCnG,SAAS,G,EAAgBpC,SAAS8tE,EAAS,Q,eAA+C,O,IAAI,yBAAG,eAAI,YAAU,OAAI,IAAa,MAAW,SAAQ,GAAChuE,OAAM,gCAAC,GAAW,MAAK,CAA2CA,MAAM,WAAC,SAAS,YAAC,OAAU,EAAKiuE,WAAgBhyD,EAAQ,EAAG,WAAC,sB,QAAoF,U,GAAE,a,MAA6D,GAAC,K,MAAC,CAAU,UAA8DvZ,CAAE,EAAC,+B,MAAC,C,KAA+B,G,SAA6B,EAACwrE,cAAuB,IAAvBA,GAAwB,IAAI1rE,MAAG,SAAcnC,GAA8C,OAAPL,EAAM,kBAAQ,EAAE,qBAAC,IAA6B0C,CAAE,EAAC,uC,MAAC,C,KAA+B,G,SAA6B,EAACyrE,cAAgB,yBAAC,IAAI3rE,MAAG,SAAcnC,GAA4B,OAAT,oBAAa,yBAAS,IAAgD,OAAW,qCAAU,OAAO,KAAS,GAAO,yBAAU,IAAO,kBAA2C2tE,OAAR,oBAAQA,EAAAA,cAAAA,EAAQ,IAA0B,OAAS,sBAACtlE,IAAcE,MAAAA,M,IAASzI,GAAAA,EAAAA,GAAAA,EAAAA,C,YAAO,C,SAAW,a,QAAiB,C,YAA+B,K,+BAAmE,C,MAACuC,C,KAAI,G,YAA8D,O,IAAC,U,GAAE,UAAK,Q,EAAe,K,IAAY,MAAM,CAACrC,EAAG,IAAM,CAA2B,OAAQ,MAAM,YAAO,SAAM,UAAM+tE,GAAgBJ,EAAO,aAAM1rE,QAAS,EAAUsoB,cAAqD,IAACnpB,MAAW,YAA6B,gCAAS,IAAiC,QAAC,OAAoB,KAAe,KAAS,GAAQ,kCAACgB,IAAwB,MAAC,GAAC,MAAO,CAAa,MAAS,EAACvC,gBAAgB,MAAC,SAAWA,SAAI+tE,GAAa,gCAAI,EAAC,WAAQ,kCAAmD,U,IAAC,WAAE,MAAK,CAAUjuE,iBAAM,GAAC,eAAO,KAAK,CAACE,EAAG,IAAI,CAAmEF,YAAM,O,MAAC,CAAsC,kBAACuB,QAAM,eAACH,SAAWitE,EAAAA,c,GAA+CnuE,CAA4B,MAAC,YAACuB,OAAAA,EAAW,uBAAsB,IAA+CzB,CAAAA,EAAK,IAAC,C,MAAC,C,KAAgB,K,CAA0C,EAAC,mE,MAAC,CAAU,mC,MAAK,C,MAA6BsuE,EAAAA,qBAAgC,qBAAE,wBAAC7lE,EAAqBlG,WAAI,yB,GAAwB,KAAQC,CAAAA,EAAG,0BAAQ,C,MAACxC,C,MAAO,IAAU,a,SAAI,kB,KAA0BE,I,UAA4D,SAAS,GAAoF,2BAAC4S,GAAe,YAAI,OAA6B9S,IAAM,UAAC,cAAsB,cAACyI,MAAYvI,CAAa,KAAS,IAAe0I,GAAAA,CAASzI,MAAAA,SAAAA,GAAO,8CAAC,I,CAA8B,MAAQ,QAAS0R,GAAM,EAAC,4D,SAAiC,O,EAAG,4BAA2B,C,MAAE7R,C,KAAO,c,YAA4D,EAAS,GAACE,CAAAA,C,IAAiB,U,GAACwC,UAAG,Q,EAAC,K,UAAmE,kBAAE,GAAI,CAAW1C,MAAM,YAAC,EAAM,sBAAC,CAAE,KAA4C,eAAI,OAAO,kBAAM,UAAMuuE,GAAkB,eAACjsE,QAAS,EAAUsoB,cAAgC,IAACnpB,MAAW,YAAmB,oCAAS,IAAyB,GAAQ,IAAK,CAAC,OAAgB,KAAQ,KAAc,qCAACL,K,MAAsD,CAAkB,MAAC,oBAACK,SAAU,SAAC,GAAe,qBAAIe,EAA6CxC,WAAM,wBAAgB,eAAE,MAAMK,CAAsML,OAAM,EAAC,WAAS,GAAC,MAAK,QAAa,MAAK,CAAUA,MAAM,gBAAC,SAAO,YAAE,iBAAIE,EAAuEF,WAAM,kB,CAAyB,OAAU,GAACE,EAAAA,GAAIsuE,CAAAA,EAAAA,EAAAA,EAAAA,CAAS,MAAC,CAAG,MAAC,UAAyB,yKAAE,MAAMnuE,CAC79J,QACGC,GAAAA,c,yMCF2N,W,IAAiC,OAAC,aAAO,QAAY,Y,OAACmC,EAAAA,WAAY,SAAQ,YAAI,aAAeA,CAAAA,EAAAA,GAAAA,EAAW,CAAkB,MAAK,CAAUzC,MAAM,SAAU,IAAIE,MAAO,SAAY,GAAuF,OAAU,QAAU,QAAC,EAACqC,I,CAAoBvC,EAAAA,GAAAA,EAAM,C,YAAQ,SAAG,QAAC,YAAM,kB,CAAiCA,EAAAA,EAAAA,EAAM,C,MAAC,CAA8B,KAAC,K,GAAsBuC,GAAI,eAAS,iE,OAAG,EAAC,WAAU,C,IAAC,G,QAAyB,C,YAAY,M,mCAA0C,C,aAAiCrC,IAAP,EAAWuuE,KAAAA,O,YAAmB,O,IAAG,UAAqC,GAAC,WAAC37D,MAAM,QAAO,MAAK,CAAY,QAAM,SAAY7S,EAAK,sBAA0BC,GAAI6xB,CAA6B,kBAACtwB,OAAW,oBAAgB,IAGl7B,6BAAC,EAAQ,WAAM,MAAC,GAAgCzB,MAAM,CAAC,MAAM,EAAU,KAAM,qBAACuB,EAAM,gBAACH,EAA4BkB,WAAS,qBAAsD,0EAE3B,OAF2B,Q,MAACb,CAAgC,SAA6BzB,CAAAA,EAAK,+BAAC,C,MAAC,CAE9P,aAAwCA,MAAM,CAAC,MAAM,EAAU,UAAM,qBAACuB,EAAM,qBAACH,EAAuBkB,WAAS,0BAAiD,W,MAACb,CAA2B,kFAAce,CAAE,EAAC,gCAAQ,CAACxC,MAAM,CAAC,KAAO,QAAQwC,MAAM,CAAExC,MAAM,OAAC,SAAO,YAAe,kBAAI,EAAC,WAAQ,qBAA0C,M,IAA4B,QAAC,OAAIE,KAAO,OAAsE,CAACsC,EAAG,KAAeC,MAAAA,CAA+BD,KAAG,gB,GAAiB,CAAS,kBAAgG,OAA5FtC,EAAO,kBAA+F,mBAAYqC,I,CAAoBvC,EAAAA,GAAM,0C,YAAQ,SAAG,QAAC,YAAM,kB,CAA8BA,EAAAA,EAAAA,EAAM,C,MAAC,CAAgC,KAAC,K,GAAsBuC,GAAI,UAAS,2D,OAAG,EAAC,WAAU,C,IAAC,G,QAAyB,C,YAAY,M,gCAAuC,C,aAAiCrC,IAAP,EAAWwuE,OAAAA,O,YAAgB,O,IAAG,U,GAAiD1uE,W,MAAO,GAAM,IAAG,C,MAAC,CAAmB,QAAG,SAAC,qB,GAA0B,CAA+B,kBAAC,wBAAIwC,I,CAA6D,MAAS,6B,MAAC,CAAwC,QAAG,SAAC,O,GAA0B,CAAiC,kBAAC,6BAAIA,IAAmD,GAAC,uCAAO,MAAK,CAAY,QAAM,SAAc,wBAA0BtC,GAAI6xB,CAA0B,kBAACtwB,OAAW,wBAAa,IAA0B,qCAAC,EAAsE,WAAM,MAAC,GAA6BzB,MAAM,CAAC,MAAM,EAAO,KAAM,qBAACuB,EAAM,gBAACH,EAAoBkB,WAAS,kBAA8C,W,MAACb,CAAwB,mDAA8EzB,CAAAA,EAAK,4BAAC,C,MAAC,CAAU,aAAqCA,MAAM,CAAC,MAAM,EAAO,KAAM,qBAACuB,EAAM,gBAACH,EAAqBkB,WAAS,kBAA+C,mD,MAACb,CAAyB,WAAuBe,CAAE,EAAC,6BAAQ,CAACxC,MAAM,CAAC,KAAO,QAAQwC,MAAM,CAAExC,MAAM,QAAC,SAAO,YAAe,mBAAI,EAAC,WAAQ,mBAA0C,KAAU,MAAC2uE,E,IAAc,QAAC,OAAIzuE,KAAO,O,CAA8D,MAAQ,CAAG,MAAC,CAACuI,KAAAA,gB,GAAuC,C,MAAc,YAAS,OAAPzI,EAAAA,kBAAQ,gB,UAA+C,2BAAQ,gB,MAAsD,C,OAAM,I,YAA8BsC,EAAQ,GAAC,E,6BAAwC,G,YAA+D,yBAAG,OAAO,MAAW,uDAAqP,MAAKnC,CAAY,MAAE,kBACxzF,qBACGG,EAAAA,gBAAoB,CAEfa,E,yTCTmCqB,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAkB,oB,OAAC,OAAYgmB,C,MAAM,CAAkB,MAAQtoB,EAAI0uE,MAAY,cAAkB,oBAAG,eAAC,I,GAA0B,CAAiC,kBAAE,yBAACnmE,G,YAAwC,EAAS,K,IAAE2N,YAAK,GAAE,eAAC,IAAsF,yEAAC7T,GAAWmG,C,IAAc0N,OAAK,GAAE,eAAC,IAAsF,yEAAC7T,GAAcmG,C,IAAc,UAA0B,GAAC,WAACoK,MAAM,iBAAM,EAAa,WAChmB,UAGD,E,OTDA,SAAYu6D,GACVA,EAAAA,aAAAA,kBACAA,EAAAA,aAAAA,YACAA,EAAAA,aAAAA,YACAA,EAAAA,UAAAA,QACD,EALD,CAAYA,KAAAA,GAAiB,KAO7B,QAAe/mE,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAOgC,OAAQolB,MAAOplB,QAC/BqD,QACE,MAAMmoE,GAAc/nE,EAAAA,EAAAA,KAAInD,OAAO4b,OAAO+tD,KACtC,MAAO,CAAEuB,cACX,IUf0T,M,uBCAxF,GAAe,KCO/O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,ICnBYC,GDmBZ,GAAe,GAAiB,QEtBYrsE,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAkB,oB,OAAC,OAAYgmB,C,MAAM,CAAkB,MAAQtoB,EAAI4uE,MAAe,cAAkB,uBAAG,eAAC,I,GAA0B,CAAiC,kBAAE,yBAACrmE,G,YAAwC,EAAS,K,IAAE2N,YAAK,GAAE,eAAC,IAAyF,4EAAC7T,GAAWmG,C,IAAc0N,OAAK,GAAE,eAAC,IAAyF,4EAAC7T,GAAcmG,C,IAAc,UAA0B,GAAC,WAACoK,MAAM,iBAAM,EAAa,WACzmB,UAGD,E,ODDA,SAAY+7D,GACVA,EAAAA,8BAAAA,6BACAA,EAAAA,4BAAAA,2BAEAA,EAAAA,iCAAAA,gCACAA,EAAAA,+BAAAA,8BAEAA,EAAAA,4BAAAA,2BACAA,EAAAA,0BAAAA,yBAEAA,EAAAA,4BAAAA,2BACAA,EAAAA,0BAAAA,wBACD,EAZD,CAAYA,KAAAA,GAAoB,KAchC,QAAevoE,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEioB,MAAOplB,OAAQhC,MAAOgC,QAC/BqD,QACE,MAAMqoE,GAAiBjoE,EAAAA,EAAAA,KAAInD,OAAO4b,OAAOuvD,KACzC,MAAO,CAAEC,iBACX,IEtB6T,M,uBCAxF,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYtsE,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAQ,EAAI,MAACwxD,GAAsC,oB,OAAC,cAAwO,qBAAiB,C,MAAC,CAAkE,MAAQ7uE,EAAI8uE,MAAe,WAAe,6BAAE,oBAAC,MAAQ,EAAI,eAAoB,kBAAG,MAAC,uB,GAA0B,CAAiC,kBAAC,yBAAG,KAA3b,Q,MAAC,CAAkB,eAAgB,GAAkD,MAAQ,EAAI,MAAoB,4DAAG,MAAC,uB,GAA0B,CAAiC,kBAAC,yBAAG,IAItV,E,MCJ4CxsE,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAkB,oB,OAAC,OAAYpB,C,MAAM,CAAoC,MAAQlB,EAAIsoB,MAAM,eAAmBjT,EAAAA,WAAY,cAAG,eAAC,e,GAA0B,CAAiC,kBAAE,yBAAC9M,G,YAAwC,EAAS,K,IAAE2N,YAAK,GAAE,eAAC,IAA4E,+DAAC7T,GAAWmG,C,IAAc0N,OAAK,GAAE,eAAC,IAA4E,+DAAG,MAIvhB,E,MCAA,MAAM64D,GAAoBvrE,OAAO4b,OAAOjH,IAExC,QAAe/R,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAOgC,OAAQolB,MAAOplB,OAAQmS,YAAarS,QAAS8lB,MAAOhR,OACpEvR,QACE,MAAMyoE,GAAaroE,EAAAA,EAAAA,KAAIooE,IACvB,MAAO,CAAEC,aACX,ICXgT,M,uBCAxF,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QChBhC,IAAe5oE,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAOgC,OAAQnD,KAAMmD,QAC9BmD,WAAY,CAAE4oE,iBAAgBA,IAC9B1oE,MAAM4U,GACJ,MAAM0zD,GAAcrqE,EAAAA,EAAAA,WAAS,IAEzB2W,EAAEpb,OAAS4uE,GAAqBO,4BAChC/zD,EAAEpb,OAAS4uE,GAAqBQ,2BAG9BL,GAAiBnoE,EAAAA,EAAAA,KAAI,CACzBwR,GAAAA,YACAA,GAAAA,UACAA,GAAAA,aACAA,GAAAA,UACAA,GAAAA,QACAA,GAAAA,YACAA,GAAAA,WACAA,GAAAA,KACAA,GAAAA,eACAA,GAAAA,eAEF,MAAO,CAAE02D,cAAaC,iBACxB,IC7B4T,M,uBCAxF,GAAe,KCOjP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5B7tE,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAUtC,EAAI2C,MAAMwzB,YAAY,OAAO7zB,EAAG,iBAAiB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,MAAQlB,EAAI+R,GAAG,kDAAkD,cAAc/R,EAAI+R,GAAG,gDAAgD,MAAQ/R,EAAI+R,GAAG,kDAAkD,SAAW/R,EAAI+R,GAAG,oDAAoD,MAAQ,CAAC/R,EAAI86D,OAAOiL,YAAY,cAAc,CAAC/lE,EAAI86D,OAAOiL,YAAY,IAAM,GAAGvjE,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,IACxiB,EACIvR,GAAkB,GCEtB,IAAegG,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAO4W,MAAO/X,KAAMmD,QAC7BmD,WAAY,CAAEiiE,eAAcA,MCNiS,M,uBCAxF,GAAe,KCOlP,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYhmE,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAsB,oB,OAAC,OAAiB,C,MAAC,CAA6D,eAAYpB,GAAM,MAAQ,EAAI,GAAC45D,6BAAiB,eAAE,cAAG,MAAC,uB,GAA0B,CAAiC,kBAAC,yBAAG,IAI9T,E,MCDA,IAAe10D,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAEN,KAAMmD,OAAQhC,MAAOgC,UCJyR,M,uBCAxF,GAAe,KCO9O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYZ,GAAOK,W,IAAS0a,EAAM,KAAuB,EAAO/a,EAAG,SAAsB,oB,OAAC,OAAiB,C,MAAC,CAA+D,eAAYpB,GAAM,MAAQ,EAAI,GAAC45D,8BAAiB,gBAAE,cAAG,MAAC,uB,GAA0B,CAAiC,kBAAC,yBAAG,IAIhU,E,MCDA,IAAe10D,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAOgC,OAAQnD,KAAMmD,UCJ4R,M,uBCAxF,GAAe,KCO/O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCGhC,IAAekD,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CAAEa,MAAO8B,QAASuG,KAAM/F,QAC/B6C,WAAY,CACR+oE,2BAA0B,GAC1BC,8BAA6B,GAC7BC,6BAA4B,GAC5BC,8BAA6B,GAC7BC,0BAAyB,GACzBC,2BAA0BA,IAE9BlpE,MAAM4U,GACF,MAAMwT,GAAUhoB,EAAAA,EAAAA,KAA8B,IACxC+oE,GAAa/oE,EAAAA,EAAAA,KAAiC,IAC9CgpE,GAAkBhpE,EAAAA,EAAAA,MAAI,GACtB+nE,GAAc/nE,EAAAA,EAAAA,KAAInD,OAAO4b,OAAO+tD,KAChCyB,GAAiBjoE,EAAAA,EAAAA,KAAInD,OAAO4b,OAAOuvD,MACnC,SAAEpjE,IAAa27B,EAAAA,GAAAA,IAAYjZ,OAEjCrqB,EAAAA,EAAAA,QACI,IAAMuX,EAAE5R,OACP4I,IACG,MAAMy9D,EAAgE,GACtEz9D,EAAE09D,oBAAoB/zD,SAASwW,IAC3Bs9C,EAAWhwE,KAAK,CACZG,KAAMotE,GAAkB2C,OACxB56D,KAAMod,EAAEw9C,OAAO18D,WACf2B,MAAO,GACPg7D,SAAUz9C,EAAEy9C,UACd,IAEN59D,EAAE69D,kBAAkBl0D,SAASwW,IACzBs9C,EAAWhwE,KAAK,CACZG,KAAMotE,GAAkB8C,UACxB/6D,KAAMod,EAAEi9B,UACRx6C,MAAOud,EAAE49C,YACTH,SAAUz9C,EAAEy9C,UACd,IAEN59D,EAAEg+D,kBAAkBr0D,SAASwW,IACzBs9C,EAAWhwE,KAAK,CACZG,KAAMotE,GAAkBiD,UACxBl7D,KAAMod,EAAErb,OACRlC,MAAO,GACPg7D,SAAUz9C,EAAEy9C,UACd,IAEN59D,EAAEk+D,0BAA0Bv0D,SAASwW,IACjCs9C,EAAWhwE,KAAK,CACZG,KAAMotE,GAAkBmD,UACxBp7D,KAAMod,EAAEi+C,qBACRx7D,MAAOud,EAAEi9B,UACTwgB,SAAUz9C,EAAEy9C,UACd,IAENphD,EAAQztB,MAAQ0uE,EAAWrvC,MAAK,CAACjO,EAAGC,IAAMD,EAAEy9C,SAAWx9C,EAAEw9C,WACzD,MAAMS,EAA6C,GACnDr+D,EAAEs+D,wBAAwB30D,SAASrM,IAC/B+gE,EAAc5wE,KAAK,CACfG,KAAM0P,EAAEihE,UACF/B,GAAqBgC,uBACrBhC,GAAqBiC,yBAC3BC,UAAW,GACXpsE,KAAMgL,EAAEqhE,wBACV,IAEN3+D,EAAE4+D,wBAAwBj1D,SAASrM,IAC/B+gE,EAAc5wE,KAAK,CACfG,KAAM0P,EAAEihE,UACF/B,GAAqBqC,uBACrBrC,GAAqBsC,yBAC3BJ,UAAW,GACXpsE,KAAMgL,EAAEyhE,wBACV,IAEN/+D,EAAEg/D,0BAA0Br1D,SAASrM,IACjC+gE,EAAc5wE,KAAK,CACfG,KAAM0P,EAAEihE,UACF/B,GAAqBQ,yBACrBR,GAAqBO,2BAC3B2B,UAAWphE,EAAE2hE,mBACb3sE,KAAMgL,EAAE4hE,aACV,IAENl/D,EAAEm/D,6BAA6Bx1D,SAASrM,IACpC+gE,EAAc5wE,KAAK,CACfG,KAAM0P,EAAEihE,UACF/B,GAAqB4C,4BACrB5C,GAAqB6C,8BAC3BX,UAAWphE,EAAEgiE,iBACbhtE,KAAMgL,EAAE4hE,aACV,IAEN3B,EAAWxuE,MAAQsvE,EACnBb,EAAgBzuE,MAAQiR,EAAEu/D,uBAAuB,GAErD,CAAE3nE,WAAW,EAAMlG,MAAM,IAG7B,MAAM8tE,EAAkB,KACpBjC,EAAWxuE,MAAMtB,KAAK,CAClBixE,UAAW,GACXpsE,KAAM,GACN1E,KAAM4uE,GAAqBO,4BAC7B,EAGAX,EAAmBxyD,IACjBA,GAAK,IACL2zD,EAAWxuE,MAAMq1B,OAAOxa,EAAG,GAC3B2zD,EAAWxuE,MAAQ,IAAIwuE,EAAWxuE,O,EAIpCutE,EAAe,KACjB9/C,EAAQztB,MAAMtB,KAAK,CACfsV,KAAM,GACNH,MAAO,GACPhV,KAAMotE,GAAkB8C,WAC1B,EAGAzB,EAAgBzyD,IACdA,GAAK,IACL4S,EAAQztB,MAAMq1B,OAAOxa,EAAG,GACxB4S,EAAQztB,MAAQ,IAAIytB,EAAQztB,O,EAI9B0wE,EAAqBv3D,IACvB,GAAIA,EAAQ,EAAG,CACX,MAAMoH,EAASkN,EAAQztB,MAAMmZ,GACvBw3D,EAAUljD,EAAQztB,MAAMmZ,EAAQ,GACtCsU,EAAQztB,MAAMmZ,GAASw3D,EACvBljD,EAAQztB,MAAMmZ,EAAQ,GAAKoH,EAC3BkN,EAAQztB,MAAQ,IAAIytB,EAAQztB,M,GAI9B4wE,EAAsB7qE,UACxB,GAAIoT,EAAQsU,EAAQztB,MAAM4X,OAAS,EAAG,CAClC,MAAM2I,EAASkN,EAAQztB,MAAMmZ,GACvBw3D,EAAUljD,EAAQztB,MAAMmZ,EAAQ,GACtCsU,EAAQztB,MAAMmZ,GAASw3D,EACvBljD,EAAQztB,MAAMmZ,EAAQ,GAAKoH,EAC3BkN,EAAQztB,MAAQ,IAAIytB,EAAQztB,M,GAI9BjB,GAAOuE,EAAAA,EAAAA,WAA8C,KACvD,MAAM3D,EAAqC,CACvCoI,GAAIkS,EAAE5R,MAAMN,GACZ8oE,SAAU52D,EAAE5R,MAAMwoE,WAAY,EAC9BC,gBAAiB72D,EAAE5R,MAAMyoE,gBACzBC,SAAU92D,EAAE5R,MAAM0oE,SAClBC,UAAW/2D,EAAE5R,MAAM2oE,UACnB3mE,SAAUA,EAASrK,MACnBwwE,wBAAyB/B,EAAgBzuE,MACzC8uE,iBAAkB,GAClBK,yBAA0B,GAC1BF,iBAAkB,GAClBgB,yBAA0B,GAC1BG,4BAA6B,GAC7Bb,uBAAwB,GACxBZ,mBAAoB,GACpBkB,uBAAwB,IAgE5B,OA9DApiD,EAAQztB,MAAM4a,SAAQ,CAACwW,EAAGvW,KAClBuW,EAAEvyB,OAASotE,GAAkB8C,UAC7BpvE,EAAKmvE,iBAAiBpwE,KAAK,CACvB2vD,UAAWj9B,EAAEpd,KACbg7D,YAAa59C,EAAEvd,MACfg7D,SAAUh0D,IAEPuW,EAAEvyB,OAASotE,GAAkBmD,UACpCzvE,EAAKwvE,yBAAyBzwE,KAAK,CAC/B2wE,qBAAsBj+C,EAAEpd,KACxBq6C,UAAWj9B,EAAEvd,MACbg7D,SAAUh0D,IAEPuW,EAAEvyB,OAASotE,GAAkBiD,UACpCvvE,EAAKsvE,iBAAiBvwE,KAAK,CACvBqX,OAAQqb,EAAEpd,KACV66D,SAAUh0D,IAEPuW,EAAEvyB,OAASotE,GAAkB2C,QACpCjvE,EAAKgvE,mBAAmBjwE,KAAK,CACzBkwE,OAAQ3sE,OAAOmvB,EAAEpd,MACjB66D,SAAUh0D,G,IAItB2zD,EAAWxuE,MAAM4a,SAASrM,IAElBA,EAAE1P,OAAS4uE,GAAqBO,4BAChCz/D,EAAE1P,OAAS4uE,GAAqBQ,yBAEhCtuE,EAAKswE,yBAAyBvxE,KAAK,CAC/B8wE,UAAWjhE,EAAE1P,OAAS4uE,GAAqBQ,yBAC3CkC,YAAa5hE,EAAEhL,KACf2sE,mBAAoB3hE,EAAEohE,YAG1BphE,EAAE1P,OAAS4uE,GAAqB6C,+BAChC/hE,EAAE1P,OAAS4uE,GAAqB4C,4BAEhC1wE,EAAKywE,4BAA4B1xE,KAAK,CAClC8wE,UAAWjhE,EAAE1P,OAAS4uE,GAAqB4C,4BAC3CF,YAAa5hE,EAAEhL,KACfgtE,iBAAkBhiE,EAAEohE,YAGxBphE,EAAE1P,OAAS4uE,GAAqBiC,0BAChCnhE,EAAE1P,OAAS4uE,GAAqBgC,uBAEhC9vE,EAAK4vE,uBAAuB7wE,KAAK,CAC7B8wE,UAAWjhE,EAAE1P,OAAS4uE,GAAqBgC,uBAC3CG,uBAAwBrhE,EAAEhL,OAG9BgL,EAAE1P,OAAS4uE,GAAqBsC,0BAChCxhE,EAAE1P,OAAS4uE,GAAqBqC,wBAEhCnwE,EAAKkwE,uBAAuBnxE,KAAK,CAC7B8wE,UAAWjhE,EAAE1P,OAAS4uE,GAAqBqC,uBAC3CE,uBAAwBzhE,EAAEhL,M,IAI/B5D,CAAI,IAGf,MAAO,CACH8tB,UACA+gD,aACAC,kBACAjB,cACAE,iBACA3uE,OACA0xE,kBACApD,kBACAE,eACAD,eACAoD,oBACAE,sBAER,IC9QuT,M,uBCAxF,GAAe,KCO9O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBgFhyE,GAAM,W,IAAC,EAAM,K,EAAI,EAAO,MAAC,GAAc,oB,OAACyI,EAAAA,GAAAA,EAAgBwI,C,MAAqB,CAAYvI,KAAG,G,MAAkB,e,YAA6D,aAAiN,KAAjN,CAAK,IAAC,YAAmBxI,GAAIqR,WAA0H9O,MAAW,GAAC,YAAkB,gCAACzC,EAAO,OAAO,IAAa,U,CAA4B,KAAO,UAAKguE,EAAQmE,KAAQ,Q,YAAY,mB,MAAI,CAAkB,kBAAG,qBAAC,OAAC,MAAQ,UAAStgE,S,UAAe8f,GAAkB,eAAC,I,GAA0B,C,MAAiH5e,SAAAA,GAAkB,mBAAC,E,MAAgC7S,SAAU,G,IAAcA,EAAI8tE,KAAO,8E,EAAEmE,gB,EAAmB,kBAAC,2BAAO,UAAmC,SAAY/wE,GAC16B,KADmiB,uDAIpiB,EAASD,GAAAA,GAAQb,EAAAA,GAAAA,UAAe,M,2BCAhC,IAAegG,EAAAA,EAAAA,iBAAgB,CAC7B/F,MAAO,CAAEa,MAAOsC,OAAQm0D,KAAM30D,QAASqF,MAAOnF,QAC9CqD,MAAM4U,GACJ,MAAM2yD,GAAUtpE,EAAAA,EAAAA,WAAS,IAAM2W,EAAEja,QACjC,MAAO,CAAE4sE,UACX,ICTuT,MCOrT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCVhC,IAAe1nE,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAE8rE,0BAAyB,GAAEC,wBAAuBA,IAChE7rE,QACI,MAAM02C,GAAct2C,EAAAA,EAAAA,KAAI,MAClB0rE,GAAW1rE,EAAAA,EAAAA,KAAsC,IACjDunE,GAAkBvnE,EAAAA,EAAAA,KAA+B,CAAC,GAClDonE,GAAepnE,EAAAA,EAAAA,MAAI,GACnB2nE,GAAY3nE,EAAAA,EAAAA,MAAI,GAChBwnE,GAAuBxnE,EAAAA,EAAAA,MAAI,GAC3B2rE,GAAuB3rE,EAAAA,EAAAA,MAAI,GAC3B4rE,GAAa5rE,EAAAA,EAAAA,KAA2C,MACxDynE,GAAiBznE,EAAAA,EAAAA,KAAI,YACrB0nE,GAAoB1nE,EAAAA,EAAAA,MAAI,GACxB6rE,GAAgB7rE,EAAAA,EAAAA,MAAI,GAC1B8d,KAAoBjV,MAAMG,IACtB,IACI0iE,EAASnxE,MAAQyO,EACjB2+D,EAAUptE,OAAQ,C,CACpB,MAAOwG,KACLlG,EAAAA,EAAAA,IAAW,2C,KAGnB,MAAMixE,EAAexrE,UACjB,IACIqnE,EAAUptE,OAAQ,EAClBmxE,EAASnxE,YAAcujB,KACvB+tD,EAActxE,OAAQ,C,CACxB,QACEotE,EAAUptE,OAAQ,C,GAGpBwxE,EAAwB,KAC1BvE,EAAqBjtE,OAAQ,EAC7BktE,EAAeltE,MAAQ,WACvBqxE,EAAWrxE,MAAQ,CACf+H,IAAK,EAAIiK,KAAK2P,KAAqB,IAAhB3P,KAAKC,UACxB4+D,UAAU,EACVE,SAAU7D,EAAeltE,MACzB8wE,gBAAiB,QACjBE,UAAWG,EAASnxE,MAAM4X,OAAS,EACnC44D,yBAAyB,EACzBnmE,SAAU,KACV+lE,4BAA6B,CAAC,CAAEG,iBAAkB,GAAIf,WAAW,EAAOW,YAAa,KACrFrB,iBAAkB,CAAC,CAAEzgB,UAAW,GAAI2gB,YAAa,GAAIH,SAAU,IAClE,EAEC4C,EAA2B1rE,UAC7B,IACI8mE,EAAa7sE,OAAQ,EACrB,MAAM0xE,QAAkBhuD,GAAiB,IAClCkpD,EACHmE,SAAU7D,EAAeltE,QAE7BmxE,EAASnxE,MAAQ,IAAImxE,EAASnxE,MAAO0xE,E,CACvC,MACEJ,EAActxE,OAAQ,C,CACxB,QACEitE,EAAqBjtE,OAAQ,EAC7B6sE,EAAa7sE,OAAQ,C,GAGvB2xE,EAAuB5rE,UACzB,IACI8mE,EAAa7sE,OAAQ,QACfyjB,GAAiBmpD,EAAQ7kE,GAAI6kE,IACnCpsE,EAAAA,EAAAA,IAAa,+B,CACf,MACE8wE,EAActxE,OAAQ,C,CACxB,QACE6sE,EAAa7sE,OAAQ,C,GAGvB4xE,EAAqB7rE,UACvB,GAAIoT,EAAQ,EACR,IACI0zD,EAAa7sE,OAAQ,EACrB,MAAMugB,EAAS4wD,EAASnxE,MAAMmZ,GACxBw3D,EAAUQ,EAASnxE,MAAMmZ,EAAQ,GACvCg4D,EAASnxE,MAAMmZ,GAASw3D,EACxBA,EAAQK,UAAY73D,EACpBg4D,EAASnxE,MAAMmZ,EAAQ,GAAKoH,EAC5BA,EAAOywD,UAAY73D,EAAQ,EAC3Bg4D,EAASnxE,MAAQ,IAAImxE,EAASnxE,aACxB2jB,GAAmBwtD,EAASnxE,M,CACpC,MACEsxE,EAActxE,OAAQ,C,CACxB,QACE6sE,EAAa7sE,OAAQ,C,GAI3B8sE,EAAuB/mE,UACzB,GAAIoT,EAAQg4D,EAASnxE,MAAM4X,OAAS,EAChC,IACIi1D,EAAa7sE,OAAQ,EACrB,MAAMugB,EAAS4wD,EAASnxE,MAAMmZ,GACxBw3D,EAAUQ,EAASnxE,MAAMmZ,EAAQ,GACvCg4D,EAASnxE,MAAMmZ,GAASw3D,EACxBA,EAAQK,UAAY73D,EACpBg4D,EAASnxE,MAAMmZ,EAAQ,GAAKoH,EAC5BA,EAAOywD,UAAY73D,EAAQ,EAC3Bg4D,EAASnxE,MAAQ,IAAImxE,EAASnxE,aACxB2jB,GAAmBwtD,EAASnxE,M,CACpC,MACEsxE,EAActxE,OAAQ,C,CACxB,QACE6sE,EAAa7sE,OAAQ,C,GAI3B+sE,EAAgBhnE,UAClB,GAAIoT,GAAS,EACT,IACI0zD,EAAa7sE,OAAQ,EACrB,MAAO6xE,GAAcV,EAASnxE,MAAMq1B,OAAOlc,EAAO,GAClDg4D,EAASnxE,MAAQ,IAAImxE,EAASnxE,OAC1B6xE,UACMruD,GAAiBquD,EAAW9pE,KAClCvH,EAAAA,EAAAA,IAAa,gC,CAEnB,MACE8wE,EAActxE,OAAQ,C,CACxB,QACE6sE,EAAa7sE,OAAQ,C,GAI3B8xE,EAA4B/rE,MAAO6mE,EAAyCiE,KAC9E,IACIjE,EAAQiE,SAAWA,QACbptD,GAAiBmpD,EAAQ7kE,GAAI6kE,IACnCpsE,EAAAA,EAAAA,IAAa,WAAWosE,EAAQmE,eAAeF,EAAW,SAAW,a,CACvE,MACEjE,EAAQiE,UAAYA,GACpBvwE,EAAAA,EAAAA,IAAW,yC,GAGnB,MAAO,CACHy7C,cACAo1B,WACAlE,uBACAwE,2BACAD,wBACAxE,kBACAE,iBACA0E,qBACA9E,uBACAC,gBACA4E,uBACAN,aACAxE,eACAM,oBACAmE,gBACAC,eACAO,4BACA1E,YACAgE,uBAER,ICtKyS,MCOzS,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClByG,W,IAAoB,OAAuB,EAAC,WAAC/pE,EAAYvI,MAAM,Y,OAAM,EAAC,cAAe,gB,MAAI,C,aAAwBc,O,MAAmCyB,iB,YAA0B,EAAQ,K,uBAA8B,WAAC,MAAGvC,CAAG,EAAG,QAAM,EAAO,KAAC,CAACuC,YAAY,OAAOzC,MAAM,CAAC,MAAQ,YAAY,oBAAK,OAAQ,MAAS6R,C,YAAe3R,O,MAAqB,CAAC,mBAAiBF,GAAAA,CAAO,MAAQ,YAAE,0BAAIE,IAA2D,GAAC,KAAM,OAAO,WAA8EG,CAAE,EAAC,cAAoB,GAAE,0BAAS,GAACoC,EAA0BvC,OAAO,MAAmGF,CAAAA,EAAK,KAAC,4B,YAAW,aAAG,qCAAE,YAAS,aAAyF,MAAS,gBAAM,iCAA8F,OAA9F,gB,YAAKic,cAAC,MAAM,CAAMxZ,QAAW,M,CAA2DzC,EAAAA,GAAM,0E,OAAC,EAAM,KAAC,CAAE,IAAC,GAAC0C,CAAE,EAAC,M,YAAS,a,GAAiB,OAAWywE,EAAAA,GAAAA,EAAAA,MAAiBC,KAAG,O,MAAA,CAAC,SAAmD3wE,GAAAA,CAA0BD,MAAG,SAAgB,GAAExC,OAAM,qBAAC,I,CAAwC,MAAS,GAAKgD,GAAAA,WAAa,e,YAAW,aAAmF,qBAACN,MAAG,CAAC,MAAQ,S,cAA4B2wE,QAAmC,yBAAC,4FAAY,GAAI,CAAoB5qE,MAAYvI,SAAQ,GAAI,OAAC,EAAS,4BAAG,MAAoB,I,UAAC,EAAQsC,cAAG,C,YAAiC,O,2BAA+B,M,UAA4E,GAAC,0BAAS,C,MAAI,C,MAAkB,oB,QAAQ,wC,YAAWrC,EAAAA,GAAAA,CAAAA,CAAK,IAAE,U,GAAC,UAAW,Q,EAAkB,O,EAAC,Q,EAAyB,K,IAAgB,MAAM,iBAAe,CAASH,GAAAA,CAAO,MAAO,SAAQ,GAAC,OAAQ,GAAY,KAA8C,QAAUgB,EAAAA,EAAAA,EAAO,C,MAAC,CAAc,cAAG,MAAC,YAAC,UAAQ,G,UAAwB+R,GAAc,E,QAAWrD,EAAoC,QAAG,GAAExP,CAA4B,MAAW,SAAS,GAACF,EAAM,iBAAC,IAAO,+BAAE,IAAyC,GAAI,uCAAQ,MAAK,CAAI,UAAI,+BAAO,QAAM,IAAmC,MAAC,KAA2C,KAAkC,OAAI,MAAM,EAAC,oBACx0E,qBACGM,EAAAA,oBAAoB,CAExB,E,mDCQA,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEiiE,eAAc,GAAEtN,qBAAoBA,IAClDz0D,QACI,MAAM6sE,GAAezsE,EAAAA,EAAAA,KAA6B,IAC5C0sE,GAAsB1sE,EAAAA,EAAAA,MAAI,GAC1B2sE,GAAoB3sE,EAAAA,EAAAA,KAAoC,CAAC,GACzD7F,GAAU6F,EAAAA,EAAAA,MAAI,GACd4sE,EAActsE,UAChB,IACInG,EAAQI,OAAQ,EAChBkyE,EAAalyE,YAAc4kB,I,CAC7B,QACEhlB,EAAQI,OAAQ,C,GAGxBqyE,IACA,MAAMC,EAAiBvsE,UACnB,IACInG,EAAQI,OAAQ,EACZoyE,EAAkBpyE,MAAM+H,SAClBid,GAAe,CACjBjd,GAAIqqE,EAAkBpyE,MAAM+H,GAC5BnG,KAAMjC,EAAK6c,KACX+I,OAAQ6sD,EAAkBpyE,MAAMulB,QAAU,WAGxCT,GAAkB,CACpB/c,IAAK,EACLnG,KAAMjC,EAAK6c,KACX+I,OAAQ,I,CAGlB,QACE3lB,EAAQI,OAAQ,C,OAEdqyE,GAAa,EAEjBJ,EAA0BlsE,MAAOisE,EAA2BzsD,KAC9D,IACI3lB,EAAQI,OAAQ,EAChBgyE,EAAGzsD,OAASA,QACNP,GAAegtD,E,CACvB,QACEpyE,EAAQI,OAAQ,C,OAEdqyE,GAAa,EAEjBE,EAAkB,KACpBH,EAAkBpyE,MAAQ,CAAC,EAC3BmyE,EAAoBnyE,OAAQ,CAAI,EAE9B+xE,EAAoBhtD,IACtBqtD,EAAkBpyE,MAAQ+kB,EAC1BotD,EAAoBnyE,OAAQ,CAAI,EAEpC,MAAO,CACHkyE,eACAG,cACAF,sBACAC,oBACAE,iBACAC,kBACAR,mBACAnyE,UACAqyE,0BAER,IC9E0S,MCO1S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClB8L,W,IAAgB3qE,EAAG,K,EAAW,QAAW,GAA2B,EAAC,kB,SAAC,WAAU,kBAAgB,C,oBAAyB,O,MAAE,8B,YAA0B,O,wCAA+B,4B,GAAC,C,QAA2BjG,SAAY,G,OAAY,EAAC,a,eAA4BD,EAAG,K,IAAUxC,Y,aAAc,G,IAA2C,mBAAI,mBAAM,MAAC,CAAM,MAAMknE,cAAsC,GAACA,CAAAA,EAAQ,IAAI,CAAC,OAACzlE,MAAW,KAAc,iCAAC,KAAa,OAAO,QAAc,SAAQ,qBAAC,EAAUvB,SAAW,CAAC,EAAsB,WAAY0zE,cAA0BnrE,EAAqBlG,OAAK,M,GAA4B6T,GAAAA,EAAAA,C,MAAO,C,QAAWA,EAAI,Q,QAA0B,U,MAAC,W,WAAc,M,YAA0B,O,gCAA0B1T,K,WAAiC1C,EAAK,KAAud,OAAtd,Q,kBAAU,I,YAA+C,OAAG,IAAC,YAAawC,GAAG,UAAS,GAACxC,IAAiB,mBAAO,OAAkB,UAA0B,GAAOE,CAAAA,EAAI2zE,EAAAA,EAAAA,CAAAA,EAAaz9D,GAAAA,gBAAK,OAAC,UAAG,CAAC5T,EAAG,MAAkK,OAAG,WAAmB,QAAS,CAAE4T,GAAAA,CAAO,kBAAC,OAAW,EAAK,aAAC,EAAC3T,IAAyD,gGAAE,GAAEF,CAAmBmG,IAAG,W,GAAW0N,UAAAA,KAAM,I,MAA2C,GAAC,O,YAAS,iBAAO,qB,0BAA8D,eAAC,IAA0B,MAAK,GAAI,eAAO,OAA6B,gBAA6B,+BAAI,OAAC,MAAU,QAAyC,kBAAE,IAAC7U,MAAM,KAACH,EAAAA,sBAAqB,C,MAACkB,C,QAA6BwjE,EAAS,e,GAAMrkE,CAAsB,oBAAM,OAAK,eACh2D,GAGD,MAASN,C,+FCJLA,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,sBAAsB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI4zE,QAAQ,QAAU5zE,EAAI+c,MAAMC,GAAG,oBAAoBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,MAAE8I,IAAS,MAAO,CAAClP,EAAG,wBAAwB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,kBAAmBK,WAAW,sBAAsBzB,MAAM,CAAC,MAAQG,EAAK,MAAQ,OAAS,MAAQyI,EAAQ,KAAOgJ,GAAQlP,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAIod,yBAAyBzL,IAAQ,KAAK,IAAI,MAAK,IAChuB,EACIvR,GAAkB,GCFsBkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAwC,EAAS0U,GAAAA,CAAAA,C,IAAU,YAA+C,eAAG,qCAAC5a,GAAcmG,C,IAAcgJ,UAAM,GAAE,gBAAC,I,MAAsC,sBAAuB,C,MAAC,CAAsB,SAAWoiE,EAAAA,SAAQ,kBAACrrE,KAAAA,EAAYvI,S,YAA0B,EAAS,K,IAAEC,U,GAAMyI,UAAO,KAAEnI,EAAAA,QAAOmR,EAAAA,MAAQ,EAAC,OAAC,I,MAA8B,GAAO,cAAUC,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAkD,QAASoP,EAAM,mBAAC,OAAkB,OAAQnR,EAAM,QAAQiR,EAAO,MAAC,YAAiB,eAAgB,IACxtB,UAGD,E,MCJ4D,GAAU,W,IAAa1R,EAAM,K,EAAC,EAAO,MAAC,G,OAAU,cAAW,C,MAA8D,CAAsB,gBAACyI,SAAYvI,8DAASqC,QAAI,EAAS,S,YAAqB,O,IAAEqR,UAAM,GAAE,iBAAC,Q,UAA+D,GAAS,GAAC1T,UAAW,MAAC,OAAUA,KAAY,OAAQ0T,EAAO,QAAC,4BAAI,MAAU,IAAQxS,IAAoBkB,MAAQ,G,MAAoB,CAAY,MAAC,UAACb,SAAU,SAAC,GAAS,WAAIe,EAAmBxC,WAAM,Y,CAAgB,OAAcg7D,C,MAAwC,CAAc,UAAQ,GAAO,6CAACz5D,SAAM,GAACH,MAAOlB,Q,MAAsC,CAAS,MAAC,OAACuB,SAAU,SAAC,GAAM,QAAIe,EAAmBxC,WAAM,UAAmC,OAAQ,CAAK,MAAC,CAACuB,MAAM,sBAACH,MAAOlB,O,MAAqC,CAAQ,MAAC,MAACuB,SAAU,SAAC,GAAK,OAAIe,EAAiBxC,WAAM,SAAmB,QAACuB,MAAM,CAACH,MAAOlB,W,MAAyC,CAAY,MAAC,UAACuB,SAAU,SAAC,GAAS,WAAI,EACz+B,yBAGD,E,QCAA,IACIlB,MAAO,CAAES,QAASkC,QAASuG,KAAM/F,QACjC+C,MAAMlG,GACF,MAAM4I,GAAKtC,EAAAA,EAAAA,KAAYtG,EAAMkJ,MAAMN,KAAO,GACpCnG,GAAO6D,EAAAA,EAAAA,KAAYtG,EAAMkJ,MAAMzG,MAAQ,IACvC+wE,GAAcltE,EAAAA,EAAAA,KAAY7D,EAAK5B,OAAS,IACxC+zC,GAAMtuC,EAAAA,EAAAA,KAAYtG,EAAMkJ,MAAM0rC,KAAO,IACrCvQ,GAAU/9B,EAAAA,EAAAA,KAAatG,EAAMkJ,MAAMm7B,UAAW,GAC9Ch8B,GAAU/B,EAAAA,EAAAA,MAAa,GAEvBmtE,GAAgBntE,EAAAA,EAAAA,KAAc,IAC9BotE,EAAkB7yE,GACb2yE,EAAY3yE,OAAS4B,EAAK5B,QAAU4yE,EAAc5yE,MAAMsL,SAAStL,IAEtE,6BAGNsmC,EAAAA,EAAAA,YAAUvgC,UACN6sE,EAAc5yE,YAAc0kB,IAA0B,IAG1D,MAAM3lB,GAAOuE,EAAAA,EAAAA,WAAS,KACX,CACHyE,GAAIA,EAAG/H,MACP4B,KAAMA,EAAK5B,MACX+zC,IAAKA,EAAI/zC,MACTwjC,QAASA,EAAQxjC,MACjB8yE,WAAY,OAIpB,MAAO,CACH/qE,KACAnG,OACAmyC,MACAvQ,UACAh8B,UACAzI,OACA6zE,gBACAC,iBAER,EACAnwE,MAAO,CACH,UAAW,SAAUwc,EAAQC,GACzBve,KAAKmH,GAAKmX,CACd,EACA,YAAa,SAAUA,EAAQC,GAC3Bve,KAAKgB,KAAOsd,CAChB,EACA,WAAY,SAAUA,EAAQC,GAC1Bve,KAAKmzC,IAAM70B,CACf,EACA,eAAgB,SAAUA,EAAQC,GAC9Bve,KAAK4iC,QAAUtkB,CACnB,IC1DwS,MCQ5S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QCjBhC,IACI/f,MAAO,CAAEa,MAAO8B,QAASlC,QAASkC,QAASkG,SAAUlG,QAAS4wE,QAASpwE,QACvE6C,WAAY,CAAE4tE,eAAgBA,IAC9BlzE,QAAS,CACL4S,OACI7R,KAAKgE,MAAM,SAAS,EACxB,ICR2S,MCO/S,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,QClB5B7E,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,gBAAgB,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAC3N,EACIvgB,GAAkB,GCoBtB,IACAC,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,oCACA,IC3B4Q,M,uBCA/C,GAAe,KCOxO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QClBhC,IACI6E,WAAY,CAAE6tE,kBAAiB,GAAEC,oBAAmBA,IACpD9zE,MAAO,CACHa,MAAO,CACHnB,KAAMiD,QACNxC,SAAS,GAEbozE,QAAS,CACL7zE,KAAMyD,OACNhD,QAAS,OAGjBO,QAAS,CACLqc,yBAAyBnd,IACrByB,EAAAA,EAAAA,IAAaI,KAAKiQ,GAAG,gDAAiD,CAAEqiE,YAAan0E,EAAK6C,QAC1FhB,KAAKgE,MAAM,UAAW7F,EAC1B,ICpB6S,M,uBCAxF,GAAe,KCOxO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5BgB,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,sBAAsB,CAACxC,MAAM,CAAC,MAAQE,EAAIkB,MAAM,QAAUlB,EAAI4zE,QAAQ,QAAU5zE,EAAI+c,MAAMC,GAAG,mBAAmBxa,GAAG,CAAC,MAAQ,SAASmP,GAAQ,OAAO3R,EAAI8F,MAAM,QAAS6L,EAAO,GAAGpJ,YAAYvI,EAAI+Q,GAAG,CAAC,CAAC1O,IAAI,YAAYmG,GAAG,SAASyU,GAAU,MAAO,CAACjd,EAAIqR,GAAG,YAAY,KAAK,KAAK4L,GAAU,GAAG,CAAC5a,IAAI,UAAUmG,GAAG,UAAS,KAAEvI,EAAI,OAAEyR,EAAM,QAAEhJ,EAAO,QAAE5H,EAAO,MAAE0Q,IAAS,MAAO,CAAClP,EAAG,sBAAsB,CAAC4a,WAAW,CAAC,CAACpa,KAAK,aAAaqa,QAAQ,eAAejc,MAAO,iBAAkBK,WAAW,qBAAqBzB,MAAM,CAAC,MAAQ,IAAKG,EAAMgJ,GAAIjJ,EAAI4zE,QAAQ3qE,IAAK,MAAQ,OAAS,MAAQP,EAAQ,KAAOgJ,EAAO,QAAU5Q,GAAS0B,GAAG,CAAC,QAAU,SAASmP,GAAQH,IAAQhC,MAAK,IAAMxP,EAAIod,yBAAyBnd,IAAM,KAAK,IAAI,MAAK,IAC/wB,EACIG,GAAkB,GCFlBa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,kBAAkBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAQ,kBAAiBE,EAAIkB,OAAS,CAAC,GAAG+H,KAAK,MAAQjJ,EAAIkB,MAAM,QAAU,MAAMsB,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,kBAAkB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACnQ,EACIvgB,GAAkB,GCqBtB,IACAC,MAAAA,IAAA,UACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,kCACA,IC5B0Q,M,uBCA/C,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QClBhC,IACI6E,WAAY,CAAE6tE,kBAAiB,GAAEG,kBAAiBA,IAClDh0E,MAAO,CACHa,MAAO,CACHnB,KAAMiD,QACNxC,SAAS,GAEbozE,QAAS,CACL7zE,KAAMyD,OACNhD,QAAS,OAGjBO,QAAS,CACLqc,yBAAyBnd,IACrByB,EAAAA,EAAAA,IAAaI,KAAKiQ,GAAG,6CAA8C,CAAEqiE,YAAan0E,EAAK6C,QACvFhB,KAAKgE,MAAM,UAAW7F,GACtB6B,KAAKgE,MAAM,eACf,ICrB2S,M,uBCAxF,GAAe,KCOtO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCRhC,IAAeM,EAAAA,EAAAA,iBAAgB,CAC3B5B,SAAU,CACNrD,UACI,MAAO,CACH,CACIS,KAAME,KAAKiQ,GAAG,QACd7Q,MAAO,OACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,sBACd7Q,MAAO,MACP+wB,UAAU,EACVhvB,MAAO,SAEX,CACIrB,KAAME,KAAKiQ,GAAG,6BACd7Q,MAAO,aACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,0BACd7Q,MAAO,UACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,WACd7Q,MAAO,UACP+wB,UAAU,GAGtB,GAEJ5rB,WAAY,CAAEiuE,oBAAmB,GAAEC,kBAAiBA,IACpDhuE,QACI,MAAMmtE,GAAW/sE,EAAAA,EAAAA,KAAyB,IACpCi/D,GAAYj/D,EAAAA,EAAAA,MAAI,GAChBqgE,GAAWrgE,EAAAA,EAAAA,MAAI,GACf6tE,GAAgB7tE,EAAAA,EAAAA,KAAgC,CAAC,GACjD7F,GAAU6F,EAAAA,EAAAA,MAAI,GACd4sE,EAActsE,UAChB,IACInG,EAAQI,OAAQ,EAChBwyE,EAASxyE,YAAc2kB,I,CACzB,QACE/kB,EAAQI,OAAQ,C,GAGxBqyE,IACA,MAAMI,EAAe1sE,UACjButE,EAActzE,YAAc6kB,GAAWE,EAAKhd,IAC5C28D,EAAU1kE,OAAQ,CAAI,EAE1B,MAAO,CACHwyE,WACAH,cACA3N,YACA4O,gBACAb,eACA7yE,UACAkmE,WAER,IC5E0S,M,uBCAxF,GAAe,KCQjO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvBoN,cAAC,IAAG1kE,EAAG,KAA4BxC,EAAK,EAAC,SAAC,EAAU,MAAK,Y,OAAC,OAAiB,CAAC,kB,YAAS,OAAkC,MAAC,CAACyI,MAAW,EAACvI,GAAI+Q,0BAAK1O,QAAI,mC,GAA6B,2BAAmB,C,MAACvC,C,UAAO,E,MAAmC,W,MAAI,oC,YAA0B,EAAOE,GAAG,CAACy0E,C,sBAAoB,WAAC,MAAM,OAAS,CAAC30E,MAAM,CAAC,UAAO,sBAAI,GAAEE,CAA4C,kBAAO,4BAAO,IAAa,GAAEA,EAAAA,EAAI00E,CAAatyE,MAAS,CAAoBsyE,KAAAA,KAAiBnzE,CAAAA,EAAU,GAAC,kCAAa,EAAIe,OAAG,K,MAAyb,CAAsB,oBAACxC,SAAM,YAAC,cAAU,CAAG,EAAIE,WAAO,iBAA+FqC,EAAG,KAAC0Z,CAAAA,EAAAA,qBAAAA,OAAAA,EAAAA,KAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,WAAAA,GAAAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,gDAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,EAAAA,QAAAA,CAAAA,EAAAA,KAAAA,CAAAA,EAAAA,KAAAA,CAAAA,EAAAA,GAAAA,iBAAAA,EAAAA,KAAAA,CAAAA,EAAAA,GAAAA,gBAAAA,EAAAA,KAAAA,CAAAA,EAAAA,GAAAA,WAAAA,EAAAA,UAAAA,EAAAA,QAAAA,CAAAA,IAAAA,EAAAA,qBAAAA,OAAAA,EAAAA,KAAAA,CAAAA,EAAAA,KAAAA,CAAC,YAAU,CAAyJxZ,aAAY,U,MAA2C,C,QAAS,M,CAAgB,EAAC,2E,OAAI,Q,IAAC,G,GAAyB,OAAWoyE,CAAAA,EAAAA,GAAQ,IAAG19D,EAAO,2G,YAAA,cAAC,iBAAE,MAAK,CAAUnX,KAAM,GAAC,MAAO,OAAI,GAAEE,CAAuDF,MAAM,YAAC,OAAO,oBAAG,I,CAAK,MAAQ,C,MAAiB,CAA2B,UAAI,CAACwC,EAAG,iBAAS,2BAACxC,MAAM,CAAC,KAAO,IAAI,GAAEE,CAAqDF,MAAM,YAAC,OAAO,EAAE,gBAAC,IAAe0C,CAAE,EAAC,K,MAAC,C,KAAyB,KAA+B,6CAAE,MAAK,CAAU1C,KAAM,GAAC,MAAO,OAAI,GAAEE,CAAkE,MAAQ,SAAO,GAC/jE,4BACGI,I,8GCIJ,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3BC,WAAY,CAAEimB,yBAAwBA,IACtC/lB,QACI,MAAMmuE,GAAc/tE,EAAAA,EAAAA,KAA8B,IAC5C4mB,EAAcU,MACd,WAAEnK,IAAeojB,EAAAA,GAAAA,IAAY3Z,GAE7BqnD,GAAuBpwE,EAAAA,EAAAA,WAAS,IAC7Bsf,EAAW5iB,MACTsC,OAAO4b,OAAO0E,EAAW5iB,OADF,KAG5B2zE,EAAY5tE,UACVkF,OAAO2oE,QAAQ,mCAAmCC,aAC5CntD,GAAiBmtD,SACjBxnD,EAAYqB,a,EAGpB+lD,EAAW1tE,UACTkF,OAAO2oE,QAAQ,kCAAkCC,aAC3CjtD,GAAeitD,SACfxnD,EAAYqB,a,EAGpB6lD,EAAoBxtE,UACtB,IAAK,MAAM5E,KAAOqyE,EAAYxzE,YACpBwmB,GAAgBrlB,EAAIob,IAE9Bi3D,EAAYxzE,MAAQ,SACdqsB,EAAYqB,YAAY,EAE5BomD,EAAS/tE,gBACL4gB,GAAaktD,SACbxnD,EAAYqB,YAAY,EAElC,MAAO,CAAE8lD,cAAa5wD,aAAY8wD,uBAAsBC,YAAWJ,oBAAmBE,WAAUK,SACpG,ICzC4S,M,uBCAxF,GAAe,KCQnO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCvB4H,cAAC,IAAG1yE,EAAG,KAAgBxC,EAAK,EAAC,SAAQ,EAAC,kB,OAAW,wBAAE,MAAK,CAAYA,KAAM,O,CAAwC,iBAAiB,C,MAAC,CAAuB,oBAA0C,SAAC0C,MAAG,CAAC,MAAQ,+B,MAAyBxC,EAAIi1E,MAAa,uBAAE,qBAAC5zE,QAAM,Y,GAA6Be,C,OAA6B8yE,SAAAA,GAAoB,sBAAC3zE,GAA+B,MAAI,CAAgBgB,MAAAA,EAAY,gBAAczC,SAAM,YAAC,kBAAqB,CAAC,EAAqB,WAAW,qBAA2B,OAAc,C,YAAc,c,MAAiB,CAAiC,kBAACyI,MAAW,EAACvI,SAASqC,WAAK,KAAgBmG,QAAG,EAAS,Q,eAAE0N,aAAK,cAAE,G,gBAAY,gB,YAAoB,EAAQ,GAAC,E,IAAG,iB,GAAC3N,UAAAA,K,UAAmD/F,CAAAA,EAAAA,GAAAA,EAAAA,C,MAAK,C,OAASF,IAAsF,YAAQ,EAAI,KAAIA,IAAG,YAA2C,gBAAG,IAAwB,MAAS,2EAAEnB,IAAS+U,MAAAA,IAAO,uC,2BAAiD,kBAAC,EAAM,KAA0C,IAAmB,MAAM,GAAG,KAAI,CAC5tC,OACG9V,QAAkB,EAAE,S,6ECIxB,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3BiC,QACI,MAAO,OACX,EACAhC,WAAY,CAAC,EAEbxF,OACI,MAAO,CACHyyD,MAAO,GACPnyD,QAAS,CACL,CACIS,KAAME,KAAKiQ,GAAG,aACd7Q,MAAO,YACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,aACd7Q,MAAO,aAEX,CACIU,KAAME,KAAKiQ,GAAG,eACd7Q,MAAO,eAEX,CACIU,KAAME,KAAKiQ,GAAG,YACd7Q,MAAO,WACP+wB,UAAU,GAEd,CACIrwB,KAAME,KAAKiQ,GAAG,UACd7Q,MAAO,kBAEX,CACIU,KAAM,GACNV,MAAO,sBAGfi0E,SAAU,GACVD,gBAAiB,KACjBp0E,SAAS,EACTs0E,cAAc,EAEtB,EACAr0E,QAAS,CACLk0E,aAAa3qD,EAAAA,GAAAA,IAAQ,eAAerjB,iBAChC+b,QAAQk1B,IAAIp2C,KAAKozE,iBACjBpzE,KAAKhB,SAAU,EAEf,IACI,MAAMu0E,QAAapzD,EAAAA,EAAAA,KAAAA,IAAe,uBAAuBngB,KAAKozE,mBAAmB1lE,MAAMG,GAAMA,EAAE9O,OAC/FiB,KAAKqzE,SAAWE,C,CAClB,QACEvzE,KAAKhB,SAAU,C,CAEvB,IACA+zD,UAAUvqC,EAAAA,GAAAA,IAAQ,YAAYrjB,iBAC1B,MAAMqsD,QAAcrxC,EAAAA,EAAAA,KAAAA,IAAe,yCAAyCzS,MAAMG,GAAMA,EAAE9O,OAE1FiB,KAAKwxD,MAAQA,CACjB,KAEJzxD,UACIC,KAAK+yD,UACT,ICrEuS,M,uBCAxF,GAAe,KCO9N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBgE,W,IAAM,O,EAAwB,QAAY,G,OAAI,OAAY,C,MAAM,CAAgB,SAAkB,qBAAiBxrB,GAA0B,cAAI/mC,YAAG,MAAsBxC,WAAM,GAAC,eAAcid,GAAiD,WAAYu4D,EAAAA,SAAa9hD,WAAO,SAAkB,yBAACjrB,MAAAA,CAAqBlG,QAAI,EAAS,gDAACmG,MAAG,eAAS,Q,cAAM,I,YAAiB,O,IAAE1H,UAAQ,GAAE,eAAC,S,EAAoBhB,Q,EAAO,Q,UAAoC,GAAC,K,MAAC,CAAS,eAAkHA,CAAAA,EAAK,IAAC,C,MAAC,CAAoB,KAAO4R,K,CAAsC,gBAAiB,0E,MAAC,CAAgB,kBAAG,KAAC,EAAC,UAAQ,GAASC,E,QAAekB,E,KAAiB,UAA4C,IAAIvQ,MAAG,SAAS,GAAQ,OAAPxC,EAAM,iBAAQ,+BAAE,IAA6E,QAAG,OAAO,UAEl9BM,CAAAA,EAAAA,GAAe,UAAK,kDAExB,Q,UCJ4D,GAAU,W,IAAaN,EAAM,K,EAAC,QAAUE,G,OAAY,cAAkB,C,MAA4C,CAAyI,kBAAwB,sDAACuI,SAAYvI,EAAI+Q,UAAI,kGAAC1O,mBAAa,G,YAAqB,O,IAAEqR,UAAM,GAAE,iBAAC,Q,UAAmF,CAAM,EAAC,mB,UAAY1T,EAAIuL,UAAAA,EAAAA,MAAS,MAAC,EAAC,KAAQ,CAAQ,SAAUvL,EAAIc,UAAU,SAAI,QAAU,YAAQI,IAAkBkB,MAAQ,G,MAAoB,CAAU,MAAC,QAACb,SAAU,SAAC,GAAO,SAAIe,EAAwBxC,WAAM,U,CAAuB,OAAO,CAAa,OAAKE,QAAU8Y,EAAAA,QAAqChZ,KAAM,gB,CAAqB,eAAkBy1E,EAAAA,EAAAA,qBAAU,C,MAAC,CAAgC,gBAACl0E,cAAM,aAACH,MAAOlB,CAAG,EAACuL,OAAS,a,MAA6B,CAAa,MAAC,WAAChK,SAAU,SAAC,GAAU,YAAG,EAAmBzB,WAAM,cAAkB,gBAAiB,CAA2B,OAAIwC,KAAG,UAASxC,QAAM,mC,CAAqB,MAAQ,C,MAA6B,CAAS,kBAAIE,KAAOA,UAAWw1E,EAAAA,gBAC/oC,UAGD,GAASv0E,GAAAA,EAAQb,GAAAA,EAAAA,mBAAe,U,gCCJwJ,GAAC,W,IAAG,EAAC,K,EAAC,EAAO,MAAC,G,OAAiB,OAAW0F,CAAAA,EAAAA,GAAAA,EAAe6L,C,YAAO,YAAC,OAAI3R,MAAO,QAAiD,eAAC,GAAC,MAAQ,S,GAAqD,CAAC,kBAAM,OAAC,gBAAwB,EAAyL,I,CAA+BwC,EAAG,2BAAuH,OAAvH,Q,GAAC,C,MAAyB,SAAWsD,GAA+B,kCAAC,I,CAA4ChG,EAAAA,GAAAA,EAAM,kI,OAAC,OAAeyL,C,IAAS,EAAiB,IAAI,MAAO,YAAsE8F,OAAG,EAAQ,MAAK,QAAI,WAA2B,IAAoB,SAAcokE,CAAAA,EAAAA,GAAAA,EAAAA,CAAc,OAAM,MAAC,WACt8B,oBAGQx0E,GAAAA,EAAM,MAAiB,gC,+GCJYqB,GAAOK,WAAS,MAAU,KAAe4F,EAAAA,EAAAA,MAAYvI,G,OAAY,EAAC,cAAW,C,YAAI,EAASK,GAAAA,CAAK,C,IAAE,YAA4C,eAAI,MAAK,GAAK,4BAACgB,IAAOH,MAAOlB,G,MAAUoC,C,MAA6Bd,EAAI,KAAI,SAAC,YAACC,EAAAA,KAAW,CAAM,EAAIe,WAAG,S,CAA0B,oBAAoB0a,C,MAAqB,CAAiD,QAAU,EAAI,MAAI,qBAAqC,6CAACzU,SAAYvI,EAAI+Q,GAAI,sC,YAAkB,EAAS,K,IAAE9Q,U,GAAMyR,UAAM,KAAEhJ,EAAAA,OAASnI,EAAAA,QAAO,EAAC,MAAC,I,MAA8B,GAAO,cAAUoR,C,GAAQ3R,CAAgB,kBAAC,SAAIsC,KAAqDQ,EAAAA,GAAAA,GAAK,uBAAY,C,WAAS,EAAe5B,KAAK,aAAoBK,QAAAA,eAA+B,uBAACzB,WAAM,qB,MAAcG,CAAK,MAAC,IAAC,GAA8B,MAAOyR,EAAO,QAAG,KAAC,GAAuB,IAAI,sBAAO,QAEx2BtR,EAEJ,E,MCJIa,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,wCAAwC,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YACnP,EACIvgB,GAAkB,GCqBtB,IACAiG,WAAAA,CAAAwlB,eAAAA,GAAAA,GACAxrB,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,iCACA,IC7ByQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCqBhC,IACAnB,MAAAA,CAAAA,YACAgG,WAAAA,CAAAsrC,cAAAA,GAAA+jC,iBAAAA,IACA70E,OACA,OACAS,MAAAA,EACAgO,WAAAA,GAEA,EACAvO,QAAAA,CACA4S,OACA,YACA,EACAnC,QACA,YACA,EACAmkE,SAAAA,GACAl0E,GAAAA,EAAAA,MAAAA,iBAAAA,yCACA8xB,KAAAA,qBACA,wBACA,YACA,IChE2Q,M,uBCA/C,GAAe,KCOvO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCahC,IACAlzB,MAAAA,CACAa,MAAAA,OACAsyB,QAAAA,MACA+hD,WAAAA,CACAx1E,KAAAA,QACAS,SAAAA,GAEAmV,MAAAA,OAEAtP,WAAAA,CAAAuvE,mBAAAA,IACA70E,QAAAA,CACA00E,eAAAA,GACA,2CACA,qBAEA,yBACA,uBACA,ICrDyQ,M,uBCA/C,GAAe,KCQrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,WACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCoBhC,IACApvE,WAAAA,CAAAwvE,iBAAAA,IACAx1E,MAAAA,CACAS,QAAAA,CACAf,KAAAA,QACAS,SAAAA,GAEA6H,MAAAA,CACAtI,KAAAA,QAEAuI,SAAAA,CACAvI,KAAAA,QAEA+oB,MAAAA,CACA/oB,KAAAA,MACAS,QAAAA,IAAAA,IAEA+0E,WAAAA,CACAx1E,KAAAA,QACAS,SAAAA,IAGAK,OACA,OACAJ,OAAAA,EACA8K,SAAAA,KACAiqE,cAAAA,EAAAA,EAAAA,MAAAA,cAEA,GCvEyQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC4BhC,IACAntE,MAAAA,GACA,wCACA,EACAhC,WAAAA,CAAAyvE,iBAAAA,IACA,gBACA,sDACA,UACA,+BACAtqE,aAAAA,WAAAA,gCAEA,kBACA,EACAhH,SAAAA,KACA,iBAEAzD,QAAAA,CACAg1E,mBAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,eAAAA,SACA,+BACA,sBACA,IACAC,wBAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,eAAAA,SACA,4CAAAC,iBAAAA,GACA,IACAC,aAAAA,EAAAA,GAAAA,IAAAA,mBAAAA,iBAEA,aADA,uCACA,8BACA,OACA,4BACA,yCAEA,MACA,QACA,2CACA,iDACA,uBACA,KACA,EAEA,MCzF+P,M,sBCA/C,GAAe,KCO3N,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,Q,GCtBgE,W,IAAM,O,EAAwB,QAAY,G,OAAI,OAAY,C,MAAM,CAAgB,SAAkB,qBAAiB7sC,GAA2B,WAAa,GAA2B,kBAAI/mC,WAAG,GAAsBiG,eAAgBwI,GAAK1O,WAAa,6BAACmG,QAAG,EAAS,6B,GAAQkJ,qBAAM,C,YAAS,O,IAAEnR,UAAM,GAAE,eAAC,S,EAAoBT,Q,EAAO,M,UAAoC,GAAC,K,MAAC,CAAS,eAAiJod,CAAAA,EAAAA,EAAAA,EAAW,C,MAAM,CAAcC,KAAO,K,CAAyC5b,EAAAA,GAAAA,WAAW,6GAAkB,WAAE,EAACzB,KAAM,aAAC,QAAQ,e,MAAKG,iBAAK,WAAC,qB,MAAe,CAAgB,MAAOyR,IAAO,GAAK,MAAS,EAAkB,QAAI,QAAG,IAAO,2BAIn0B,Q,UCJ4CpP,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAe,CAAiC,MAAC,CAACyI,MAAW,EAACvI,GAAI+Q,mC,YAAsB,EAAS,K,IAAEW,U,GAAQgC,UAAAA,OAAO,EAAC,MAAC,I,MAC9LyiE,CAAAA,EAAAA,GAAAA,UAAsB,M,KACtBC,CACAC,aAAAA,EAAAA,KACH,mCAAC,oBAAe,uBAAqB,OAAQ3iE,EAAO,QAAC,kBAAerS,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAIe,WAAG,U,CAAuB,OAAaw4D,C,MAAmB,CAAc,SAAY,OAAE,YAAC,SAAW,GAAqC,aAACz5D,MAAM,uC,MAAkBe,C,MAA6BU,EAAI,KAAI,SAAC,YAACvB,EAAAA,KAAW,CAAM,EAAIe,WAAG,UAAuB,OAAaw4D,C,MAAuC,CAAc,MAAQ96D,CAAAA,EAAI+R,OAAG,6BAAyC,YAAC1Q,MAAM,+C,MAA0Be,C,MAA6Bk0E,EAAAA,aAAgB,SAAC,YAAC/0E,EAAAA,aAAW,CAAc,EAAIe,WAAG,kBAA6B,uBAAoByjE,CAAW,MAAC,CAAC1kE,MAAM,uB,MAAiCe,C,MAA6BqlC,EAAAA,oBAAuB,SAAC,YAAClmC,EAAAA,oBAAW,CAAqB,EAAI,WAAG,0BAEt0BnB,EAEJ,E,MCsCA,IACAiG,WAAAA,CAAAgiC,iBAAAA,IACAxnC,OACA,OACAJ,OAAAA,EACAqC,KAAAA,GACA2kC,oBAAAA,GACA6uC,aAAAA,GAEA,GCvDyQ,M,uBCA/C,GAAe,KCOrO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtB5Br1E,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,mBAAmBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAO,kCAAkC,QAAU,MAAM0C,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,mBAAmB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAC7O,EACIvgB,GAAkB,GCqBtB,IACAiG,WAAAA,CAAAwlB,eAAAA,GAAAA,GACAxrB,MAAAA,IAAA,YACAU,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,iCACA,IC7B+Q,M,uBCA/C,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCoBhC,IACAX,OACA,QACA,EACAwF,WAAAA,CAAAkwE,iBAAAA,GAAAC,uBAAAA,IACAhyE,SAAAA,KACA,cAEAzD,QAAAA,CACA,uBACA,yCACA,iEACAwyB,KAAAA,qBACA,uCACA,ICxDqQ,M,qBCA/C,GAAe,KCOjO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYjxB,GAAOK,WAAS,MAAU,KAAY7C,EAAK,EAAC,S,OAAC,OAAY,C,MAAC,CAAwB,SAAgB,qBAAiB,GAAC,WAAa,GAAG,kBAAkB,WAAaE,GAA8B,kBAAIsC,WAAc,EAAG,SAAE,oBAEhQlC,CAAAA,EAAAA,cAAoB,EAExB,E,MCWA,IACAS,OACA,QACA,EACAwF,WAAAA,CAAA+jE,SAAAA,KCnBmQ,MCO/P,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,GClB+N,W,IAAsB,OAAC/oE,EAAK,EAAC,S,OAACH,EAAK,WAAU,kB,MAACkB,C,MAAgC,EAACsoB,GAAG,+BAAC,WAACnpB,SAAW,GAAK,qBAAiC,QAAU,C,MAAayW,CAAMlY,mBAAM,c,mBAAU,I,MAA+C,CAAE,MAAKmU,EAAM3R,IAAaxC,SAAM,YAAC,MAAQ,C,EAAY,mBAA2E,EAAI,GAAE,EAAEwC,MAAG,SAAa,GAAoBxC,OAAM,QAAC,MAAO,IAAK,OAACyI,GAAAA,EAAW,GAAUlG,SAAI,EAAW,kC,CAAgC,OAAQrC,EAAIqR,EAAAA,EAAG,CAAyC,OAAG,SAAChP,KAAI,K,CAAwBmP,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,SAAAA,EAAAA,KAAAA,EAAAA,GAAAA,IAAAA,EAAAA,GAAAA,EAAAA,OAAAA,MAAAA,E,IAAM,IAAE,4B,MAAC,C,MAA6B,K,YAAqE,KAAWxR,CAAAA,C,IAAuB,Y,GAAE,SAAK,G,MAAsgB,GAAC,4B,qBAA+C,UAAC,M,UAA8B2R,CAAAA,EAAAA,YAAOkB,C,MAAiB,CAA8B,+DAAC,iCAAiB/S,CAAAA,EAAK,KAAC,wU,MAAC,CAAS,SAAIE,MAAO,YAA4F,KAAC,U,GAA0B,CAAc,kBAAO,OAAN,mBAAS,yBAAqB,QAACkB,MAAWu1E,CAAqBr0E,KAAS,KAA4C,sFAACb,GAAAA,CAAgC,kBAAO,UAAqB,OAAa,GAACgH,IAAqBlG,MAAI,G,MAAe,C,MAA4B,EAAQrC,oBAAgD,qBAAG,uBAACqC,EAAcmG,WAAG,yBAAiB,EAAE,e,MAAC,C,MAA6B,K,YAAkE,KAAWxI,CAAAA,C,IAA4B,Y,GAAE,SAAK,G,MAA6B,GAAC,4B,+BAA6E,M,UAA4C,gB,MAAC,C,MAAgCwR,EAAAA,GAAO,uFAAK,CAAC,EAAE,uBAAE,QAAQ,YAAM,sBAAO,aAAM,cAAMklE,EAAkBt0E,aAAmBsoB,KAA+B,kBAACnpB,GAAAA,CAA6B,kBAAO,UAAsB,OAAwB,GAAuB,IAA8C,SAACgH,MAAAA,CAAqBlG,MAAI,mBAAgBmG,SAAG,SAAU,GAAC,mBAAmB,C,aAAc,sB,iBAA6C,C,aAAoC,a,aAAI,U,QAAC,EAAQ,iC,YAA2C,O,IAAC,gB,GAAE,W,MAAoB,GAAC,K,MAAC,CAA0C,QAAIxI,aAAc,oBAAQ,0BAAM,KAAC,UAAa,IAAmB,kBAAQ,EAAE,kBAAC,IAA4B,QAAqC,MAAC,CAAC,MAAc+c,EAAAA,QAAS,kBAA4E,iBAAmB,GAAG,EAAG,OAAC,M,GAA0B,KAAWjX,C,MAAsB,CAAE,QAACzE,MAAM,gB,CAA0Be,EAAAA,+BAAwB,C,MAAI,CAAiB,QAAC,kCAACb,sBAAW,4BAAc,uBAAiCzB,GAAAA,CAAO,eAAeqiC,GAAQ,OAAOniC,EAAIy1B,MAAAA,QAAY,EAAC,G,MAAyE,CAA6B,qBAAG,SAAC,YAAC,eAAYE,CAAqB,EAAuC,8BAAwD71B,GAAM,wB,MAAC,CAA0B,qBAACuB,KAAM,eAACH,YAAWisC,EAAAA,YAAe/qC,YAAS,eAAe,Y,yBAAsB,G,GAAEb,CAA0B,6BAAG,iBAAa,uBAA0B,KAAQvB,eAAiB,0B,MAAC,CAA6C,uB,MAAsF,CAAqB,sBAAiC,qBAAM,EAAEsC,cAAgB,CAAI,EAAE,WAAW,mBAAwB,EAAE,0BAC1qI,OACGlC,MAAAA,EAAe,cAEnB,gBAAiBA,EAAAA,YAAe,a,wMCJyD,I,SAAU,W,IAA8BmC,EAAAA,KAAsCzC,EAAK,EAAC,SAAQ,EAAC,kB,OAAE,sBAAE,YAAK,0BAAiBA,MAAM,CAAC,MAAM,KAAI0C,CAAE,EAAC,M,MAAC,C,IAA0B,IAAyB,GAAC,CAACnB,OAAM,YAACH,OAAOlB,EAAI22E,aAAev0E,G,MAA+C,CAACb,MAAAA,EAAU,cAAgB,qBAAM,EAAC,cAAU,CAACzB,EAAO,WAAQ,kBAAsC,SAAG,MAAI,CAAWA,MAAM,OAAC,MAAQ,iBAAa,QAAuC,QAAG,MAAK,CACxiB,oBACGM,MAAAA,EAAe,eAAK,gB,mBCExB,IAAegG,EAAAA,EAAAA,iBAAgB,CAC3B/F,MAAO,CACHa,MAAOgC,QAEXrC,OACI,MAAO,CACH81E,cAAe70E,KAAKZ,OAASmqC,GAAcoQ,KAC3C9N,eAAgBtC,GAExB,EACAtqC,QAAS,CACL61E,cACI90E,KAAKgE,MAAM,QAAShE,KAAK60E,cAC7B,KCjB8S,MCOlT,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIF,GAAe,GAAiB,Q,wBClB+P,GAAS,W,IAAoBt0E,EAAIyjC,KAAa,EAAGxjC,EAAG,MAAQ,G,OAAExC,EAAK,KAAC,C,MAAC,C,QAAU,EAAW,QAAE,qB,CAAoHyC,EAAAA,YAAY,iBAAmC,MAAM,CAAyDA,YAAY,GAA+B,MAAK,GAAOoL,QAAW,K,EAAuB,iCAAC,OAAO,EAACkpE,GAAAA,EAAgB,CAAgB/2E,IAAK,EAAC,I,CAAC,OAAM,CAAsD,OAAIE,KAAO,GAA2DuC,SAAY,KAA0JzC,CAAAA,EAAK,KAAC,iE,YAAW,qCAAI,6CAACyI,YAAYvI,gC,CAASqC,EAAG,MAAC,C,YAAe,C,gBAAWG,Q,GAAM,aAAW,EAAQxC,cAAO,C,MAACF,C,GAAO,qBAAO,4B,GAAI,GAAG,IAAK,EAAC,KAAS,GAACE,SAAO,SAAgB,EAAG,kB,YAAA,cAAE,CAAC,EAAC,GAAI,IAAK,wFAAE,MAAK,CAAUF,WAAM,IAAW,mBAAKgmC,IAAAA,YAA2C,GAAC,aAAC,IAAmE,mBAAC,OAAO,UAAgL,GAAQ,OAASn0B,CAAAA,EAAM,GAAC,mB,IAA6C,UAAC,SAAE,MAAK,CAA0L,MAAI,KAAsB,GAAO,WAAS,QAAC,IAAqD,kBAAQN,OAAG,sBAAkB,EAA4BvR,IAA2C,uGAAG,GAAC,CAAC,MAAUE,SAAI82E,GAA0B,iCAACz1E,IAA4Ce,CAAAA,EAAAA,GAAAA,EAAmBsoB,CAAAA,EAAG,IAAE,2G,OAAI,EAACmH,cAAgB,C,MAA2B,CAACtwB,KAAAA,UAAqC,oDAAiCzB,CAAAA,EAAK,GAAC,6C,MAAC,CAAkC,iC,GAAK,CAAwC,qC,MAAa,CAA8BsC,MAAAA,EAAS,yB,SAAwB,SAAK0zB,GAAgC,sCAACv0B,EAAmC,yCACj7E,4BACGnB,MAAAA,CAEJ,WAAiBA,EAAAA,kB,4LCJ2BkC,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAsC,EAAS,K,IAAEiJ,UAAM,GAAE,gBAAC,I,MAA4C,4BAAuB,C,MAAoB,CAAuB,QAAQxR,EAAM,MAAC,uBAAgD,QAAWA,WAA0D,MAAQ,EAAC,mDAAK,iEAACuI,QAAW,G,YAA2B,EAAS,K,IAAEG,U,GAASgJ,UAAM,QAAE5Q,EAAAA,OAAS,EAAC,QAAC,I,MAA8B,GAAO,cAAU6Q,C,GAAQ,CAAc,kBAAC,UAAIrP,KAA2DQ,EAAAA,GAAAA,GAAK,6BAAY,C,WAAS,EAAe5B,KAAK,aAAsBK,QAAAA,eAAiC,yBAACzB,WAAM,uB,MAAkC,CAAgB,aAAUgB,EAAO,cAAC,MAAO4Q,EAAO,UAAG,KAAC,G,GAA4BF,CAAmD,oBAAC,wCAAI,KAAiB,eAAM,MAI1+B,E,MCJIvQ,GAAS,WAAkB,IAAIjB,EAAI8B,KAAKQ,EAAGtC,EAAI2C,MAAML,GAAG,OAAOA,EAAG,qBAAqBtC,EAAIwgB,GAAGxgB,EAAIygB,GAAG,CAAC3gB,MAAM,CAAC,KAAOE,EAAI+2E,aAAgB,oBAAmB/2E,EAAI+2E,eAAiB,KAAK,QAAU,MAAMv0E,GAAG,CAAC,QAAUxC,EAAI+B,UAAU,qBAAqB/B,EAAI0gB,QAAO,GAAO1gB,EAAI2gB,YAChR,EACIvgB,GAAkB,GCqBtB,IACAiG,WAAAA,CAAAylB,iBAAAA,GAAAA,GACAzrB,MAAAA,IACA,WACA02E,aAAAA,CAAAA,OAAAA,SAEAh2E,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,uCACA,IChC+Q,M,uBCA/C,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCiBhC,IACA6E,WAAAA,CAAA2wE,qBAAAA,GAAAC,uBAAAA,IACA52E,MAAAA,CACAa,MAAAA,QACA4kC,WAAAA,QAEA/kC,QAAAA,CACAm2E,oBAAAA,IACAx1E,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,4CACA,uBACA,ICjD+Q,M,uBCA/C,GAAe,KCO3O,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBYY,GAAOK,WAAS,MAAU,KAAe7C,EAAK,EAAC,S,OAAC,gBAAYoB,CAAK,MAAC,CAAG,MAAC,S,GAA0B,CAAiC,kBAAE,yBAACqH,G,YAAsC,EAAS,K,IAAEiJ,UAAM,GAAE,gBAAC,I,MAA0C,0BAAuB,C,MAAkB,CAAuB,QAAQxR,EAAM,MAAC,qBAA4C,QAAWA,WAAsD,uDAACuI,SAAYvI,EAAI+Q,GAAI,gD,YAAkB,EAAS,K,IAAErI,U,GAASgJ,UAAM,QAAE5Q,EAAO,OAAEb,EAAI,QAAEM,EAAAA,KAAO,EAAC,MAAC,I,MAA8B,GAAO,cAAUoR,C,GAAQ,CAAc,kBAAC,UAAIrP,KAAyDQ,EAAAA,GAAAA,GAAK,2BAAY,C,WAAS,EAAe5B,KAAK,aAAoBK,QAAAA,eAA+B,uBAACzB,WAAM,qB,MAAcG,CAAK,MAAC,IAAC,GAA+C,MAAQyI,EAAQ,aAAU5H,EAAO,cAAC,MAAO4Q,EAAO,UAAG,KAAC,G,GAA4BF,CAAiD,oBAAC,sCAAI,KAAiB,eAAM,MAIv/B,E,MCJ4ClP,GAAOK,WAAS,MAAU,KAAa7C,EAAK,EAAC,S,OAAC,cAAiB,C,MAAC,CAAwB,MAAS,EAACE,MAAY,oBAACuI,QAAYvI,EAAI+Q,S,YAAsB,EAAS,K,IAAEW,UAAO,GAAE,iBAAC,I,MAAmD,GAAQ1R,GAAIm3E,UAAS,MAAC,QAASzlE,EAAAA,MAAO,MAAS,EAAC1R,UAAY,OAAO,E,QAAW,EAAC8lC,Q,KAAYsxC,CAAmC,kBAAI,mCAAe/1E,IAAOH,MAAOlB,G,MAAWoC,C,MAA6B3B,EAAK,MAAI,SAAC,YAACc,EAAAA,MAAW,CAAO,EAAIe,WAAG,U,CAA2B,qBAAe,C,MAAiC,CAA2B,4CAACjB,MAAM,kB,MAA4Be,C,MAA6By/B,EAAAA,eAAkB,SAAC,YAACtgC,EAAAA,eAAW,CAAgB,EAAIe,WAAS,oBAAsBA,EAAG,OAAcxC,YAAM,Q,CAAC,OAAa,C,MAAC,CAA6D,SAAW,GAAiC,MAAQE,CAAAA,EAAI8lC,OAAAA,WAAU,yBAAC,wCAAqB,MAAO,EAAG,WAAC,kBAAW,GAAG,SAACzkC,SAAM,I,MAAwBe,C,MAA6B0jC,EAAAA,WAAc,SAAC,YAACvkC,EAAAA,WAAW,CAAY,EAAI,WAAO,iBAE1iCnB,IAAAA,EAEJ,E,MC0CA,IACAC,MAAAA,CAAAA,QAAAA,UAAAA,QAAAA,YACAQ,OACA,OACAJ,OAAAA,EACAqlC,WAAAA,GACAjE,eAAAA,KAEA,EACAj+B,MAAAA,CACA1C,MAAAA,CACA4C,QAAAA,GACA,IACA,uBACA,2CACA,EACAiG,WAAAA,IAGAhJ,QAAAA,CACAo2E,YACA,cACA,mBACA,wBACA,ICtEuQ,M,uBCA/C,GAAe,KCOnO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCtBY70E,GAAOK,WAAS,MAAU,KAAmC7C,EAAK,EAAC,S,OAAC,EAAM,oBAAqB,W,MAA6C,CAA8B,oBAAgB,0CAAC,MAAS,EAAC,kBAAK,eAAG,QAAC,MAAsB,IAAG,oB,oBAAkF,mCAAE,OAAIE,KAAO,KAE9WI,CAAAA,EAAAA,GAAAA,UAAoB,uDAExB,E,MCuBA,IACAiG,WAAAA,CAAAulB,gBAAAA,IACAvrB,MAAAA,IACA,SACAa,MAAAA,CACAnB,KAAAA,QAEAg3E,aAAAA,CAAAA,OAAAA,SAEAh2E,QAAAA,CACAgB,WACAP,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,uCACA,EACA61E,kBACA,QAAAtK,GAAAA,UAAAre,KAAAA,kBAAAxtD,MAAAA,KAAAA,MAAAA,gBACA,CAAA6rE,GAAAA,UAAAre,KAAAA,QAAAxtD,MAAAA,KAAAA,MAAAA,MACA,IC3C6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCkBhC,IACAmF,WAAAA,CAAAixE,mBAAAA,GAAAC,qBAAAA,IACAl3E,MAAAA,CACAa,MAAAA,QACA4kC,WAAAA,QAEA/kC,QAAAA,CACAy2E,kBAAAA,IACA91E,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,wCACA,uBACA,IClD6Q,M,uBCA/C,GAAe,KCOzO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QC4DhC,IACArB,MAAAA,CAAAA,cAAAA,UAAAA,YAAAA,YAAAA,eAAAA,eACAQ,OACA,OACA42E,mBAAAA,KACAC,iBAAAA,KACA5hD,QAAAA,CACA6hD,kBAAAA,EACAC,gBAAAA,GAGA,EACAvxE,WAAAA,CACAwxE,uBAAAA,GACAC,qBAAAA,IAEAtzE,SAAAA,CACAuzE,iBACA,wBACA,2BACA9uE,GAAAA,EAAAA,GACArH,KAAAA,EAAAA,KACA4oC,KAAAA,GAAAA,IAAAA,EAAAA,gBAAAA,QAAAA,OAAAA,eACAwtC,oBAAAA,EAAAA,oBACAC,WAAAA,EAAAA,WACA/7D,UAAAA,EAAAA,UACAub,YAAAA,EAAAA,gBARA,EAUA,GAEA12B,QAAAA,CACAm3E,sBAAAA,GACA,0BACA,gCACA,EACAC,oBAAAA,GACA,wBACA,8BACA,EACArB,0BAAAA,GACA,yCACA,EACAsB,WAAAA,GACA,0BACA,IC9H4Q,M,uBCA/C,GAAe,KCOxO,IAAY,OACd,GACA,GACA,IACA,EACA,KACA,KACA,MAMoB,oBAAX,IAAuB,GAAO,IAEzC,OAAe,GAAiB,QCuJhC,MAAM,GAA0B,IAChC,0CAGA,0BACA,8BACA,gBACA,OACAC,EAAAA,OAAAA,EAAAA,EAEA,CAEA,6BACA,kCAEA,eACA,SAEA,yBACA,eACA,mBACA,oBACA,wBACA,oBACA,wBACA,eACA,mBACA,cACA,iDACA,wBACA,4BACA,qBACA,yBACA,QACA,0BAKA,QACAhyE,WAAAA,CACAqrC,mBAAAA,GACA4mC,qBAAAA,GACAzmC,gBAAAA,GACA6G,6BAAAA,GACA6/B,oBAAAA,IAEAlwE,MAAAA,GACA,qCACA,EACAxH,OACA,aACA,OACAguD,IAAAA,KACA53C,OAAAA,KAAAA,OAAAA,OAAAA,OACAye,aAAAA,IACA,UACAlZ,YAAAA,GAAAA,KAAAA,SAEAmjB,aAAAA,KACAysB,cAAAA,KACA1yC,SAAAA,KACA0xC,eAAAA,CAAAA,EACA31B,aAAAA,CAAA6F,OAAAA,GAAAyD,SAAAA,IACAoD,aAAAA,EACA4D,YAAAA,GACAoH,cAAAA,GAAAA,KACAspC,qBAAAA,EACA+B,uBAAAA,EACAC,oBAAAA,GACA/B,kBAAAA,EACAvqB,SAAAA,EAEA,EACAjqD,YACA,wBACA,EACA0B,MAAAA,CACA8xB,aAAAA,CACA5xB,QAAAA,GACA,IACA,uCACA,8BACA,yBACA,EACAiG,WAAAA,EACAlG,MAAAA,GAEAqnB,OAAAA,CACA,iBACA,aACA,4BACA,cACA,oCACA,uBACA,wBACA,iCAEA,oBACA,aACAsjC,EAAAA,gBAAAA,EACA,gEACA,KACA,EACAzkD,WAAAA,EACAlG,MAAAA,GAEA,iBACA,mBACA2qD,EAAAA,uBAAAA,EACA,YACA,uCACA,KACAA,EAAAA,6BACA,KACA,EACAv3C,OAAAA,CACAnT,QAAAA,EAAAA,GACA,GACA,uCACA,IAGAU,SAAAA,CACA2qD,SACA,wBACA,6BACA,6CACAF,EAAAA,aACA,EACAnc,aACA,oDACA,EACA4lC,sBACA,2BACA,wCACA,kCACA,uDACA,CAEA,EACAC,2BACA,gEACA,iCACA/oE,KAAAA,IACA,mCAEA,OADA46B,EAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,KAEAjK,MAAAA,CAAAA,EAAAA,IAAAA,EAAAA,UAAAA,EAAAA,YAEA,WACA,oBACA,mBACA,oBAEA,iDACA,CAEA,EACAq4C,WACA,2BACA,uDACA,+CACA,2EACA,gDACA,0CACA,CACA,CACA,QACA,EACAnpB,oBACA,qDACA,EACAC,OACA,iFACA,GACA,CACArnD,MAAAA,KAAAA,GAAAA,2CACAhG,IAAAA,oBACA0uB,GAAAA,GAAAA,8BACA9c,KAAAA,YAEA,CACA5L,MAAAA,KAAAA,GAAAA,kCACAhG,IAAAA,WACA0uB,GAAAA,GAAAA,qBACA9c,KAAAA,iBAEA,CACA5L,MAAAA,KAAAA,GAAAA,mCACAhG,IAAAA,YACA0uB,GAAAA,GAAAA,qBACA9c,KAAAA,UAEA,CACA5L,MAAAA,KAAAA,GAAAA,uCAC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","sources":["webpack://cloudctrl/./src/components/Account.ApiManagement/DeleteApiKeyButton.vue?c515","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyButton.vue?36d4","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue?78d4","webpack://cloudctrl/./src/components/Account.SelfService/CreateTenantCard.vue?d623","webpack://cloudctrl/./src/components/Account.SelfService/PostCreateTenantButton.vue?549c","webpack://cloudctrl/./src/components/Common/DeleteEntityCard.vue?b861","webpack://cloudctrl/./src/components/Common/DeleteEntityDialog.vue?1d5e","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue?ac87","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue?0697","webpack://cloudctrl/./src/components/Common/UpdateEntitySpendLimitCard.vue?dc41","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue?4577","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationButton.vue?0b38","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationDialog.vue?c6a7","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationCard.vue?b06a","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationsTimeline.vue?8dc9","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationButton.vue?28b4","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationDialog.vue?4c9a","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationButton.vue?e82f","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationDialog.vue?4190","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue?82a8","webpack://cloudctrl/./src/components/Domain.Budgets/CreateBudgetDialog.vue?223b","webpack://cloudctrl/./src/components/Domain.Budgets/CreateButtonButton.vue?42fc","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetButton.vue?49f3","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetDialog.vue?6437","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue?50f5","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue?e00e","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue?83d0","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue?af6b","webpack://cloudctrl/./src/components/Domain.Currencies/CurrencyComboBox.vue?939e","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewMenu.vue?e65e","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue?24dc","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewButton.vue?f93a","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewDialog.vue?1a3b","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewButton.vue?f6b2","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewDialog.vue?77df","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewButton.vue?a0d7","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewDialog.vue?7e73","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue?3b3f","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateButton.vue?2389","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateButton.vue?733f","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateDialog.vue?d81c","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateButton.vue?6f69","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue?e8c0","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue?e07f","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyButton.vue?5f56","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyDialog.vue?e4b1","webpack://cloudctrl/./src/components/Domain.Policies/PolicyMenu.vue?5e38","webpack://cloudctrl/./src/components/Domain.Products/PatchProductButton.vue?4eb7","webpack://cloudctrl/./src/components/Domain.Products/ProductManageMenu.vue?e3ae","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue?0ba1","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue?ef5d","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue?4b3c","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue?84f0","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportButton.vue?af3e","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportDialog.vue?d2c3","webpack://cloudctrl/./src/components/Domain.Reports/PostReportButton.vue?ea5a","webpack://cloudctrl/./src/components/Domain.Reports/PutReportButton.vue?bfe1","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue?6d89","webpack://cloudctrl/./src/components/Domain.Reports/ReportMenu.vue?d851","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue?c0ae","webpack://cloudctrl/./src/components/Domain.Services/PatchServiceButton.vue?400f","webpack://cloudctrl/./src/components/Domain.Services/ServiceManageMenu.vue?6a3c","webpack://cloudctrl/./src/components/Domain.Services/ServiceMetadataChips.vue?8516","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue?d9b8","webpack://cloudctrl/./src/components/Domain.SpendLimits/SpendLimitsTable.vue?b1de","webpack://cloudctrl/./src/components/Domain.Subscriptions/PatchSubscriptionButton.vue?da32","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionManageMenu.vue?957a","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue?f8cd","webpack://cloudctrl/./src/components/Domain.Tags/PatchTagKeyValueButton.vue?a478","webpack://cloudctrl/./src/components/Domain.Tags/TagForm.vue?2260","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyAutocomplete.vue?67c4","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyValueManageMenu.vue?bdb0","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue?5c3b","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue?a82b","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue?252d","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue?9aa6","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue?8679","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue?cf84","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue?eb59","webpack://cloudctrl/./src/components/Domain.Tags/TagValueAutocomplete.vue?8445","webpack://cloudctrl/./src/components/Domain.Tenants/ChooseTenantCard.vue?c004","webpack://cloudctrl/./src/components/Domain.Tenants/CreateTenantDialog.vue?e7a8","webpack://cloudctrl/./src/components/Domain.Tenants/DeleteTenantButton.vue?6a17","webpack://cloudctrl/./src/components/Domain.Tenants/PostTenantButton.vue?6644","webpack://cloudctrl/./src/components/Domain.Tenants/PutTenantButton.vue?c6fc","webpack://cloudctrl/./src/components/Domain.Tenants/SetTenantCard.vue?3b38","webpack://cloudctrl/./src/components/Domain.Tenants/TenantRadioGroup.vue?c7e9","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue?497a","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeSelect.vue?c0cd","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue?510d","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue?f7a8","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue?6059","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue?4a76","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonsTable.vue?2d63","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue?e094","webpack://cloudctrl/./src/components/Domain.VirtualTags/VirtualTagTable.vue?541d","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookButton.vue?554b","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue?a09b","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookButton.vue?a64b","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue?754a","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue?58ec","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue?de66","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue?235f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue?305a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue?23bd","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue?1713","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue?4fb5","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue?8425","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue?9055","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue?e477","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue?029c","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue?701a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue?5500","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue?4aab","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue?2823","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue?f9bc","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue?4243","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CredentialStatusIcon.vue?d4bf","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue?062a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue?9ab9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue?b786","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue?0722","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue?1e68","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue?de81","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue?747a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue?d46e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue?beaf","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue?b6d5","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PostCloudAccountButton.vue?7a3e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PutCredentialButton.vue?f4c7","webpack://cloudctrl/./src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue?d089","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue?723b","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue?4328","webpack://cloudctrl/./src/components/Settings.Users/SetUserCard.vue?416a","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupPermissionsCard.vue?1bbb","webpack://cloudctrl/./src/components/View.CustomersManage/AddCustomerButton.vue?37c4","webpack://cloudctrl/./src/components/View.Nav/NavMenuList.vue?9656","webpack://cloudctrl/./src/components/View.Nav/NavTenantMenuList.vue?0aef","webpack://cloudctrl/./src/components/View.Nav/NavUserMenuList.vue?06a0","webpack://cloudctrl/./src/components/View.Recommendations/PutRecommendationSettingsButton.vue?b81d","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationNotAvailableCard.vue?1796","webpack://cloudctrl/./src/components/View.Recommendations/SetRecommendationSettingsCard.vue?0a3d","webpack://cloudctrl/./src/views/Auth/Choose.vue?7dad","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue?1af0","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue?9d85","webpack://cloudctrl/./src/views/Budgets/Budgets.vue?05b6","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue?9749","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue?e609","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue?c83d","webpack://cloudctrl/./src/views/CopyCloudAccount/ChooseTenant.vue?337e","webpack://cloudctrl/./src/views/CopyCloudAccount/Finish.vue?1402","webpack://cloudctrl/./src/views/CopyCloudAccount/Index.vue?7c0d","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue?dfaa","webpack://cloudctrl/./src/views/CopyCloudAccount/Tags.vue?d009","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue?aa00","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue?c570","webpack://cloudctrl/./src/views/CustomViews/Overview.vue?632a","webpack://cloudctrl/./src/views/CustomersManage/CreateCustomerDialog.vue?1a55","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage.vue?772f","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue?1a98","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Users.vue?9cb2","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue?e6a7","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Copies.vue?4814","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Dialog.vue?ba28","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue?1c79","webpack://cloudctrl/./src/views/Dialog.CloudAccount/VirtualTags.vue?4fce","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue?9cfb","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue?af02","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue?cb13","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue?4fb2","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue?5ffa","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue?3c2e","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue?9c7e","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue?f723","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue?3323","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue?169e","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue?0660","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue?2723","webpack://cloudctrl/./src/views/Dialog.Reservation/Dialog.vue?dd79","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue?7f86","webpack://cloudctrl/./src/views/Dialog.Service/Dialog.vue?c4ef","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue?1357","webpack://cloudctrl/./src/views/Dialog.Service/RecordTags.vue?bda1","webpack://cloudctrl/./src/views/Dialog.Service/VirtualTags.vue?32aa","webpack://cloudctrl/./src/views/Dialog.Subscription/Dialog.vue?5588","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue?e4ce","webpack://cloudctrl/./src/views/Dialog.Subscription/VirtualTags.vue?dcf4","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue?9d5b","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue?4aef","webpack://cloudctrl/./src/views/FinanceDashboard.vue?3459","webpack://cloudctrl/./src/views/GettingStarted.vue?8016","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue?b6b9","webpack://cloudctrl/./src/views/KubernetesDashboard.vue?6088","webpack://cloudctrl/./src/views/MainView.vue?8a21","webpack://cloudctrl/./src/views/NotFound.vue?f77b","webpack://cloudctrl/./src/views/Recommendations.vue?e553","webpack://cloudctrl/./src/views/Reports/CustomReport.vue?5928","webpack://cloudctrl/./src/views/Reports/CustomReports.vue?0826","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue?9b3a","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue?4bf2","webpack://cloudctrl/./src/views/Reports/TagOverview.vue?c9f7","webpack://cloudctrl/./src/views/ReservationsDashboard.vue?2d60","webpack://cloudctrl/./src/views/ResourceExplorer/Index.vue?e877","webpack://cloudctrl/./src/views/SelfService/CreateTenant.vue?1b99","webpack://cloudctrl/./src/views/Settings/AlibabaView.vue?3ad4","webpack://cloudctrl/./src/views/Settings/AmazonView.vue?e3f6","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue?2731","webpack://cloudctrl/./src/views/Settings/AuditView.vue?37ae","webpack://cloudctrl/./src/views/Settings/AzureView.vue?10a5","webpack://cloudctrl/./src/views/Settings/BillingDetailsView.vue?63e6","webpack://cloudctrl/./src/views/Settings/CustomView.vue?c8ed","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue?e936","webpack://cloudctrl/./src/views/Settings/GeneralView.vue?831f","webpack://cloudctrl/./src/views/Settings/GoogleView.vue?396d","webpack://cloudctrl/./src/views/Settings/GroupsView.vue?551b","webpack://cloudctrl/./src/views/Settings/IndexView.vue?0f23","webpack://cloudctrl/./src/views/Settings/OracleView.vue?15f2","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue?491d","webpack://cloudctrl/./src/views/Settings/UsersView.vue?54cb","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue?a711","webpack://cloudctrl/./src/views/TrendsDashboard.vue?7d18","webpack://cloudctrl/./src/views/Watchdog/Index.vue?d612","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue?444b","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue?e67a","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue?82d3","webpack://cloudctrl/./src/components/Common/HttpDeleteButton.vue","webpack://cloudctrl/src/components/Common/HttpDeleteButton.vue","webpack://cloudctrl/./src/components/Common/HttpDeleteButton.vue?90af","webpack://cloudctrl/./src/components/Common/HttpDeleteButton.vue?6af0","webpack://cloudctrl/./src/components/Common/HttpPostButton.vue","webpack://cloudctrl/src/components/Common/HttpPostButton.vue","webpack://cloudctrl/./src/components/Common/HttpPostButton.vue?9161","webpack://cloudctrl/./src/components/Common/HttpPostButton.vue?3f69","webpack://cloudctrl/./src/components/Common/Toast.vue","webpack://cloudctrl/./src/components/Common/Toast.vue?2ba7","webpack://cloudctrl/./src/components/Common/Toast.vue?8a6e","webpack://cloudctrl/./src/components/Common/Toast.vue?45b6","webpack://cloudctrl/./src/components/Domain.Actions/ActionScriptInput.vue","webpack://cloudctrl/./src/components/Common/MonacoEditor.vue","webpack://cloudctrl/./src/components/Common/MonacoEditor.vue?e702","webpack://cloudctrl/./src/components/Common/MonacoEditor.vue?5a78","webpack://cloudctrl/./src/components/Common/MonacoEditor.vue?c5d8","webpack://cloudctrl/./src/components/Domain.Actions/ActionScriptInput.vue?ad98","webpack://cloudctrl/./src/components/Domain.Actions/ActionScriptInput.vue?9c99","webpack://cloudctrl/./src/components/Domain.Actions/ActionScriptInput.vue?fc19","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue?9886","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue?6fac","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue?b3f3","webpack://cloudctrl/./src/components/Domain.Actions/SetActionScriptCard.vue?e55c","webpack://cloudctrl/./src/lib/ApiV2.ts","webpack://cloudctrl/./src/lib/Auth.ts","webpack://cloudctrl/./src/lib/Config.ts","webpack://cloudctrl/./src/lib/EventBus.ts","webpack://cloudctrl/./src/App.vue","webpack://cloudctrl/src/App.vue","webpack://cloudctrl/./src/App.vue?ddb7","webpack://cloudctrl/./src/App.vue?0e40","webpack://cloudctrl/./src/plugins/vuetify.ts","webpack://cloudctrl/./src/plugins/highcharts.proj4.js","webpack://cloudctrl/./src/plugins/highcharts.custom.world.js","webpack://cloudctrl/./src/plugins/highcharts.ts","webpack://cloudctrl/./src/lib/Currencies.ts","webpack://cloudctrl/./src/plugins/currency.ts","webpack://cloudctrl/./src/plugins/dateFormatting.ts","webpack://cloudctrl/./src/components/Common/AppLogoImage.vue","webpack://cloudctrl/src/components/Common/AppLogoImage.vue","webpack://cloudctrl/./src/components/Common/AppLogoImage.vue?dade","webpack://cloudctrl/./src/components/Common/AppLogoImage.vue?c70a","webpack://cloudctrl/./src/components/Common/BackButton.vue","webpack://cloudctrl/src/components/Common/BackButton.vue","webpack://cloudctrl/./src/components/Common/BackButton.vue?f342","webpack://cloudctrl/./src/components/Common/BackButton.vue?efa9","webpack://cloudctrl/./src/components/Common/ContentCard.vue","webpack://cloudctrl/./src/components/Common/ContentCardBase.vue","webpack://cloudctrl/src/components/Common/ContentCardBase.vue","webpack://cloudctrl/./src/components/Common/ContentCardBase.vue?b989","webpack://cloudctrl/./src/components/Common/ContentCardBase.vue?71cd","webpack://cloudctrl/src/components/Common/ContentCard.vue","webpack://cloudctrl/./src/components/Common/ContentCard.vue?1d4b","webpack://cloudctrl/./src/components/Common/ContentCard.vue?d07c","webpack://cloudctrl/./src/components/Common/ChartCard.vue","webpack://cloudctrl/src/components/Common/ChartCard.vue","webpack://cloudctrl/./src/components/Common/ChartCard.vue?fcae","webpack://cloudctrl/./src/components/Common/ChartCard.vue?d547","webpack://cloudctrl/./src/components/Common/DeleteEntityDialog.vue","webpack://cloudctrl/./src/components/Common/DeleteEntityCard.vue","webpack://cloudctrl/src/components/Common/DeleteEntityCard.vue","webpack://cloudctrl/./src/components/Common/DeleteEntityCard.vue?38cb","webpack://cloudctrl/./src/components/Common/DeleteEntityCard.vue?d8ae","webpack://cloudctrl/./src/components/Common/DeleteEntityCard.vue?9e5f","webpack://cloudctrl/./src/components/Common/DeleteEntityButton.vue","webpack://cloudctrl/src/components/Common/DeleteEntityButton.vue","webpack://cloudctrl/./src/components/Common/DeleteEntityButton.vue?4837","webpack://cloudctrl/./src/components/Common/DeleteEntityButton.vue?14ec","webpack://cloudctrl/src/components/Common/DeleteEntityDialog.vue","webpack://cloudctrl/./src/components/Common/DeleteEntityDialog.vue?b76e","webpack://cloudctrl/./src/components/Common/DeleteEntityDialog.vue?e57d","webpack://cloudctrl/./src/components/Common/DeleteEntityDialog.vue?d693","webpack://cloudctrl/./src/components/Common/EmptyState.vue","webpack://cloudctrl/./src/components/Common/EmptyState.vue?5628","webpack://cloudctrl/./src/components/Common/EmptyState.vue?098d","webpack://cloudctrl/./src/components/Common/EmptyState.vue?ad2c","webpack://cloudctrl/./src/components/Common/FormCard.vue","webpack://cloudctrl/./src/components/Common/FormCardActions.vue","webpack://cloudctrl/./src/components/Common/FormCardActions.vue?6c2a","webpack://cloudctrl/./src/components/Common/FormCardTitle.vue","webpack://cloudctrl/src/components/Common/FormCardTitle.vue","webpack://cloudctrl/./src/components/Common/FormCardTitle.vue?1644","webpack://cloudctrl/./src/components/Common/FormCardTitle.vue?dea3","webpack://cloudctrl/./src/lib/UniqueIdentifier.ts","webpack://cloudctrl/src/components/Common/FormCard.vue","webpack://cloudctrl/./src/models/ISpendParameters.ts","webpack://cloudctrl/./src/models/Granularity.ts","webpack://cloudctrl/./src/components/Common/FormCard.vue?1f16","webpack://cloudctrl/./src/components/Common/FormCard.vue?3448","webpack://cloudctrl/./src/components/Common/FormDialog.vue","webpack://cloudctrl/src/components/Common/FormDialog.vue","webpack://cloudctrl/./src/components/Common/FormDialog.vue?10ff","webpack://cloudctrl/./src/components/Common/FormDialog.vue?8a20","webpack://cloudctrl/./src/components/Common/PageHeader.vue","webpack://cloudctrl/src/components/Common/PageHeader.vue","webpack://cloudctrl/./src/components/Common/PageHeader.vue?6ca1","webpack://cloudctrl/./src/components/Common/PageHeader.vue?066d","webpack://cloudctrl/./src/components/Common/HttpPatchButton.vue","webpack://cloudctrl/src/components/Common/HttpPatchButton.vue","webpack://cloudctrl/./src/components/Common/HttpPatchButton.vue?5ed0","webpack://cloudctrl/./src/components/Common/HttpPatchButton.vue?4f8e","webpack://cloudctrl/./src/components/Common/HttpPutButton.vue","webpack://cloudctrl/src/components/Common/HttpPutButton.vue","webpack://cloudctrl/./src/components/Common/HttpPutButton.vue?4ec7","webpack://cloudctrl/./src/components/Common/HttpPutButton.vue?dfa7","webpack://cloudctrl/./src/components/Common/FigureCard.vue","webpack://cloudctrl/src/components/Common/FigureCard.vue","webpack://cloudctrl/./src/components/Common/FigureCard.vue?1f57","webpack://cloudctrl/./src/components/Common/FigureCard.vue?634e","webpack://cloudctrl/./src/components/Common/WidgetGrid.vue","webpack://cloudctrl/./src/components/Common/WidgetGrid.vue?2098","webpack://cloudctrl/./src/components/Common/TitleSheet.vue","webpack://cloudctrl/src/components/Common/TitleSheet.vue","webpack://cloudctrl/./src/components/Common/TitleSheet.vue?9d36","webpack://cloudctrl/./src/components/Common/TitleSheet.vue?1e20","webpack://cloudctrl/./src/components/Common/TitleSheets.vue","webpack://cloudctrl/src/components/Common/TitleSheets.vue","webpack://cloudctrl/./src/components/Common/TitleSheets.vue?0a7c","webpack://cloudctrl/./src/components/Common/TitleSheets.vue?d843","webpack://cloudctrl/./src/components/Common/ComparisonIcon.vue","webpack://cloudctrl/src/components/Common/ComparisonIcon.vue","webpack://cloudctrl/./src/components/Common/ComparisonIcon.vue?8d5c","webpack://cloudctrl/./src/components/Common/ComparisonIcon.vue?5acd","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue","webpack://cloudctrl/./src/models/CloudProviderType.ts","webpack://cloudctrl/./src/models/EntityType.ts","webpack://cloudctrl/./src/models/CloudAccountType.ts","webpack://cloudctrl/./src/models/CloudCredentialType.ts","webpack://cloudctrl/./src/models/RawUsageFields.ts","webpack://cloudctrl/./src/models/IBudgetResult.ts","webpack://cloudctrl/./src/models/ISpendUsageTable.ts","webpack://cloudctrl/./src/models/IPolicyModel.ts","webpack://cloudctrl/./src/lib/moment.ts","webpack://cloudctrl/./src/lib/DateKey.ts","webpack://cloudctrl/./src/lib/index.ts","webpack://cloudctrl/./src/models/functions.ts","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewCardDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue?ca94","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue?c6fb","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue?d12a","webpack://cloudctrl/./src/components/Domain.CustomViews/SetCustomViewCard.vue?e699","webpack://cloudctrl/src/components/Domain.CustomViews/CustomViewCardDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewCardDialog.vue?2d20","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewCardDialog.vue?49fa","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewButton.vue","webpack://cloudctrl/src/components/Domain.CustomViews/PostCustomViewButton.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewButton.vue?eeb7","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewButton.vue?b8ed","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewButton.vue?0c11","webpack://cloudctrl/src/components/Domain.CustomViews/PostCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewDialog.vue?f804","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewDialog.vue?549e","webpack://cloudctrl/./src/components/Domain.CustomViews/PostCustomViewDialog.vue?2470","webpack://cloudctrl/./src/lib/Uint.ts","webpack://cloudctrl/./src/lib/Api.ts","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue?dd62","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue?38f0","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue?5ad7","webpack://cloudctrl/./src/components/Common/EntitySearchAutocomplete.vue?6673","webpack://cloudctrl/./src/components/Common/EntityTypeIcon.vue","webpack://cloudctrl/src/components/Common/EntityTypeIcon.vue","webpack://cloudctrl/./src/components/Common/EntityTypeIcon.vue?2ff5","webpack://cloudctrl/./src/components/Common/EntityTypeIcon.vue?2ca8","webpack://cloudctrl/./src/components/Common/CloudProviderTypeIcon.vue","webpack://cloudctrl/src/components/Common/CloudProviderTypeIcon.vue","webpack://cloudctrl/./src/components/Common/CloudProviderTypeIcon.vue?c0fe","webpack://cloudctrl/./src/components/Common/CloudProviderTypeIcon.vue?9047","webpack://cloudctrl/./src/components/Common/TextDatePicker.vue","webpack://cloudctrl/src/components/Common/TextDatePicker.vue","webpack://cloudctrl/./src/components/Common/TextDatePicker.vue?e5f4","webpack://cloudctrl/./src/components/Common/TextDatePicker.vue?3a10","webpack://cloudctrl/./src/components/Common/ConditionalVMain.vue","webpack://cloudctrl/src/components/Common/ConditionalVMain.vue","webpack://cloudctrl/./src/components/Common/ConditionalVMain.vue?cf07","webpack://cloudctrl/./src/components/Common/ConditionalVMain.vue?4b87","webpack://cloudctrl/./src/plugins/common.ts","webpack://cloudctrl/./src/plugins/directives.ts","webpack://cloudctrl/./src/views/MainView.vue","webpack://cloudctrl/./src/components/View.Nav/NavMenuList.vue","webpack://cloudctrl/./src/stores/tenant.ts","webpack://cloudctrl/./src/lib/FeatureNames.ts","webpack://cloudctrl/src/components/View.Nav/NavMenuList.vue","webpack://cloudctrl/./src/components/View.Nav/NavMenuList.vue?d907","webpack://cloudctrl/./src/components/View.Nav/NavMenuList.vue?f2f5","webpack://cloudctrl/./src/components/View.Nav/NavMenuList.vue?5dbb","webpack://cloudctrl/./src/components/View.Nav/NavUserMenuList.vue","webpack://cloudctrl/./src/components/Account.ManageTenants/ProfileTenantsTable.vue","webpack://cloudctrl/./src/components/Account.ManageTenants/EmailSubscriptionCheckbox.vue","webpack://cloudctrl/src/components/Account.ManageTenants/EmailSubscriptionCheckbox.vue","webpack://cloudctrl/./src/components/Account.ManageTenants/EmailSubscriptionCheckbox.vue?1c10","webpack://cloudctrl/./src/components/Account.ManageTenants/EmailSubscriptionCheckbox.vue?5d1e","webpack://cloudctrl/src/components/Account.ManageTenants/ProfileTenantsTable.vue","webpack://cloudctrl/./src/components/Account.ManageTenants/ProfileTenantsTable.vue?8ead","webpack://cloudctrl/./src/components/Account.ManageTenants/ProfileTenantsTable.vue?3626","webpack://cloudctrl/./src/lib/MD5.js","webpack://cloudctrl/src/components/View.Nav/NavUserMenuList.vue","webpack://cloudctrl/./src/components/View.Nav/NavUserMenuList.vue?7185","webpack://cloudctrl/./src/components/View.Nav/NavUserMenuList.vue?042f","webpack://cloudctrl/./src/components/View.Nav/NavUserMenuList.vue?446e","webpack://cloudctrl/./src/components/View.Nav/NavTenantMenuList.vue","webpack://cloudctrl/./src/stores/account.ts","webpack://cloudctrl/src/components/View.Nav/NavTenantMenuList.vue","webpack://cloudctrl/./src/components/View.Nav/NavTenantMenuList.vue?4cd0","webpack://cloudctrl/./src/components/View.Nav/NavTenantMenuList.vue?ba75","webpack://cloudctrl/./src/components/View.Nav/NavTenantMenuList.vue?d2d2","webpack://cloudctrl/src/views/MainView.vue","webpack://cloudctrl/./src/views/MainView.vue?3935","webpack://cloudctrl/./src/views/MainView.vue?0dfb","webpack://cloudctrl/./src/views/MainView.vue?1c58","webpack://cloudctrl/./src/views/FinanceDashboard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CredentialStatusIcon.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/CredentialStatusIcon.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CredentialStatusIcon.vue?abcc","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CredentialStatusIcon.vue?5b7a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CredentialStatusIcon.vue?fb68","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageBarChart.vue","webpack://cloudctrl/./src/stores/wait.ts","webpack://cloudctrl/./src/stores/filters.ts","webpack://cloudctrl/./src/lib/CssVariables.ts","webpack://cloudctrl/./src/chartjs/legacy.ts","webpack://cloudctrl/./src/chartjs/dayJsAdapter.js","webpack://cloudctrl/./src/chartjs/legendPlugin.ts","webpack://cloudctrl/./src/chartjs/createUsageBarChart.ts","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageBarChart.vue?31ed","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageBarChart.vue?4856","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageBarChart.vue?7a52","webpack://cloudctrl/./src/components/Domain.Tenants/SetTenantCard.vue","webpack://cloudctrl/./src/components/Domain.Currencies/CurrencyComboBox.vue","webpack://cloudctrl/src/components/Domain.Currencies/CurrencyComboBox.vue","webpack://cloudctrl/./src/components/Domain.Currencies/CurrencyComboBox.vue?fdf9","webpack://cloudctrl/./src/components/Domain.Currencies/CurrencyComboBox.vue?8bb2","webpack://cloudctrl/./src/components/Domain.Currencies/CurrencyComboBox.vue?7abe","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyAutocomplete.vue","webpack://cloudctrl/src/components/Domain.Tags/TagKeyAutocomplete.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyAutocomplete.vue?3e46","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyAutocomplete.vue?5e6b","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyAutocomplete.vue?0f61","webpack://cloudctrl/src/components/Domain.Tenants/SetTenantCard.vue","webpack://cloudctrl/./src/components/Domain.Tenants/SetTenantCard.vue?2960","webpack://cloudctrl/./src/components/Domain.Tenants/SetTenantCard.vue?cafa","webpack://cloudctrl/./src/components/Domain.Tenants/SetTenantCard.vue?018c","webpack://cloudctrl/./src/components/Domain.Tenants/PutTenantButton.vue","webpack://cloudctrl/src/components/Domain.Tenants/PutTenantButton.vue","webpack://cloudctrl/./src/components/Domain.Tenants/PutTenantButton.vue?72ac","webpack://cloudctrl/./src/components/Domain.Tenants/PutTenantButton.vue?ce15","webpack://cloudctrl/./src/components/Domain.Tenants/PutTenantButton.vue?1397","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue?11ce","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue?56b2","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue?efae","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeButtonToggle.vue?eaf5","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue?35b2","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue?7871","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue?b547","webpack://cloudctrl/./src/components/Domain.Usage/SegregationButtonToggle.vue?77b8","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue?ad97","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue?a0fc","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue?2cd3","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue?8e98","webpack://cloudctrl/./src/enums/UnitOfDisplay.enum.ts","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue","webpack://cloudctrl/./src/plugins/agGrid.ts","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue?6891","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue?9ea8","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue?fa14","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTable.vue?31eb","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageTableFunctions.ts","webpack://cloudctrl/src/views/FinanceDashboard.vue","webpack://cloudctrl/./src/views/FinanceDashboard.vue?033c","webpack://cloudctrl/./src/views/FinanceDashboard.vue?9398","webpack://cloudctrl/./src/views/FinanceDashboard.vue?2647","webpack://cloudctrl/./src/views/TrendsDashboard.vue","webpack://cloudctrl/./src/components/Domain.Services/ServiceComparisonsTable.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonsTable.vue","webpack://cloudctrl/./src/lib/Downloader.ts","webpack://cloudctrl/src/components/Domain.Usage/UsageComparisonsTable.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonsTable.vue?d2c5","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonsTable.vue?7f9f","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonsTable.vue?63b5","webpack://cloudctrl/src/components/Domain.Services/ServiceComparisonsTable.vue","webpack://cloudctrl/./src/components/Domain.Services/ServiceComparisonsTable.vue?0450","webpack://cloudctrl/./src/components/Domain.Services/ServiceComparisonsTable.vue?86e4","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue","webpack://cloudctrl/src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue?5d5d","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue?0238","webpack://cloudctrl/./src/components/Domain.Usage/UsageComparisonOptionsToolbar.vue?c58d","webpack://cloudctrl/./src/components/Domain.Products/ProductComparisonsTable.vue","webpack://cloudctrl/src/components/Domain.Products/ProductComparisonsTable.vue","webpack://cloudctrl/./src/components/Domain.Products/ProductComparisonsTable.vue?291a","webpack://cloudctrl/./src/components/Domain.Products/ProductComparisonsTable.vue?325d","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionComparisonsTable.vue","webpack://cloudctrl/src/components/Domain.Subscriptions/SubscriptionComparisonsTable.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionComparisonsTable.vue?eed0","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionComparisonsTable.vue?98ee","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountComparisonsTable.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/CloudAccountComparisonsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountComparisonsTable.vue?fa53","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountComparisonsTable.vue?7604","webpack://cloudctrl/./src/components/Domain.Usage/TrendBarChart.vue","webpack://cloudctrl/./src/chartjs/createTrendsBarChart.ts","webpack://cloudctrl/./src/components/Domain.Usage/TrendBarChart.vue?2026","webpack://cloudctrl/./src/components/Domain.Usage/TrendBarChart.vue?1e31","webpack://cloudctrl/./src/components/Domain.Usage/TrendBarChart.vue?1ca3","webpack://cloudctrl/./src/views/TrendsDashboard.vue?e232","webpack://cloudctrl/./src/views/TrendsDashboard.vue?03da","webpack://cloudctrl/./src/views/TrendsDashboard.vue?94c4","webpack://cloudctrl/./src/views/TrendsDashboard.vue?7910","webpack://cloudctrl/./src/views/ReservationsDashboard.vue","webpack://cloudctrl/./src/views/ReservationsDashboard.vue?345b","webpack://cloudctrl/./src/views/ReservationsDashboard.vue?d426","webpack://cloudctrl/./src/views/ReservationsDashboard.vue?c86b","webpack://cloudctrl/./src/views/ReservationsDashboard.vue?060d","webpack://cloudctrl/./src/views/Recommendations.vue","webpack://cloudctrl/./src/lib/Recommendations.ts","webpack://cloudctrl/./src/components/View.Recommendations/ResultTable.vue","webpack://cloudctrl/src/components/View.Recommendations/ResultTable.vue","webpack://cloudctrl/./src/components/View.Recommendations/ResultTable.vue?a41c","webpack://cloudctrl/./src/components/View.Recommendations/ResultTable.vue?06a5","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationHeaderCard.vue","webpack://cloudctrl/src/components/View.Recommendations/RecommendationHeaderCard.vue","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationHeaderCard.vue?4b43","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationHeaderCard.vue?adfe","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationCurrentlyAvailableCard.vue","webpack://cloudctrl/src/components/View.Recommendations/RecommendationCurrentlyAvailableCard.vue","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationCurrentlyAvailableCard.vue?8935","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationCurrentlyAvailableCard.vue?9ef8","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationCredentialsRequiredCard.vue","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationCredentialsRequiredCard.vue?568a","webpack://cloudctrl/./src/components/View.Recommendations/EditRecommendationSettingDialog.vue","webpack://cloudctrl/./src/components/View.Recommendations/SetRecommendationSettingsCard.vue","webpack://cloudctrl/src/components/View.Recommendations/SetRecommendationSettingsCard.vue","webpack://cloudctrl/./src/components/View.Recommendations/SetRecommendationSettingsCard.vue?44e8","webpack://cloudctrl/./src/components/View.Recommendations/SetRecommendationSettingsCard.vue?4d2d","webpack://cloudctrl/./src/components/View.Recommendations/SetRecommendationSettingsCard.vue?32d1","webpack://cloudctrl/src/components/View.Recommendations/EditRecommendationSettingDialog.vue","webpack://cloudctrl/./src/components/View.Recommendations/EditRecommendationSettingDialog.vue?c09a","webpack://cloudctrl/./src/components/View.Recommendations/EditRecommendationSettingDialog.vue?ae90","webpack://cloudctrl/./src/components/View.Recommendations/PutRecommendationSettingsButton.vue","webpack://cloudctrl/src/components/View.Recommendations/PutRecommendationSettingsButton.vue","webpack://cloudctrl/./src/components/View.Recommendations/PutRecommendationSettingsButton.vue?dbdd","webpack://cloudctrl/./src/components/View.Recommendations/PutRecommendationSettingsButton.vue?6808","webpack://cloudctrl/./src/components/View.Recommendations/PutRecommendationSettingsButton.vue?ff4d","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationNotAvailableCard.vue","webpack://cloudctrl/src/components/View.Recommendations/RecommendationNotAvailableCard.vue","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationNotAvailableCard.vue?57f5","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationNotAvailableCard.vue?e2dc","webpack://cloudctrl/./src/components/View.Recommendations/RecommendationNotAvailableCard.vue?2cc2","webpack://cloudctrl/src/views/Recommendations.vue","webpack://cloudctrl/./src/views/Recommendations.vue?7119","webpack://cloudctrl/./src/views/Recommendations.vue?5beb","webpack://cloudctrl/./src/views/Recommendations.vue?310c","webpack://cloudctrl/./src/views/KubernetesDashboard.vue","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue?cc68","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue?37d5","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue?ac02","webpack://cloudctrl/./src/components/Domain.Kubernetes/NamespaceSpendTable.vue?d673","webpack://cloudctrl/./src/components/Domain.Kubernetes/ClusterSpendBarChart.vue","webpack://cloudctrl/./src/chartjs/createClusterSpendBarChart.ts","webpack://cloudctrl/./src/components/Domain.Kubernetes/ClusterSpendBarChart.vue?99ed","webpack://cloudctrl/./src/components/Domain.Kubernetes/ClusterSpendBarChart.vue?072a","webpack://cloudctrl/./src/components/Domain.Kubernetes/ClusterSpendBarChart.vue?3aa8","webpack://cloudctrl/./src/views/KubernetesDashboard.vue?bd57","webpack://cloudctrl/./src/views/KubernetesDashboard.vue?128f","webpack://cloudctrl/./src/views/KubernetesDashboard.vue?002e","webpack://cloudctrl/./src/views/KubernetesDashboard.vue?eaf6","webpack://cloudctrl/./src/views/Passthrough.vue","webpack://cloudctrl/./src/views/Passthrough.vue?8719","webpack://cloudctrl/./src/views/Reports/TagOverview.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagSpendAreaChart.vue","webpack://cloudctrl/./src/chartjs/createTagSpendAreaChart.ts","webpack://cloudctrl/./src/components/Domain.Tags/TagSpendAreaChart.vue?3b73","webpack://cloudctrl/./src/components/Domain.Tags/TagSpendAreaChart.vue?75dd","webpack://cloudctrl/./src/components/Domain.Tags/TagSpendAreaChart.vue?0018","webpack://cloudctrl/./src/components/Common/Banner.vue","webpack://cloudctrl/src/components/Common/Banner.vue","webpack://cloudctrl/./src/components/Common/Banner.vue?98c8","webpack://cloudctrl/./src/components/Common/Banner.vue?1fc5","webpack://cloudctrl/./src/views/Reports/TagOverview.vue?a1ee","webpack://cloudctrl/./src/views/Reports/TagOverview.vue?d307","webpack://cloudctrl/./src/views/Reports/TagOverview.vue?5bab","webpack://cloudctrl/./src/views/Reports/TagOverview.vue?4cc6","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerUsageBarChart.vue","webpack://cloudctrl/./src/chartjs/createCustomerUsageBarChart.ts","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerUsageBarChart.vue?7ee3","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerUsageBarChart.vue?4f2f","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerUsageBarChart.vue?f41f","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerTable.vue","webpack://cloudctrl/src/components/View.CustomerUsage/CustomerTable.vue","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerTable.vue?2223","webpack://cloudctrl/./src/components/View.CustomerUsage/CustomerTable.vue?167d","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue?55ce","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue?110d","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue?3005","webpack://cloudctrl/./src/views/Reports/CustomersUsage.vue?6c5c","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionUsageChartCard.vue","webpack://cloudctrl/./src/highcharts/MapFactory.ts","webpack://cloudctrl/./src/components/Domain.Regions/RegionUsageChartCard.vue?e943","webpack://cloudctrl/./src/components/Domain.Regions/RegionUsageChartCard.vue?7d56","webpack://cloudctrl/./src/components/Domain.Regions/RegionUsageChartCard.vue?47e1","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue?2d45","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue?6f6a","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue?2767","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTable.vue?4727","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue?dbc1","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue?ccf0","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue?d44e","webpack://cloudctrl/./src/components/Domain.Regions/RegionsTableCard.vue?455e","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue?5f49","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue?8b6e","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue?19d4","webpack://cloudctrl/./src/views/Reports/RegionOverview.vue?501d","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonBarChart.vue","webpack://cloudctrl/./src/chartjs/createEmissionBarChart.ts","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonBarChart.vue?b459","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonBarChart.vue?c88c","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonBarChart.vue?acdf","webpack://cloudctrl/./src/components/Domain.Tags/TagCarbonTable.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagCarbonTable.vue?7ac4","webpack://cloudctrl/./src/components/Domain.Tags/TagCarbonTable.vue?f3c3","webpack://cloudctrl/./src/components/Domain.Tags/TagCarbonTable.vue?aba0","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingFooter.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue?41c9","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue?efc5","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue?b016","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingCard.vue?2178","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue?3834","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue?c3a6","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue?48cd","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingMappingDialog.vue?ec1e","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingFooter.vue?127f","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingFooter.vue?e9d8","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonMissingFooter.vue?cbf5","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue?9767","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue?79f0","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue?bb5b","webpack://cloudctrl/./src/views/CarbonFootprint/Overview.vue?b046","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue?3c14","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue?98e8","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue?22da","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonTable.vue?cb41","webpack://cloudctrl/./src/databases/KeyedBlobsDb.ts","webpack://cloudctrl/./src/lib/UserPreferences.ts","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue?242d","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue?b651","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue?7a0b","webpack://cloudctrl/./src/views/CarbonFootprint/Explorer.vue?c27f","webpack://cloudctrl/./src/components/Domain.Regions/RegionCarbonChartCard.vue?f9e0","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionCarbonChartCard.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionCarbonChartCard.vue?8967","webpack://cloudctrl/./src/components/Domain.Regions/RegionCarbonChartCard.vue?4c3f","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue?b747","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue?7d3a","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue?81c8","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTable.vue?0ba2","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue?788e","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue?c186","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue?2742","webpack://cloudctrl/./src/components/Domain.Regions/RegionsCarbonTableCard.vue?aa41","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue?805d","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue?f8a5","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue?3a4d","webpack://cloudctrl/./src/views/CarbonFootprint/Map.vue?74c2","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue","webpack://cloudctrl/./src/views/CustomersManage/CreateCustomerDialog.vue","webpack://cloudctrl/./src/components/View.CustomersManage/AddCustomerButton.vue","webpack://cloudctrl/src/components/View.CustomersManage/AddCustomerButton.vue","webpack://cloudctrl/./src/components/View.CustomersManage/AddCustomerButton.vue?e561","webpack://cloudctrl/./src/components/View.CustomersManage/AddCustomerButton.vue?3644","webpack://cloudctrl/./src/components/View.CustomersManage/AddCustomerButton.vue?0341","webpack://cloudctrl/src/views/CustomersManage/CreateCustomerDialog.vue","webpack://cloudctrl/./src/views/CustomersManage/CreateCustomerDialog.vue?da01","webpack://cloudctrl/./src/views/CustomersManage/CreateCustomerDialog.vue?005e","webpack://cloudctrl/./src/views/CustomersManage/CreateCustomerDialog.vue?e782","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue?d213","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue?c1a0","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue?d897","webpack://cloudctrl/./src/views/CustomersManage/CustomersManage.vue?40c5","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage.vue","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Users.vue","webpack://cloudctrl/./src/components/Settings.Users/SetUserCard.vue","webpack://cloudctrl/src/components/Settings.Users/SetUserCard.vue","webpack://cloudctrl/./src/components/Settings.Users/SetUserCard.vue?bf14","webpack://cloudctrl/./src/components/Settings.Users/SetUserCard.vue?453a","webpack://cloudctrl/./src/components/Settings.Users/SetUserCard.vue?0e8f","webpack://cloudctrl/./src/components/Settings.Users/UsersTable.vue","webpack://cloudctrl/./src/components/Settings.Users/UsersTable.vue?188d","webpack://cloudctrl/./src/components/Settings.Users/UsersTable.vue?6406","webpack://cloudctrl/./src/components/Settings.Users/UsersTable.vue?cf7b","webpack://cloudctrl/./src/components/Settings.Users/AddUserButton.vue","webpack://cloudctrl/src/components/Settings.Users/AddUserButton.vue","webpack://cloudctrl/./src/components/Settings.Users/AddUserButton.vue?cca6","webpack://cloudctrl/./src/components/Settings.Users/AddUserButton.vue?e619","webpack://cloudctrl/./src/components/Settings.Users/UpdateUserButton.vue","webpack://cloudctrl/src/components/Settings.Users/UpdateUserButton.vue","webpack://cloudctrl/./src/components/Settings.Users/UpdateUserButton.vue?aa5b","webpack://cloudctrl/./src/components/Settings.Users/UpdateUserButton.vue?8fda","webpack://cloudctrl/./src/components/Settings.Users/DeleteUserButton.vue","webpack://cloudctrl/src/components/Settings.Users/DeleteUserButton.vue","webpack://cloudctrl/./src/components/Settings.Users/DeleteUserButton.vue?ed80","webpack://cloudctrl/./src/components/Settings.Users/DeleteUserButton.vue?ace9","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupPermissionsCard.vue","webpack://cloudctrl/src/components/Settings.Users/SetUserGroupPermissionsCard.vue","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupPermissionsCard.vue?1230","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupPermissionsCard.vue?a7fe","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupPermissionsCard.vue?3daf","webpack://cloudctrl/src/views/CustomersManage/CustomerManage/Users.vue","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Users.vue?417e","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Users.vue?cb28","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Users.vue?bb2c","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue?97e9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue?d646","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue?c9d2","webpack://cloudctrl/./src/stores/models/TaxonomyType.ts","webpack://cloudctrl/./src/stores/cloudAccountNavigation.ts","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue?e2dd","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue?74c3","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue?e56c","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/SharedData.vue?0fbd","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Features.vue","webpack://cloudctrl/src/views/CustomersManage/CustomerManage/Features.vue","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Features.vue?e82e","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage/Features.vue?5173","webpack://cloudctrl/src/views/CustomersManage/CustomerManage.vue","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage.vue?31cb","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage.vue?008d","webpack://cloudctrl/./src/views/CustomersManage/CustomerManage.vue?a9cc","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue?121b","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue?4c13","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue?45e4","webpack://cloudctrl/./src/views/AzureEmissions/Dashboard.vue?553a","webpack://cloudctrl/./src/views/Settings/IndexView.vue","webpack://cloudctrl/src/views/Settings/IndexView.vue","webpack://cloudctrl/./src/views/Settings/IndexView.vue?79d1","webpack://cloudctrl/./src/views/Settings/IndexView.vue?e390","webpack://cloudctrl/./src/views/Settings/IndexView.vue?8f21","webpack://cloudctrl/./src/views/Settings/AmazonView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3BucketAutocomplete.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/S3BucketAutocomplete.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3BucketAutocomplete.vue?d3e3","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3BucketAutocomplete.vue?6b76","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue?519d","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue?43c3","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/S3RegionAutocomplete.vue?fb9e","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue?9c94","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue?7997","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsCard.vue?d102","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsDialog.vue?3d98","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonWSCredentialsDialog.vue?e2b3","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PostCloudAccountButton.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/PostCloudAccountButton.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PostCloudAccountButton.vue?3bff","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PostCloudAccountButton.vue?e834","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PostCloudAccountButton.vue?d397","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue?c026","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue?88c9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue?2837","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue?7a7e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue?47ba","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsCard.vue?3fdb","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsDialog.vue?ad8a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/SetAmazonAssumeRoleCredentialsDialog.vue?ffc4","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue?20df","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue?de3a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonWSCredentialDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PutCredentialButton.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/PutCredentialButton.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PutCredentialButton.vue?b0c1","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PutCredentialButton.vue?b579","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PutCredentialButton.vue?2ce8","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/UpdateAmazonWSCredentialDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonWSCredentialDialog.vue?8e70","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonWSCredentialDialog.vue?ad4e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue?d463","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue?fcf2","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue?172a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue?2f4f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountButton.vue?5955","webpack://cloudctrl/src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue?86fc","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue?35f2","webpack://cloudctrl/./src/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue?8700","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue","webpack://cloudctrl/./src/components/Common/UpdateEntityNameCard.vue","webpack://cloudctrl/src/components/Common/UpdateEntityNameCard.vue","webpack://cloudctrl/./src/components/Common/UpdateEntityNameCard.vue?7a3f","webpack://cloudctrl/./src/components/Common/UpdateEntityNameCard.vue?498f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue?88b8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue?1941","webpack://cloudctrl/./src/components/Settings.CloudAccounts/PatchCloudAccountButton.vue?8b84","webpack://cloudctrl/src/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue?cb4f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue?1477","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue?090e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue?b275","webpack://cloudctrl/./src/components/Settings.CloudAccounts/SetCloudAccountCurrenciesCard.vue?21d4","webpack://cloudctrl/src/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue?481a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue?8047","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue?0808","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue?744f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue?fcc3","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue?9470","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue","webpack://cloudctrl/./src/components/Common/PrettyListItemMenu.vue","webpack://cloudctrl/./src/components/Common/PrettyListItem.vue","webpack://cloudctrl/src/components/Common/PrettyListItem.vue","webpack://cloudctrl/./src/components/Common/PrettyListItem.vue?6693","webpack://cloudctrl/./src/components/Common/PrettyListItem.vue?c8dc","webpack://cloudctrl/./src/components/Common/PrettyListItemMenu.vue?f8f4","webpack://cloudctrl/./src/components/Common/PrettyListItemMenu.vue?384d","webpack://cloudctrl/./src/components/Common/PrettyListItemMenu.vue?7674","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue?0009","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue?d5b6","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue?1981","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue?13b2","webpack://cloudctrl/./src/views/Settings/AmazonView.vue?44c1","webpack://cloudctrl/./src/views/Settings/AmazonView.vue?b1d2","webpack://cloudctrl/./src/views/Settings/AmazonView.vue?dfe1","webpack://cloudctrl/./src/views/Settings/AmazonView.vue?27df","webpack://cloudctrl/./src/views/Settings/AzureView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue?c8ca","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue?e9dc","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue?4f04","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue?fb58","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue?af70","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue?98b8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsCard.vue?67f0","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsDialog.vue?e3a9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureARMCredentialsDialog.vue?cc06","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue?e201","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue?0092","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCmeCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue?f0da","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue?4419","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsCard.vue?95c9","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsDialog.vue?14c5","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureCmeCredentialsDialog.vue?8724","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/CreateAzureCmeCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCmeCloudAccountDialog.vue?db2e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureCmeCloudAccountDialog.vue?688d","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue","webpack://cloudctrl/./src/lib/JwtParser.ts","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue?a22c","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue?cd21","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsCard.vue?a4c4","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsDialog.vue?1e34","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/SetAzureEaCredentialsDialog.vue?a4a7","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue?44ec","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue?e911","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue?daf4","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue?9088","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsCard.vue?8890","webpack://cloudctrl/src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsDialog.vue?b1b8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/SetRhipeCredentialsDialog.vue?634e","webpack://cloudctrl/src/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue?b4f1","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue?f9a0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureARMCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/UpdateAzureARMCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureARMCredentialsDialog.vue?21c8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureARMCredentialsDialog.vue?9490","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureCmeCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/UpdateAzureCmeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureCmeCredentialsDialog.vue?b080","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureCmeCredentialsDialog.vue?f973","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureEaCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/UpdateAzureEaCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureEaCredentialsDialog.vue?115f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/UpdateAzureEaCredentialsDialog.vue?a7a0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/UpdateRhipeCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Distributors/UpdateRhipeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/UpdateRhipeCredentialsDialog.vue?53a8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Distributors/UpdateRhipeCredentialsDialog.vue?08fa","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue?edd5","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue?315d","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue?46a9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue?87b4","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue?5c42","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue?ce52","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue?4cb0","webpack://cloudctrl/./src/views/Settings/AzureView.vue?dbf6","webpack://cloudctrl/./src/views/Settings/AzureView.vue?ad5a","webpack://cloudctrl/./src/views/Settings/AzureView.vue?9c16","webpack://cloudctrl/./src/views/Settings/AzureView.vue?7697","webpack://cloudctrl/./src/views/Settings/GoogleView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/CreateGoogleAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue?29ef","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue?d7ac","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue?cd26","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsCard.vue?be0f","webpack://cloudctrl/src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsDialog.vue?4d96","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/SetGoogleJsonCredentialsDialog.vue?ba8b","webpack://cloudctrl/src/components/Settings.CloudAccounts/Google/CreateGoogleAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/CreateGoogleAccountDialog.vue?f1d4","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/CreateGoogleAccountDialog.vue?ce96","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/UpdateGoogleJsonCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Google/UpdateGoogleJsonCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/UpdateGoogleJsonCredentialsDialog.vue?a585","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/UpdateGoogleJsonCredentialsDialog.vue?ddc6","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue?2c5f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue?6853","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Google/GoogleCloudAccountsTable.vue?aa30","webpack://cloudctrl/src/views/Settings/GoogleView.vue","webpack://cloudctrl/./src/views/Settings/GoogleView.vue?aaf4","webpack://cloudctrl/./src/views/Settings/GoogleView.vue?7cbf","webpack://cloudctrl/./src/views/Settings/GoogleView.vue?38d3","webpack://cloudctrl/./src/views/Settings/OracleView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue?8645","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue?f3fb","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue?b843","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsCard.vue?3e89","webpack://cloudctrl/src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsDialog.vue?20f2","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/SetOracleCredentialsDialog.vue?b791","webpack://cloudctrl/src/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue?108a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue?a973","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/UpdateOracleCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Oracle/UpdateOracleCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/UpdateOracleCredentialsDialog.vue?fc2f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/UpdateOracleCredentialsDialog.vue?191e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue?c45c","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue?9496","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue?5e3f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue?6e32","webpack://cloudctrl/./src/views/Settings/OracleView.vue?aaa6","webpack://cloudctrl/./src/views/Settings/OracleView.vue?28ac","webpack://cloudctrl/./src/views/Settings/OracleView.vue?758c","webpack://cloudctrl/./src/views/Settings/OracleView.vue?3cc1","webpack://cloudctrl/./src/views/Settings/AlibabaView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue?c3b0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue?9424","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue?5366","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaCloudAccountsTable.vue?c0b7","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/CreateAlibabaCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue?98d9","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue?789d","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue?50b0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue?bffe","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue?a196","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue?be3e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue?2ed5","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue?d896","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsDialog.vue?0f81","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsDialog.vue?cee0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsDialog.vue?f9ae","webpack://cloudctrl/src/components/Settings.CloudAccounts/Alibaba/CreateAlibabaCloudAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/CreateAlibabaCloudAccountDialog.vue?d974","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/CreateAlibabaCloudAccountDialog.vue?4194","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/UpdateAlibabaCredentialsDialog.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/Alibaba/UpdateAlibabaCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/UpdateAlibabaCredentialsDialog.vue?532b","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Alibaba/UpdateAlibabaCredentialsDialog.vue?1e78","webpack://cloudctrl/src/views/Settings/AlibabaView.vue","webpack://cloudctrl/./src/views/Settings/AlibabaView.vue?17c4","webpack://cloudctrl/./src/views/Settings/AlibabaView.vue?c57b","webpack://cloudctrl/./src/views/Settings/AlibabaView.vue?c807","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/CreateSnowflakeAccountDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue?e8fb","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue?5d4f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue?686f","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue?9a23","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue?83fc","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue?2ed0","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue?05e2","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/CreateSnowflakeAccountDialog.vue?224a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/CreateSnowflakeAccountDialog.vue?ebcd","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/CreateSnowflakeAccountDialog.vue?fc00","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/UpdateSnowflakeCredentialsDialog.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/UpdateSnowflakeCredentialsDialog.vue?0e70","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/UpdateSnowflakeCredentialsDialog.vue?98a2","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/UpdateSnowflakeCredentialsDialog.vue?4c8e","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue?9f38","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue?afd3","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue?0cd8","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue?1938","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue?b223","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue?0d20","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue?eef4","webpack://cloudctrl/./src/views/Settings/SnowflakeView.vue?3f9f","webpack://cloudctrl/./src/views/Settings/CustomView.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue?943a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue?019c","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue?8fdd","webpack://cloudctrl/./src/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue?8b33","webpack://cloudctrl/./src/views/Settings/CustomView.vue?308c","webpack://cloudctrl/./src/views/Settings/CustomView.vue?4390","webpack://cloudctrl/./src/views/Settings/CustomView.vue?ab2a","webpack://cloudctrl/./src/views/Settings/CustomView.vue?ee65","webpack://cloudctrl/./src/views/Settings/GroupsView.vue","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupCard.vue","webpack://cloudctrl/src/components/Settings.Users/SetUserGroupCard.vue","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupCard.vue?373a","webpack://cloudctrl/./src/components/Settings.Users/SetUserGroupCard.vue?f8d0","webpack://cloudctrl/./src/components/Common/ModalListInput.vue","webpack://cloudctrl/./src/components/Common/ModalListInput.vue?546d","webpack://cloudctrl/./src/components/Common/ModalListInput.vue?4a4f","webpack://cloudctrl/./src/components/Common/ModalListInput.vue?0426","webpack://cloudctrl/./src/views/Settings/GroupsView.vue?b0d8","webpack://cloudctrl/./src/views/Settings/GroupsView.vue?8e92","webpack://cloudctrl/./src/views/Settings/GroupsView.vue?18d0","webpack://cloudctrl/./src/views/Settings/GroupsView.vue?ee53","webpack://cloudctrl/./src/views/Settings/UsersView.vue","webpack://cloudctrl/src/views/Settings/UsersView.vue","webpack://cloudctrl/./src/views/Settings/UsersView.vue?2d45","webpack://cloudctrl/./src/views/Settings/UsersView.vue?c5e3","webpack://cloudctrl/./src/views/Settings/UsersView.vue?4f68","webpack://cloudctrl/./src/views/Settings/BillingDetailsView.vue","webpack://cloudctrl/./src/lib/BillingDetailsStatus.ts","webpack://cloudctrl/./src/components/Common/ConsumptionBar.vue","webpack://cloudctrl/./src/components/Common/ConsumptionBar.vue?89dc","webpack://cloudctrl/./src/components/Common/ConsumptionBar.vue?d7f7","webpack://cloudctrl/./src/components/Common/ConsumptionBar.vue?0d11","webpack://cloudctrl/./src/components/Account.SelfService/SelectPlanCard.vue","webpack://cloudctrl/src/components/Account.SelfService/SelectPlanCard.vue","webpack://cloudctrl/./src/components/Account.SelfService/SelectPlanCard.vue?b3c3","webpack://cloudctrl/./src/components/Account.SelfService/SelectPlanCard.vue?8b99","webpack://cloudctrl/src/views/Settings/BillingDetailsView.vue","webpack://cloudctrl/./src/views/Settings/BillingDetailsView.vue?5021","webpack://cloudctrl/./src/views/Settings/BillingDetailsView.vue?b727","webpack://cloudctrl/./src/views/Settings/BillingDetailsView.vue?969f","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue?46e6","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue?5684","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue?4f21","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyCard.vue?ef0f","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyButton.vue","webpack://cloudctrl/src/components/Account.ApiManagement/GenerateApiKeyButton.vue","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyButton.vue?5676","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyButton.vue?6417","webpack://cloudctrl/./src/components/Account.ApiManagement/GenerateApiKeyButton.vue?00ff","webpack://cloudctrl/./src/components/Account.ApiManagement/DeleteApiKeyButton.vue","webpack://cloudctrl/src/components/Account.ApiManagement/DeleteApiKeyButton.vue","webpack://cloudctrl/./src/components/Account.ApiManagement/DeleteApiKeyButton.vue?684e","webpack://cloudctrl/./src/components/Account.ApiManagement/DeleteApiKeyButton.vue?409e","webpack://cloudctrl/./src/components/Account.ApiManagement/DeleteApiKeyButton.vue?2d7f","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue?2cac","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue?fc84","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue?589e","webpack://cloudctrl/./src/views/Settings/ApiManagementView.vue?5718","webpack://cloudctrl/./src/views/Settings/GeneralView.vue","webpack://cloudctrl/./src/components/Domain.Tenants/DeleteTenantButton.vue","webpack://cloudctrl/src/components/Domain.Tenants/DeleteTenantButton.vue","webpack://cloudctrl/./src/components/Domain.Tenants/DeleteTenantButton.vue?6a25","webpack://cloudctrl/./src/components/Domain.Tenants/DeleteTenantButton.vue?4e58","webpack://cloudctrl/./src/components/Domain.Tenants/DeleteTenantButton.vue?fb81","webpack://cloudctrl/src/views/Settings/GeneralView.vue","webpack://cloudctrl/./src/views/Settings/GeneralView.vue?c829","webpack://cloudctrl/./src/views/Settings/GeneralView.vue?843b","webpack://cloudctrl/./src/views/Settings/GeneralView.vue?8442","webpack://cloudctrl/./src/views/Settings/FxRatesView.vue","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateDialog.vue","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateDialog.vue","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateCard.vue","webpack://cloudctrl/src/components/Domain.FxRates/SetFxRateCard.vue","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateCard.vue?c826","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateCard.vue?0a43","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateDialog.vue?a596","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateDialog.vue?5d54","webpack://cloudctrl/./src/components/Domain.FxRates/SetFxRateDialog.vue?17ab","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateButton.vue","webpack://cloudctrl/src/components/Domain.FxRates/CreateFxRateButton.vue","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateButton.vue?530c","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateButton.vue?ae52","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateButton.vue?1020","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateDialog.vue?3a41","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateDialog.vue?2647","webpack://cloudctrl/./src/components/Domain.FxRates/CreateFxRateDialog.vue?0156","webpack://cloudctrl/./src/components/Domain.FxRates/FxRateMenu.vue","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateDialog.vue","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateButton.vue","webpack://cloudctrl/src/components/Domain.FxRates/EditFxRateButton.vue","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateButton.vue?770f","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateButton.vue?fa8e","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateButton.vue?954d","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateDialog.vue?c71b","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateDialog.vue?4ada","webpack://cloudctrl/./src/components/Domain.FxRates/EditFxRateDialog.vue?fc95","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateDialog.vue","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateButton.vue","webpack://cloudctrl/src/components/Domain.FxRates/DeleteFxRateButton.vue","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateButton.vue?8d7d","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateButton.vue?d346","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateButton.vue?79ea","webpack://cloudctrl/src/components/Domain.FxRates/DeleteFxRateDialog.vue","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateDialog.vue?55ef","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateDialog.vue?64a4","webpack://cloudctrl/./src/components/Domain.FxRates/DeleteFxRateDialog.vue?4c79","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue?b7e7","webpack://cloudctrl/src/components/Domain.FxRates/FxRateMenu.vue","webpack://cloudctrl/./src/components/Domain.FxRates/FxRateMenu.vue?e1da","webpack://cloudctrl/./src/components/Domain.FxRates/FxRateMenu.vue?728d","webpack://cloudctrl/./src/views/Settings/FxRatesView.vue?a402","webpack://cloudctrl/./src/views/Settings/FxRatesView.vue?fbc4","webpack://cloudctrl/./src/views/Settings/FxRatesView.vue?e1c6","webpack://cloudctrl/./src/views/Settings/TagMappings.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue?b5a7","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue?ad4b","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionTypeSelect.vue?aacc","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue?595b","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue?e37b","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue?76ff","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionTypeSelect.vue?c645","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue?2912","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue?a448","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue?16a4","webpack://cloudctrl/./src/components/Domain.Usage/UsageFieldSelect.vue?8db5","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue?c69f","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue?9c07","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue?2c01","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionLeftInput.vue?c122","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue?faab","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue?a36a","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue?6cfc","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingConditionRightInput.vue?ecc5","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue?3fe3","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue?0164","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue?db4c","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionLeftInput.vue?7a5a","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue?0e8d","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue?7311","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue?3eed","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingActionRightInput.vue?8886","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue?12c0","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue?e677","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue?96af","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingFormCardContent.vue?8b20","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingHeaderToolbar.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingHeaderToolbar.vue?e9b2","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingHeaderToolbar.vue?91af","webpack://cloudctrl/./src/components/Domain.Tags/TagMappingHeaderToolbar.vue?7c7a","webpack://cloudctrl/./src/views/Settings/TagMappings.vue?00fc","webpack://cloudctrl/./src/views/Settings/TagMappings.vue?fa36","webpack://cloudctrl/./src/views/Settings/TagMappings.vue?fbaa","webpack://cloudctrl/./src/views/Settings/MailingLists.vue","webpack://cloudctrl/./src/views/Settings/MailingLists.vue?d615","webpack://cloudctrl/./src/views/Settings/MailingLists.vue?e1d2","webpack://cloudctrl/./src/views/Settings/MailingLists.vue?c68f","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/WebhookCardDialog.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/SetWebhookCard.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/SetWebhookCard.vue?88d8","webpack://cloudctrl/./src/components/Domain.Webhooks/SetWebhookCard.vue?52b5","webpack://cloudctrl/./src/components/Domain.Webhooks/SetWebhookCard.vue?7ea4","webpack://cloudctrl/./src/components/Domain.Webhooks/WebhookCardDialog.vue?928d","webpack://cloudctrl/./src/components/Domain.Webhooks/WebhookCardDialog.vue?e8e1","webpack://cloudctrl/./src/components/Domain.Webhooks/WebhookCardDialog.vue?0286","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookButton.vue","webpack://cloudctrl/src/components/Domain.Webhooks/CreateWebhookButton.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookButton.vue?3b83","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookButton.vue?affd","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookButton.vue?05bc","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue?7f3f","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue?3c36","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue?4842","webpack://cloudctrl/./src/components/Domain.Webhooks/CreateWebhookDialog.vue?6ffe","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookButton.vue","webpack://cloudctrl/src/components/Domain.Webhooks/EditWebhookButton.vue","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookButton.vue?90e9","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookButton.vue?6dc4","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookButton.vue?030e","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue?0139","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue?fc26","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue?5eb7","webpack://cloudctrl/./src/components/Domain.Webhooks/EditWebhookDialog.vue?c18a","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue?5571","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue?abfb","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue?63ff","webpack://cloudctrl/./src/views/Settings/WebhooksView.vue?4843","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue?aec8","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue?8838","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue?0c54","webpack://cloudctrl/./src/views/Settings/DimensionsView.vue?6335","webpack://cloudctrl/./src/views/Settings/AuditView.vue","webpack://cloudctrl/./src/views/Settings/AuditView.vue?3d69","webpack://cloudctrl/./src/views/Settings/AuditView.vue?784d","webpack://cloudctrl/./src/views/Settings/AuditView.vue?41b3","webpack://cloudctrl/./src/views/Settings/AuditView.vue?e680","webpack://cloudctrl/./src/views/Auth/Choose.vue","webpack://cloudctrl/./src/components/Domain.Tenants/ChooseTenantCard.vue","webpack://cloudctrl/./src/components/Domain.Tenants/TenantRadioGroup.vue","webpack://cloudctrl/./src/components/Domain.Tenants/CreateTenantDialog.vue","webpack://cloudctrl/./src/components/Domain.Tenants/PostTenantButton.vue","webpack://cloudctrl/src/components/Domain.Tenants/PostTenantButton.vue","webpack://cloudctrl/./src/components/Domain.Tenants/PostTenantButton.vue?1eee","webpack://cloudctrl/./src/components/Domain.Tenants/PostTenantButton.vue?d7bc","webpack://cloudctrl/./src/components/Domain.Tenants/PostTenantButton.vue?49b2","webpack://cloudctrl/src/components/Domain.Tenants/CreateTenantDialog.vue","webpack://cloudctrl/./src/components/Domain.Tenants/CreateTenantDialog.vue?34fd","webpack://cloudctrl/./src/components/Domain.Tenants/CreateTenantDialog.vue?08e6","webpack://cloudctrl/./src/components/Domain.Tenants/CreateTenantDialog.vue?a659","webpack://cloudctrl/src/components/Domain.Tenants/TenantRadioGroup.vue","webpack://cloudctrl/./src/components/Domain.Tenants/TenantRadioGroup.vue?5ebf","webpack://cloudctrl/./src/components/Domain.Tenants/TenantRadioGroup.vue?a1d4","webpack://cloudctrl/./src/components/Domain.Tenants/TenantRadioGroup.vue?0a3a","webpack://cloudctrl/src/components/Domain.Tenants/ChooseTenantCard.vue","webpack://cloudctrl/./src/components/Domain.Tenants/ChooseTenantCard.vue?2009","webpack://cloudctrl/./src/components/Domain.Tenants/ChooseTenantCard.vue?030a","webpack://cloudctrl/./src/components/Domain.Tenants/ChooseTenantCard.vue?626a","webpack://cloudctrl/src/views/Auth/Choose.vue","webpack://cloudctrl/./src/views/Auth/Choose.vue?e28a","webpack://cloudctrl/./src/views/Auth/Choose.vue?9535","webpack://cloudctrl/./src/views/Auth/Choose.vue?3d5f","webpack://cloudctrl/./src/views/SelfService/CreateTenant.vue","webpack://cloudctrl/./src/components/Account.SelfService/CreateTenantCard.vue","webpack://cloudctrl/src/components/Account.SelfService/CreateTenantCard.vue","webpack://cloudctrl/./src/components/Account.SelfService/CreateTenantCard.vue?9453","webpack://cloudctrl/./src/components/Account.SelfService/CreateTenantCard.vue?d195","webpack://cloudctrl/./src/components/Account.SelfService/CreateTenantCard.vue?a53e","webpack://cloudctrl/./src/components/Account.SelfService/PostCreateTenantButton.vue","webpack://cloudctrl/src/components/Account.SelfService/PostCreateTenantButton.vue","webpack://cloudctrl/./src/components/Account.SelfService/PostCreateTenantButton.vue?54a8","webpack://cloudctrl/./src/components/Account.SelfService/PostCreateTenantButton.vue?aa33","webpack://cloudctrl/./src/components/Account.SelfService/PostCreateTenantButton.vue?af10","webpack://cloudctrl/src/views/SelfService/CreateTenant.vue","webpack://cloudctrl/./src/views/SelfService/CreateTenant.vue?6ccb","webpack://cloudctrl/./src/views/SelfService/CreateTenant.vue?8425","webpack://cloudctrl/./src/views/SelfService/CreateTenant.vue?f008","webpack://cloudctrl/./src/views/SelfService/SelectPlan.vue","webpack://cloudctrl/src/views/SelfService/SelectPlan.vue","webpack://cloudctrl/./src/views/SelfService/SelectPlan.vue?3ffa","webpack://cloudctrl/./src/views/SelfService/SelectPlan.vue?0310","webpack://cloudctrl/./src/views/ResourceExplorer/Index.vue","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageUnitToggle.vue","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageUnitToggle.vue?d01c","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageUnitToggle.vue?849d","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageUnitToggle.vue?fbf4","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationsTimeline.vue","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationButton.vue","webpack://cloudctrl/src/components/Domain.Annotations/DeleteAnnotationButton.vue","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationButton.vue?1a5d","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationButton.vue?3703","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationButton.vue?45cf","webpack://cloudctrl/src/components/Domain.Annotations/DeleteAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationDialog.vue?f73a","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationDialog.vue?ebbf","webpack://cloudctrl/./src/components/Domain.Annotations/DeleteAnnotationDialog.vue?fb39","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationCard.vue","webpack://cloudctrl/src/components/Domain.Annotations/AnnotationCard.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationCard.vue?a147","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationCard.vue?3741","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationCard.vue?a45e","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationButton.vue","webpack://cloudctrl/src/components/Domain.Annotations/EditAnnotationButton.vue","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationButton.vue?37f3","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationButton.vue?357d","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationButton.vue?918e","webpack://cloudctrl/src/components/Domain.Annotations/EditAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationDialog.vue?3bde","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationDialog.vue?6ca4","webpack://cloudctrl/./src/components/Domain.Annotations/EditAnnotationDialog.vue?0d8f","webpack://cloudctrl/src/components/Domain.Annotations/AnnotationsTimeline.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationsTimeline.vue?66f2","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationsTimeline.vue?2a8b","webpack://cloudctrl/./src/components/Domain.Annotations/AnnotationsTimeline.vue?d559","webpack://cloudctrl/src/views/ResourceExplorer/Index.vue","webpack://cloudctrl/./src/views/ResourceExplorer/Index.vue?aa9d","webpack://cloudctrl/./src/views/ResourceExplorer/Index.vue?32d2","webpack://cloudctrl/./src/views/ResourceExplorer/Index.vue?ee00","webpack://cloudctrl/./src/views/Dialog.Service/Dialog.vue","webpack://cloudctrl/src/views/Dialog.Service/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Service/Dialog.vue?f889","webpack://cloudctrl/./src/views/Dialog.Service/Dialog.vue?acbf","webpack://cloudctrl/./src/views/Dialog.Service/Dialog.vue?f9aa","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue","webpack://cloudctrl/./src/components/Domain.Usage/CostSummaryWidget.vue","webpack://cloudctrl/src/components/Domain.Usage/CostSummaryWidget.vue","webpack://cloudctrl/./src/components/Domain.Usage/CostSummaryWidget.vue?b48f","webpack://cloudctrl/./src/components/Domain.Usage/CostSummaryWidget.vue?6018","webpack://cloudctrl/./src/components/Domain.Services/ServiceMetadataChips.vue","webpack://cloudctrl/src/components/Domain.Services/ServiceMetadataChips.vue","webpack://cloudctrl/./src/components/Domain.Services/ServiceMetadataChips.vue?639c","webpack://cloudctrl/./src/components/Domain.Services/ServiceMetadataChips.vue?3fe7","webpack://cloudctrl/./src/components/Domain.Services/ServiceMetadataChips.vue?7b25","webpack://cloudctrl/./src/components/Domain.Services/ServiceManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Services/EditServiceSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Common/UpdateEntitySpendLimitCard.vue","webpack://cloudctrl/src/components/Common/UpdateEntitySpendLimitCard.vue","webpack://cloudctrl/./src/components/Common/UpdateEntitySpendLimitCard.vue?fe63","webpack://cloudctrl/./src/components/Common/UpdateEntitySpendLimitCard.vue?55fa","webpack://cloudctrl/./src/components/Common/UpdateEntitySpendLimitCard.vue?5870","webpack://cloudctrl/./src/components/Domain.Services/PatchServiceButton.vue","webpack://cloudctrl/src/components/Domain.Services/PatchServiceButton.vue","webpack://cloudctrl/./src/components/Domain.Services/PatchServiceButton.vue?aa5e","webpack://cloudctrl/./src/components/Domain.Services/PatchServiceButton.vue?64a2","webpack://cloudctrl/./src/components/Domain.Services/PatchServiceButton.vue?3556","webpack://cloudctrl/src/components/Domain.Services/EditServiceSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Services/EditServiceSpendLimitDialog.vue?f7ab","webpack://cloudctrl/./src/components/Domain.Services/EditServiceSpendLimitDialog.vue?b1a7","webpack://cloudctrl/src/components/Domain.Services/ServiceManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Services/ServiceManageMenu.vue?5ca2","webpack://cloudctrl/./src/components/Domain.Services/ServiceManageMenu.vue?cb40","webpack://cloudctrl/./src/components/Domain.Services/ServiceManageMenu.vue?c0c4","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue?b057","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue?aa93","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue?66ae","webpack://cloudctrl/./src/views/Dialog.Service/Index.vue?0a96","webpack://cloudctrl/./src/views/Dialog.Service/Annotations.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationButton.vue","webpack://cloudctrl/src/components/Domain.Annotations/AddAnnotationButton.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationButton.vue?dadb","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationButton.vue?776f","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationButton.vue?eb00","webpack://cloudctrl/src/components/Domain.Annotations/AddAnnotationDialog.vue","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationDialog.vue?b70b","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationDialog.vue?8001","webpack://cloudctrl/./src/components/Domain.Annotations/AddAnnotationDialog.vue?ed1f","webpack://cloudctrl/src/views/Dialog.Service/Annotations.vue","webpack://cloudctrl/./src/views/Dialog.Service/Annotations.vue?494c","webpack://cloudctrl/./src/views/Dialog.Service/Annotations.vue?f7fd","webpack://cloudctrl/./src/views/Dialog.Service/RecordTags.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagForm.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagValueAutocomplete.vue","webpack://cloudctrl/src/components/Domain.Tags/TagValueAutocomplete.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagValueAutocomplete.vue?04c6","webpack://cloudctrl/./src/components/Domain.Tags/TagValueAutocomplete.vue?948f","webpack://cloudctrl/./src/components/Domain.Tags/TagValueAutocomplete.vue?cf15","webpack://cloudctrl/src/components/Domain.Tags/TagForm.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagForm.vue?1800","webpack://cloudctrl/./src/components/Domain.Tags/TagForm.vue?ae64","webpack://cloudctrl/./src/components/Domain.Tags/TagForm.vue?49cd","webpack://cloudctrl/src/views/Dialog.Service/RecordTags.vue","webpack://cloudctrl/./src/views/Dialog.Service/RecordTags.vue?91ce","webpack://cloudctrl/./src/views/Dialog.Service/RecordTags.vue?a381","webpack://cloudctrl/./src/views/Dialog.Service/RecordTags.vue?c191","webpack://cloudctrl/./src/views/Dialog.Service/VirtualTags.vue","webpack://cloudctrl/./src/components/Domain.VirtualTags/VirtualTagTable.vue","webpack://cloudctrl/src/components/Domain.VirtualTags/VirtualTagTable.vue","webpack://cloudctrl/./src/components/Domain.VirtualTags/VirtualTagTable.vue?fa29","webpack://cloudctrl/./src/components/Domain.VirtualTags/VirtualTagTable.vue?3507","webpack://cloudctrl/./src/components/Domain.VirtualTags/VirtualTagTable.vue?f9ff","webpack://cloudctrl/src/views/Dialog.Service/VirtualTags.vue","webpack://cloudctrl/./src/views/Dialog.Service/VirtualTags.vue?e7b7","webpack://cloudctrl/./src/views/Dialog.Service/VirtualTags.vue?08ed","webpack://cloudctrl/./src/views/Dialog.Service/VirtualTags.vue?a57f","webpack://cloudctrl/./src/views/Dialog.Service/Usage.vue","webpack://cloudctrl/./src/components/Domain.Usage/UsageFilterChips.vue","webpack://cloudctrl/./src/i18n/index.ts","webpack://cloudctrl/./src/components/Domain.Usage/UsageFilterChips.vue?13f8","webpack://cloudctrl/./src/components/Domain.Usage/UsageFilterChips.vue?dc2c","webpack://cloudctrl/./src/components/Domain.Usage/UsageFilterChips.vue?7236","webpack://cloudctrl/./src/views/Dialog.Service/Usage.vue?db72","webpack://cloudctrl/./src/views/Dialog.Service/Usage.vue?cc79","webpack://cloudctrl/./src/views/Dialog.Service/Usage.vue?6ea9","webpack://cloudctrl/./src/views/Dialog.Service/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Service/Carbon.vue?d443","webpack://cloudctrl/./src/views/Dialog.Service/Carbon.vue?678c","webpack://cloudctrl/./src/views/Dialog.Service/Carbon.vue?0937","webpack://cloudctrl/./src/views/Dialog.Service/RawUsage.vue","webpack://cloudctrl/./src/views/Dialog.Service/RawUsage.vue?4f1f","webpack://cloudctrl/./src/views/Dialog.Service/RawUsage.vue?c8d0","webpack://cloudctrl/./src/views/Dialog.Service/RawUsage.vue?8a16","webpack://cloudctrl/./src/views/Dialog.Subscription/Dialog.vue","webpack://cloudctrl/src/views/Dialog.Subscription/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/Dialog.vue?5eeb","webpack://cloudctrl/./src/views/Dialog.Subscription/Dialog.vue?9255","webpack://cloudctrl/./src/views/Dialog.Subscription/Dialog.vue?4f32","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionNameDialog.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/PatchSubscriptionButton.vue","webpack://cloudctrl/src/components/Domain.Subscriptions/PatchSubscriptionButton.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/PatchSubscriptionButton.vue?f26b","webpack://cloudctrl/./src/components/Domain.Subscriptions/PatchSubscriptionButton.vue?58e6","webpack://cloudctrl/./src/components/Domain.Subscriptions/PatchSubscriptionButton.vue?ee5d","webpack://cloudctrl/src/components/Domain.Subscriptions/EditSubscriptionNameDialog.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionNameDialog.vue?d420","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionNameDialog.vue?7888","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionSpendLimitDialog.vue","webpack://cloudctrl/src/components/Domain.Subscriptions/EditSubscriptionSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionSpendLimitDialog.vue?aca9","webpack://cloudctrl/./src/components/Domain.Subscriptions/EditSubscriptionSpendLimitDialog.vue?1223","webpack://cloudctrl/src/components/Domain.Subscriptions/SubscriptionManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionManageMenu.vue?ccb5","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionManageMenu.vue?9408","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionManageMenu.vue?f825","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue","webpack://cloudctrl/src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue?4e6d","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue?5c8e","webpack://cloudctrl/./src/components/Domain.Subscriptions/SubscriptionMetadataChips.vue?82b2","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue?8eea","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue?53bf","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue?3c78","webpack://cloudctrl/./src/views/Dialog.Subscription/Index.vue?7ee4","webpack://cloudctrl/./src/views/Dialog.Subscription/Trends.vue","webpack://cloudctrl/src/views/Dialog.Subscription/Trends.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/Trends.vue?0760","webpack://cloudctrl/./src/views/Dialog.Subscription/Trends.vue?4214","webpack://cloudctrl/./src/views/Dialog.Subscription/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/Usage.vue?fdb1","webpack://cloudctrl/./src/views/Dialog.Subscription/Usage.vue?bbac","webpack://cloudctrl/./src/views/Dialog.Subscription/Usage.vue?63b3","webpack://cloudctrl/./src/views/Dialog.Subscription/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/Carbon.vue?eb34","webpack://cloudctrl/./src/views/Dialog.Subscription/Carbon.vue?5eaa","webpack://cloudctrl/./src/views/Dialog.Subscription/Carbon.vue?4593","webpack://cloudctrl/./src/views/Dialog.Subscription/Annotations.vue","webpack://cloudctrl/src/views/Dialog.Subscription/Annotations.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/Annotations.vue?3374","webpack://cloudctrl/./src/views/Dialog.Subscription/Annotations.vue?5ec0","webpack://cloudctrl/./src/views/Dialog.Subscription/VirtualTags.vue","webpack://cloudctrl/src/views/Dialog.Subscription/VirtualTags.vue","webpack://cloudctrl/./src/views/Dialog.Subscription/VirtualTags.vue?a30a","webpack://cloudctrl/./src/views/Dialog.Subscription/VirtualTags.vue?ac72","webpack://cloudctrl/./src/views/Dialog.Subscription/VirtualTags.vue?e785","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue?122e","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue?ee19","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue?6d19","webpack://cloudctrl/./src/views/Dialog.Product/Dialog.vue?96c9","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue","webpack://cloudctrl/./src/components/Domain.Products/ProductManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Products/EditProductSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Products/PatchProductButton.vue","webpack://cloudctrl/src/components/Domain.Products/PatchProductButton.vue","webpack://cloudctrl/./src/components/Domain.Products/PatchProductButton.vue?26d5","webpack://cloudctrl/./src/components/Domain.Products/PatchProductButton.vue?d6cb","webpack://cloudctrl/./src/components/Domain.Products/PatchProductButton.vue?d61c","webpack://cloudctrl/src/components/Domain.Products/EditProductSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Products/EditProductSpendLimitDialog.vue?ee90","webpack://cloudctrl/./src/components/Domain.Products/EditProductSpendLimitDialog.vue?36cb","webpack://cloudctrl/src/components/Domain.Products/ProductManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Products/ProductManageMenu.vue?c1d0","webpack://cloudctrl/./src/components/Domain.Products/ProductManageMenu.vue?edc9","webpack://cloudctrl/./src/components/Domain.Products/ProductManageMenu.vue?05f9","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue?3961","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue?08b6","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue?21ef","webpack://cloudctrl/./src/views/Dialog.Product/Index.vue?38b4","webpack://cloudctrl/./src/views/Dialog.Product/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Product/Usage.vue?499b","webpack://cloudctrl/./src/views/Dialog.Product/Usage.vue?3171","webpack://cloudctrl/./src/views/Dialog.Product/Usage.vue?dd51","webpack://cloudctrl/./src/views/Dialog.Product/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Product/Carbon.vue?63aa","webpack://cloudctrl/./src/views/Dialog.Product/Carbon.vue?9906","webpack://cloudctrl/./src/views/Dialog.Product/Carbon.vue?0f86","webpack://cloudctrl/./src/views/Dialog.Product/Trends.vue","webpack://cloudctrl/./src/views/Dialog.Product/Trends.vue?c3ba","webpack://cloudctrl/./src/views/Dialog.Product/Trends.vue?fd48","webpack://cloudctrl/./src/views/Dialog.Product/Trends.vue?f1ef","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue?b274","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue?b79c","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue?56f3","webpack://cloudctrl/./src/views/Dialog.Region/Dialog.vue?a840","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionMetadataChips.vue","webpack://cloudctrl/src/components/Domain.Regions/RegionMetadataChips.vue","webpack://cloudctrl/./src/components/Domain.Regions/RegionMetadataChips.vue?25f6","webpack://cloudctrl/./src/components/Domain.Regions/RegionMetadataChips.vue?21a7","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue?56c4","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue?b210","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue?e77b","webpack://cloudctrl/./src/views/Dialog.Region/Index.vue?a5b6","webpack://cloudctrl/./src/views/Dialog.Region/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Region/Usage.vue?ef9f","webpack://cloudctrl/./src/views/Dialog.Region/Usage.vue?deac","webpack://cloudctrl/./src/views/Dialog.Region/Usage.vue?30ab","webpack://cloudctrl/./src/views/Dialog.Region/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Region/Carbon.vue?8bcc","webpack://cloudctrl/./src/views/Dialog.Region/Carbon.vue?a220","webpack://cloudctrl/./src/views/Dialog.Region/Carbon.vue?c7a9","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue?8f5f","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue?cd27","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue?0db3","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Dialog.vue?4e8c","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue?440f","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue?801c","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue?9196","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Index.vue?af75","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Usage.vue","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Usage.vue?e38b","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Usage.vue?e1fe","webpack://cloudctrl/./src/views/Dialog.ProductCategory/Usage.vue?8daa","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue?ea27","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue?42cd","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue?d23d","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Dialog.vue?39ed","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue?98f0","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue?31d3","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue?7897","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Index.vue?5fc8","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Usage.vue","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Usage.vue?1637","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Usage.vue?3ffb","webpack://cloudctrl/./src/views/Dialog.CloudProvider/Usage.vue?9592","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue?dde9","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue?efdb","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue?32f1","webpack://cloudctrl/./src/views/Dialog.Geography/Dialog.vue?d2b4","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue?982d","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue?8fae","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue?296d","webpack://cloudctrl/./src/views/Dialog.Geography/Index.vue?d9dc","webpack://cloudctrl/./src/views/Dialog.Geography/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Geography/Usage.vue?f429","webpack://cloudctrl/./src/views/Dialog.Geography/Usage.vue?c54b","webpack://cloudctrl/./src/views/Dialog.Geography/Usage.vue?2508","webpack://cloudctrl/./src/views/Dialog.Geography/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Geography/Carbon.vue?352d","webpack://cloudctrl/./src/views/Dialog.Geography/Carbon.vue?4d7d","webpack://cloudctrl/./src/views/Dialog.Geography/Carbon.vue?015d","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue?0f63","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue?814b","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue?6ba0","webpack://cloudctrl/./src/views/Dialog.Tag/Dialog.vue?707f","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyValueManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Tags/EditTagKeyValueSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Tags/PatchTagKeyValueButton.vue","webpack://cloudctrl/src/components/Domain.Tags/PatchTagKeyValueButton.vue","webpack://cloudctrl/./src/components/Domain.Tags/PatchTagKeyValueButton.vue?ebbc","webpack://cloudctrl/./src/components/Domain.Tags/PatchTagKeyValueButton.vue?d30f","webpack://cloudctrl/./src/components/Domain.Tags/PatchTagKeyValueButton.vue?b669","webpack://cloudctrl/src/components/Domain.Tags/EditTagKeyValueSpendLimitDialog.vue","webpack://cloudctrl/./src/components/Domain.Tags/EditTagKeyValueSpendLimitDialog.vue?b9f7","webpack://cloudctrl/./src/components/Domain.Tags/EditTagKeyValueSpendLimitDialog.vue?eff8","webpack://cloudctrl/src/components/Domain.Tags/TagKeyValueManageMenu.vue","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyValueManageMenu.vue?f8d7","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyValueManageMenu.vue?2c6b","webpack://cloudctrl/./src/components/Domain.Tags/TagKeyValueManageMenu.vue?9b27","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue?35b8","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue?f518","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue?6099","webpack://cloudctrl/./src/views/Dialog.Tag/Index.vue?1619","webpack://cloudctrl/./src/views/Dialog.Tag/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Tag/Usage.vue?1991","webpack://cloudctrl/./src/views/Dialog.Tag/Usage.vue?4c66","webpack://cloudctrl/./src/views/Dialog.Tag/Usage.vue?6f61","webpack://cloudctrl/./src/views/Dialog.Tag/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.Tag/Carbon.vue?5c98","webpack://cloudctrl/./src/views/Dialog.Tag/Carbon.vue?e2fe","webpack://cloudctrl/./src/views/Dialog.Tag/Carbon.vue?dc42","webpack://cloudctrl/./src/views/Dialog.Tag/Trends.vue","webpack://cloudctrl/./src/views/Dialog.Tag/AdditionalFiltersNotSupported.vue","webpack://cloudctrl/./src/views/Dialog.Tag/AdditionalFiltersNotSupported.vue?f16d","webpack://cloudctrl/./src/views/Dialog.Tag/AdditionalFiltersNotSupported.vue?f5ea","webpack://cloudctrl/./src/views/Dialog.Tag/AdditionalFiltersNotSupported.vue?b19e","webpack://cloudctrl/./src/views/Dialog.Tag/Trends.vue?571c","webpack://cloudctrl/./src/views/Dialog.Tag/Trends.vue?f1af","webpack://cloudctrl/./src/views/Dialog.Tag/Trends.vue?b2b9","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Dialog.vue","webpack://cloudctrl/src/views/Dialog.CloudAccount/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Dialog.vue?d669","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Dialog.vue?a17c","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Dialog.vue?76b8","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue?7bd9","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue?9a72","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue?a61f","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Index.vue?1866","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Copies.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue","webpack://cloudctrl/src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue?2a7a","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue?3735","webpack://cloudctrl/./src/components/Settings.CloudAccounts/CloudAccountCopiesTable.vue?cac8","webpack://cloudctrl/src/views/Dialog.CloudAccount/Copies.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Copies.vue?10ca","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Copies.vue?c7a8","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Copies.vue?1bf0","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Annotations.vue","webpack://cloudctrl/src/views/Dialog.CloudAccount/Annotations.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Annotations.vue?8bda","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Annotations.vue?def4","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Usage.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Usage.vue?7fa3","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Usage.vue?9f1a","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Usage.vue?1cad","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Trends.vue","webpack://cloudctrl/src/views/Dialog.CloudAccount/Trends.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Trends.vue?76f5","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Trends.vue?19c6","webpack://cloudctrl/./src/views/Dialog.CloudAccount/VirtualTags.vue","webpack://cloudctrl/src/views/Dialog.CloudAccount/VirtualTags.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/VirtualTags.vue?5202","webpack://cloudctrl/./src/views/Dialog.CloudAccount/VirtualTags.vue?3e7c","webpack://cloudctrl/./src/views/Dialog.CloudAccount/VirtualTags.vue?12b8","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Carbon.vue","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Carbon.vue?a08c","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Carbon.vue?ad69","webpack://cloudctrl/./src/views/Dialog.CloudAccount/Carbon.vue?a090","webpack://cloudctrl/./src/views/Dialog.Reservation/Dialog.vue","webpack://cloudctrl/src/views/Dialog.Reservation/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.Reservation/Dialog.vue?46e3","webpack://cloudctrl/./src/views/Dialog.Reservation/Dialog.vue?b537","webpack://cloudctrl/./src/views/Dialog.Reservation/Dialog.vue?aeae","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue?b2e2","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue?776d","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue?7214","webpack://cloudctrl/./src/views/Dialog.Reservation/Index.vue?4958","webpack://cloudctrl/./src/views/Dialog.Reservation/Usage.vue","webpack://cloudctrl/./src/views/Dialog.Reservation/Usage.vue?b576","webpack://cloudctrl/./src/views/Dialog.Reservation/Usage.vue?06f9","webpack://cloudctrl/./src/views/Dialog.Reservation/Usage.vue?bf45","webpack://cloudctrl/./src/views/AWSMarketplace.vue","webpack://cloudctrl/./src/plugins/auth/auth0.ts","webpack://cloudctrl/./src/plugins/auth/msal.ts","webpack://cloudctrl/./src/plugins/auth/index.ts","webpack://cloudctrl/./src/views/AWSMarketplace.vue?3fa3","webpack://cloudctrl/./src/views/AWSMarketplace.vue?ef43","webpack://cloudctrl/./src/views/AWSMarketplace.vue?6b6f","webpack://cloudctrl/./src/views/CopyCloudAccount/Index.vue","webpack://cloudctrl/src/views/CopyCloudAccount/Index.vue","webpack://cloudctrl/./src/views/CopyCloudAccount/Index.vue?d02b","webpack://cloudctrl/./src/views/CopyCloudAccount/Index.vue?dd93","webpack://cloudctrl/./src/views/CopyCloudAccount/Index.vue?422b","webpack://cloudctrl/./src/views/CopyCloudAccount/ChooseTenant.vue","webpack://cloudctrl/src/views/CopyCloudAccount/ChooseTenant.vue","webpack://cloudctrl/./src/views/CopyCloudAccount/ChooseTenant.vue?d130","webpack://cloudctrl/./src/views/CopyCloudAccount/ChooseTenant.vue?c776","webpack://cloudctrl/./src/views/CopyCloudAccount/ChooseTenant.vue?90ef","webpack://cloudctrl/./src/views/CopyCloudAccount/Finish.vue","webpack://cloudctrl/src/views/CopyCloudAccount/Finish.vue","webpack://cloudctrl/./src/views/CopyCloudAccount/Finish.vue?9f52","webpack://cloudctrl/./src/views/CopyCloudAccount/Finish.vue?4e0d","webpack://cloudctrl/./src/views/CopyCloudAccount/Finish.vue?1b71","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue?de58","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue?d27a","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue?0089","webpack://cloudctrl/./src/views/CopyCloudAccount/PricingRules.vue?2d05","webpack://cloudctrl/./src/views/CopyCloudAccount/Tags.vue","webpack://cloudctrl/src/views/CopyCloudAccount/Tags.vue","webpack://cloudctrl/./src/views/CopyCloudAccount/Tags.vue?1ba6","webpack://cloudctrl/./src/views/CopyCloudAccount/Tags.vue?940e","webpack://cloudctrl/./src/views/CopyCloudAccount/Tags.vue?c100","webpack://cloudctrl/./src/views/NotFound.vue","webpack://cloudctrl/./src/views/NotFound.vue?1d67","webpack://cloudctrl/./src/views/NotFound.vue?9931","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue?3a7e","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue?ffa5","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue?fdc9","webpack://cloudctrl/./src/views/Dialog.CustomView/Dialog.vue?4379","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue?872d","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue?3b47","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue?ceee","webpack://cloudctrl/./src/views/Dialog.CustomView/Index.vue?c57b","webpack://cloudctrl/./src/views/Dialog.CustomView/Usage.vue","webpack://cloudctrl/./src/views/Dialog.CustomView/Usage.vue?0a66","webpack://cloudctrl/./src/views/Dialog.CustomView/Usage.vue?de91","webpack://cloudctrl/./src/views/Dialog.CustomView/Usage.vue?3da0","webpack://cloudctrl/./src/views/Reports/CustomReports.vue","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue?ea64","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue?ecaa","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue?b498","webpack://cloudctrl/./src/components/Domain.Reports/ReportsTable.vue?e643","webpack://cloudctrl/./src/components/Domain.Reports/ReportMenu.vue","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportDialog.vue","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportButton.vue","webpack://cloudctrl/src/components/Domain.Reports/DeleteReportButton.vue","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportButton.vue?e94c","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportButton.vue?655a","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportButton.vue?8107","webpack://cloudctrl/src/components/Domain.Reports/DeleteReportDialog.vue","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportDialog.vue?3ccf","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportDialog.vue?acc8","webpack://cloudctrl/./src/components/Domain.Reports/DeleteReportDialog.vue?88f5","webpack://cloudctrl/src/components/Domain.Reports/ReportMenu.vue","webpack://cloudctrl/./src/components/Domain.Reports/ReportMenu.vue?b36e","webpack://cloudctrl/./src/components/Domain.Reports/ReportMenu.vue?e074","webpack://cloudctrl/./src/components/Domain.Reports/ReportMenu.vue?3cee","webpack://cloudctrl/./src/views/Reports/CustomReports.vue?556d","webpack://cloudctrl/./src/views/Reports/CustomReports.vue?5568","webpack://cloudctrl/./src/views/Reports/CustomReports.vue?1878","webpack://cloudctrl/./src/views/Reports/CustomReports.vue?beb2","webpack://cloudctrl/./src/views/Reports/CustomReport.vue","webpack://cloudctrl/./src/views/Reports/CustomReport.vue?9855","webpack://cloudctrl/./src/views/Reports/CustomReport.vue?9a94","webpack://cloudctrl/./src/views/Reports/CustomReport.vue?9803","webpack://cloudctrl/./src/views/Reports/CustomReport.vue?d2e8","webpack://cloudctrl/./src/views/Reports/CreateReport.vue","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeSelect.vue","webpack://cloudctrl/src/components/Domain.Usage/DateRangeSelect.vue","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeSelect.vue?55d0","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeSelect.vue?55ba","webpack://cloudctrl/./src/components/Domain.Usage/DateRangeSelect.vue?b289","webpack://cloudctrl/./src/components/Common/TimezoneSelect.vue","webpack://cloudctrl/src/components/Common/TimezoneSelect.vue","webpack://cloudctrl/./src/components/Common/TimezoneSelect.vue?189d","webpack://cloudctrl/./src/components/Common/TimezoneSelect.vue?2225","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue","webpack://cloudctrl/./src/plugins/validation.ts","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue?b3b8","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue?b640","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue?6a7a","webpack://cloudctrl/./src/components/Common/EmailsAutocomplete.vue?9c5a","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue?c355","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue?7909","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue?b9c2","webpack://cloudctrl/./src/components/Domain.Reports/ReportCard.vue?bc0e","webpack://cloudctrl/./src/components/Domain.Reports/PostReportButton.vue","webpack://cloudctrl/src/components/Domain.Reports/PostReportButton.vue","webpack://cloudctrl/./src/components/Domain.Reports/PostReportButton.vue?6cfa","webpack://cloudctrl/./src/components/Domain.Reports/PostReportButton.vue?06ce","webpack://cloudctrl/./src/components/Domain.Reports/PostReportButton.vue?2675","webpack://cloudctrl/./src/views/Reports/CreateReport.vue?bfc0","webpack://cloudctrl/./src/views/Reports/CreateReport.vue?e943","webpack://cloudctrl/./src/views/Reports/CreateReport.vue?8906","webpack://cloudctrl/./src/views/Reports/EditReport.vue","webpack://cloudctrl/./src/components/Domain.Reports/PutReportButton.vue","webpack://cloudctrl/src/components/Domain.Reports/PutReportButton.vue","webpack://cloudctrl/./src/components/Domain.Reports/PutReportButton.vue?97b0","webpack://cloudctrl/./src/components/Domain.Reports/PutReportButton.vue?e908","webpack://cloudctrl/./src/components/Domain.Reports/PutReportButton.vue?594d","webpack://cloudctrl/./src/views/Reports/EditReport.vue?b5b1","webpack://cloudctrl/./src/views/Reports/EditReport.vue?55fd","webpack://cloudctrl/./src/views/Reports/EditReport.vue?2693","webpack://cloudctrl/./src/views/Reports/CloneReport.vue","webpack://cloudctrl/./src/views/Reports/CloneReport.vue?7c3e","webpack://cloudctrl/./src/views/Reports/CloneReport.vue?0402","webpack://cloudctrl/./src/views/Reports/CloneReport.vue?7af1","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewButton.vue","webpack://cloudctrl/src/components/Domain.CustomViews/DeleteCustomViewButton.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewButton.vue?eb5f","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewButton.vue?0765","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewButton.vue?d033","webpack://cloudctrl/src/components/Domain.CustomViews/DeleteCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewDialog.vue?fbb1","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewDialog.vue?45c0","webpack://cloudctrl/./src/components/Domain.CustomViews/DeleteCustomViewDialog.vue?41c4","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewButton.vue","webpack://cloudctrl/src/components/Domain.CustomViews/PutCustomViewButton.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewButton.vue?17c0","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewButton.vue?6d9b","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewButton.vue?b758","webpack://cloudctrl/src/components/Domain.CustomViews/PutCustomViewDialog.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewDialog.vue?301a","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewDialog.vue?207d","webpack://cloudctrl/./src/components/Domain.CustomViews/PutCustomViewDialog.vue?4e88","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue?84d9","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue?7383","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue?4ead","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewsTable.vue?b7c9","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewMenu.vue","webpack://cloudctrl/src/components/Domain.CustomViews/CustomViewMenu.vue","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewMenu.vue?13b4","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewMenu.vue?3444","webpack://cloudctrl/./src/components/Domain.CustomViews/CustomViewMenu.vue?1c1e","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue?b51c","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue?c4b7","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue?5a32","webpack://cloudctrl/./src/views/CustomViews/CustomViews.vue?fd58","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue?a751","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue?5fb1","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue?558c","webpack://cloudctrl/./src/views/CustomViews/CustomView.vue?7dd3","webpack://cloudctrl/./src/views/CustomViews/Overview.vue","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetButton.vue","webpack://cloudctrl/src/components/Domain.Budgets/DeleteBudgetButton.vue","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetButton.vue?e8a9","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetButton.vue?0dae","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetButton.vue?b3e5","webpack://cloudctrl/src/components/Domain.Budgets/DeleteBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetDialog.vue?24a6","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetDialog.vue?47ad","webpack://cloudctrl/./src/components/Domain.Budgets/DeleteBudgetDialog.vue?469f","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue?aa65","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue?4b4b","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue?71c7","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetsTable.vue?3a33","webpack://cloudctrl/./src/views/CustomViews/Overview.vue?3d76","webpack://cloudctrl/./src/views/CustomViews/Overview.vue?e10f","webpack://cloudctrl/./src/views/CustomViews/Overview.vue?8022","webpack://cloudctrl/./src/views/CustomViews/Overview.vue?ab3d","webpack://cloudctrl/./src/views/Budgets/Budgets.vue","webpack://cloudctrl/./src/components/Domain.Budgets/CreateBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue?c813","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue?4ece","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue?8c74","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetCard.vue?5a6b","webpack://cloudctrl/src/components/Domain.Budgets/SetBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetDialog.vue?3abb","webpack://cloudctrl/./src/components/Domain.Budgets/SetBudgetDialog.vue?6595","webpack://cloudctrl/./src/components/Domain.Budgets/CreateButtonButton.vue","webpack://cloudctrl/src/components/Domain.Budgets/CreateButtonButton.vue","webpack://cloudctrl/./src/components/Domain.Budgets/CreateButtonButton.vue?9054","webpack://cloudctrl/./src/components/Domain.Budgets/CreateButtonButton.vue?67d9","webpack://cloudctrl/./src/components/Domain.Budgets/CreateButtonButton.vue?3c06","webpack://cloudctrl/src/components/Domain.Budgets/CreateBudgetDialog.vue","webpack://cloudctrl/./src/components/Domain.Budgets/CreateBudgetDialog.vue?92ce","webpack://cloudctrl/./src/components/Domain.Budgets/CreateBudgetDialog.vue?81a5","webpack://cloudctrl/./src/components/Domain.Budgets/CreateBudgetDialog.vue?9f93","webpack://cloudctrl/./src/components/Domain.SpendLimits/SpendLimitsTable.vue","webpack://cloudctrl/src/components/Domain.SpendLimits/SpendLimitsTable.vue","webpack://cloudctrl/./src/components/Domain.SpendLimits/SpendLimitsTable.vue?c63d","webpack://cloudctrl/./src/components/Domain.SpendLimits/SpendLimitsTable.vue?5dbe","webpack://cloudctrl/./src/components/Domain.SpendLimits/SpendLimitsTable.vue?cba4","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue?2f48","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue?b831","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue?4c26","webpack://cloudctrl/./src/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue?08ff","webpack://cloudctrl/./src/views/Budgets/Budgets.vue?8cb4","webpack://cloudctrl/./src/views/Budgets/Budgets.vue?d09d","webpack://cloudctrl/./src/views/Budgets/Budgets.vue?6eae","webpack://cloudctrl/./src/views/Budgets/Budgets.vue?c135","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetHistoryChart.vue","webpack://cloudctrl/./src/chartjs/createBudgetHistoryChart.ts","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetHistoryChart.vue?6cf8","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetHistoryChart.vue?c648","webpack://cloudctrl/./src/components/Domain.Budgets/BudgetHistoryChart.vue?186e","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue?38d2","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue?b0fd","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue?0d5d","webpack://cloudctrl/./src/views/Budgets/BudgetDetails.vue?b191","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue","webpack://cloudctrl/./src/components/Domain.GptChat/GptCreate.vue","webpack://cloudctrl/./src/components/Domain.GptChat/GptCreate.vue?e0a5","webpack://cloudctrl/./src/components/Domain.GptChat/GptCreate.vue?2fd7","webpack://cloudctrl/./src/components/Domain.GptChat/GptCreate.vue?fd80","webpack://cloudctrl/./src/components/Domain.GptChat/Shared.ts","webpack://cloudctrl/./src/components/Domain.GptChat/ChatConversation.vue","webpack://cloudctrl/./src/components/Domain.GptChat/ChatMessageContent.vue","webpack://cloudctrl/./src/components/Domain.GptChat/ChatMessageContent.vue?485e","webpack://cloudctrl/./src/components/Domain.GptChat/ChatMessageContent.vue?53ba","webpack://cloudctrl/./src/components/Domain.GptChat/ChatMessageContent.vue?bb30","webpack://cloudctrl/./src/components/Domain.GptChat/ChatConversation.vue?74d2","webpack://cloudctrl/./src/components/Domain.GptChat/ChatConversation.vue?d79d","webpack://cloudctrl/./src/components/Domain.GptChat/ChatConversation.vue?fa7b","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue?308d","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue?1d39","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue?b1bd","webpack://cloudctrl/./src/components/Domain.GptChat/ChatsDialog.vue?bfb4","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue?eab5","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue?d8d2","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue?4b40","webpack://cloudctrl/./src/views/Intelligence/GptChats.vue?6b89","webpack://cloudctrl/./src/views/GettingStarted.vue","webpack://cloudctrl/./src/views/GettingStarted.vue?fec1","webpack://cloudctrl/./src/views/GettingStarted.vue?32a4","webpack://cloudctrl/./src/views/GettingStarted.vue?eb9b","webpack://cloudctrl/./src/views/GettingStarted.vue?105a","webpack://cloudctrl/./src/views/Watchdog/Index.vue","webpack://cloudctrl/./src/components/Domain.Policies/PolicyMenu.vue","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyDialog.vue","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyButton.vue","webpack://cloudctrl/src/components/Domain.Policies/DeletePolicyButton.vue","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyButton.vue?1b92","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyButton.vue?86b8","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyButton.vue?6ab1","webpack://cloudctrl/src/components/Domain.Policies/DeletePolicyDialog.vue","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyDialog.vue?3138","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyDialog.vue?279e","webpack://cloudctrl/./src/components/Domain.Policies/DeletePolicyDialog.vue?25d4","webpack://cloudctrl/src/components/Domain.Policies/PolicyMenu.vue","webpack://cloudctrl/./src/components/Domain.Policies/PolicyMenu.vue?15c7","webpack://cloudctrl/./src/components/Domain.Policies/PolicyMenu.vue?da24","webpack://cloudctrl/./src/components/Domain.Policies/PolicyMenu.vue?b393","webpack://cloudctrl/./src/views/Watchdog/Index.vue?bfd8","webpack://cloudctrl/./src/views/Watchdog/Index.vue?dec3","webpack://cloudctrl/./src/views/Watchdog/Index.vue?c294","webpack://cloudctrl/./src/views/Watchdog/Index.vue?af64","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue?c728","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue?b788","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue?1071","webpack://cloudctrl/./src/views/Watchdog/ViewPolicy.vue?585d","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue?9252","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue?5323","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue?558a","webpack://cloudctrl/./src/views/Watchdog/ViewPolicyRun.vue?86ee","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue?8a63","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue?f368","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue?c1f7","webpack://cloudctrl/./src/views/Watchdog/NewPolicy.vue?de16","webpack://cloudctrl/./src/merge/Grid.ts","webpack://cloudctrl/./src/views/CustomDashboards/Index.vue","webpack://cloudctrl/./src/stores/grid.ts","webpack://cloudctrl/./src/views/CustomDashboards/Index.vue?1d2f","webpack://cloudctrl/./src/views/CustomDashboards/Index.vue?9c80","webpack://cloudctrl/./src/views/CustomDashboards/Index.vue?52ff","webpack://cloudctrl/./src/views/CustomDashboards/Dashboard.vue","webpack://cloudctrl/./src/components/Grid/Grid.vue","webpack://cloudctrl/./src/components/Grid/Widgets/GridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue?b6e1","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue?9845","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue?11a9","webpack://cloudctrl/./src/components/Grid/Widgets/ColumnChartGridWidget.vue?0451","webpack://cloudctrl/./src/components/Grid/Widgets/LineChartGridWidget.vue","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageLineChart.vue","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageLineChart.vue?2bee","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageLineChart.vue?5c55","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsageLineChart.vue?7367","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonLineChart.vue","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonLineChart.vue?077d","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonLineChart.vue?4086","webpack://cloudctrl/./src/components/Domain.Carbon/CarbonLineChart.vue?2c13","webpack://cloudctrl/./src/components/Grid/Widgets/LineChartGridWidget.vue?87ac","webpack://cloudctrl/./src/components/Grid/Widgets/LineChartGridWidget.vue?b42a","webpack://cloudctrl/./src/components/Grid/Widgets/LineChartGridWidget.vue?0cf5","webpack://cloudctrl/./src/components/Grid/Widgets/TableGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/TableGridWidget.vue?deb8","webpack://cloudctrl/./src/components/Grid/Widgets/TableGridWidget.vue?223f","webpack://cloudctrl/./src/components/Grid/Widgets/TableGridWidget.vue?fbc6","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsagePieChart.vue","webpack://cloudctrl/./src/chartjs/createPieChart.ts","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsagePieChart.vue?e5ff","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsagePieChart.vue?b119","webpack://cloudctrl/./src/components/Domain.Usage/SpendUsagePieChart.vue?295a","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue?0224","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue?03f3","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue?5681","webpack://cloudctrl/./src/components/Grid/Widgets/PieChartGridWidget.vue?bc5b","webpack://cloudctrl/./src/components/Grid/Widgets/TextualGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/TextualGridWidget.vue?e553","webpack://cloudctrl/./src/components/Grid/Widgets/TextualGridWidget.vue?eaad","webpack://cloudctrl/./src/components/Grid/Widgets/TextualGridWidget.vue?6aeb","webpack://cloudctrl/./src/components/Grid/Widgets/EmbedGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/EmbedGridWidget.vue?4b57","webpack://cloudctrl/./src/components/Grid/Widgets/EmbedGridWidget.vue?7df0","webpack://cloudctrl/./src/components/Grid/Widgets/EmbedGridWidget.vue?3ee9","webpack://cloudctrl/./src/components/Grid/Widgets/ComparisonChartGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/ComparisonChartGridWidget.vue?54f9","webpack://cloudctrl/./src/components/Grid/Widgets/ComparisonChartGridWidget.vue?d9c3","webpack://cloudctrl/./src/components/Grid/Widgets/ComparisonChartGridWidget.vue?1f7d","webpack://cloudctrl/./src/components/Grid/Widgets/RecommendationsGridWidget.vue","webpack://cloudctrl/./src/components/Grid/Widgets/RecommendationsGridWidget.vue?6f42","webpack://cloudctrl/./src/components/Grid/Widgets/RecommendationsGridWidget.vue?4ee6","webpack://cloudctrl/./src/components/Grid/Widgets/RecommendationsGridWidget.vue?c6e7","webpack://cloudctrl/./src/components/Grid/Widgets/GridWidget.vue?806e","webpack://cloudctrl/./src/components/Grid/Widgets/GridWidget.vue?0c1b","webpack://cloudctrl/./src/components/Grid/Widgets/GridWidget.vue?aef3","webpack://cloudctrl/./src/components/Grid/Grid.vue?7f54","webpack://cloudctrl/./src/components/Grid/Grid.vue?4f3f","webpack://cloudctrl/./src/components/Grid/Grid.vue?3892","webpack://cloudctrl/./src/components/Grid/WidgetGridFormDialog.vue","webpack://cloudctrl/./src/components/Grid/WidgetGridFormDialog.vue?cf33","webpack://cloudctrl/./src/components/Grid/WidgetGridFormDialog.vue?efad","webpack://cloudctrl/./src/components/Grid/WidgetGridFormDialog.vue?be86","webpack://cloudctrl/./src/views/CustomDashboards/Dashboard.vue?9095","webpack://cloudctrl/./src/views/CustomDashboards/Dashboard.vue?4ba5","webpack://cloudctrl/./src/views/CustomDashboards/Dashboard.vue?fa56","webpack://cloudctrl/./src/plugins/auth/authGuard.ts","webpack://cloudctrl/./src/plugins/router.ts","webpack://cloudctrl/./src/plugins/tracking.ts","webpack://cloudctrl/./src/registerServiceWorker.ts","webpack://cloudctrl/./src/main.ts","webpack://cloudctrl/./src/plugins/vue-wait.ts","webpack://cloudctrl/./src/lib/vm.js","webpack://cloudctrl/webpack/bootstrap","webpack://cloudctrl/webpack/runtime/amd options","webpack://cloudctrl/webpack/runtime/chunk loaded","webpack://cloudctrl/webpack/runtime/compat get default export","webpack://cloudctrl/webpack/runtime/define property getters","webpack://cloudctrl/webpack/runtime/ensure chunk","webpack://cloudctrl/webpack/runtime/get javascript chunk filename","webpack://cloudctrl/webpack/runtime/get mini-css chunk filename","webpack://cloudctrl/webpack/runtime/global","webpack://cloudctrl/webpack/runtime/hasOwnProperty shorthand","webpack://cloudctrl/webpack/runtime/load script","webpack://cloudctrl/webpack/runtime/make namespace object","webpack://cloudctrl/webpack/runtime/publicPath","webpack://cloudctrl/webpack/runtime/jsonp chunk loading","webpack://cloudctrl/webpack/startup"],"sourcesContent":["module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteApiKeyButton.errorMessage\":\"There was an issue deleting the api key.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"generateApiKeyButton.generateText\":\"Generate\",\"generateApiKeyButton.error\":\"There was an issue generating an api key.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"generateApiKeyCard.title\":\"Create new API key\",\"generateApiKeyCard.subtitle\":\"This new api-key will only be made visible once. Make sure you keep a copy before continuing.\",\"generateApiKeyCard.ApiKey\":\"API-Key\",\"generateApiKeyCard.ApiKey.placeholder\":\"Click generate to make a new API key\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"selfservice.createTenant.title\":\"Create a new Customer Account\",\"selfservice.createTenant.name\":\"Customer Name\",\"selfservice.createTenant.billingEmail\":\"Billing Email Address\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postCreateTenantButton.errorMessage\":\"There was an error encountered while creating this tenant. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteEntityCard.placeholder\":\"Enter \\u0027{entityName}\\u0027 to continue\",\"deleteEntityCard.checkToDelete.label\":\"Are you sure you want to delete?\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"entities.DeleteEntityTitle\":\"Delete {entityType}\",\"entities.DeleteEntitySubtitle\":\"This {entityType} will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"emailsAutocomplete.label\":\"Emails\",\"emailsAutocomplete.createPrompt\":\"Click to add\",\"emailsAutocomplete.notValidEmail\":\"Not a valid email\",\"emailsAutocomplete.pleaseTypePrompt\":\"Type to enter an email\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"entitySearchAutocomplete.label\":\"Search for a service, subscription, tag...\",\"entitySearchAutocomplete.typePrompt\":\"Click or type here begin searching...\",\"entitySearchAutocomplete.noDataPrompt\":\"There are no matching entities, click to search again\",\"entitySearchAutocomplete.createPrompt\":\"Click to create\",\"entitySearchAutocomplete.saveCustomView\":\"Save as Custom View\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"updateEntitySpendLimitCard.monthlySpendLimit.title\":\"Monthly Spend Limit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"domain.actions.createActionScriptCard.title\":\"Create Action\",\"domain.actions.createActionScriptCard.subtitle\":\"Please provide the name and script text for this action script.\",\"domain.actions.createActionScriptCard.actionName\":\"Script Name\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postAnnotationsButton.text\":\"Add Annotation\",\"postAnnotationsButton.errorMessage\":\"There was an error encountered while creating this annotation. If anything does not look right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"addAnnotationDialog.addAnnotationTitle\":\"Add Annotation\",\"addAnnotationDialog.addAnnotationSubtitle\":\"Add a new annotation for this entity\",\"addAnnotationDialog.successfulAdd\":\"Annotation successfully added.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"annotationCard.annotation\":\"Annotation\",\"annotationCard.annotationDate\":\"Annotation Date\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"annotationsTimeline.noAnnotations\":\"There are no annotations here yet.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteAnnotationButton.errorMessage\":\"There was an error encountered while deleting this annotation. If anything does not look right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteAnnotationDialog.deleteAnnotationTitle\":\"Delete Annotation\",\"deleteAnnotationDialog.deleteAnnotationSubtitle\":\"This action is not reversable, you will need to add a new annotation.\",\"deleteAnnotationDialog.successfulDelete\":\"Annotation successfully deleted.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchAnnotationsButton.text\":\"Edit Annotation\",\"patchAnnotationsButton.errorMessage\":\"There was an error encountered while updating this annotation. If anything does not look right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"editAnnotationDialog.editAnnotationTitle\":\"Edit Annotation\",\"editAnnotationDialog.editAnnotationSubtitle\":\"Edit annotation for this service.\",\"editAnnotationDialog.successfulEdit\":\"Annotation successfully updated.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"budgetsTable.noBudgets\":\"There are no budgets yet.\",\"budgetsTable.loadingBudgets\":\"Loading budgets\",\"budgetsTable.name\":\"Budget Name\",\"budgetsTable.amount\":\"Budget Amount\",\"budgetsTable.view\":\"View\",\"budgetsTable.progress\":\"Progress\",\"budgetsTable.actual\":\"Current Spend\",\"budgetsTable.projections\":\"Forecast\",\"budgetsTable.actions\":\"Actions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createBudgetDialog.events.successfulCreation\":\"Successfully created the budget \\u0027{name}\\u0027\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createBudgetButton.errorMessage\":\"There was an error encountered while updating this budget. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteBudgetButton.errorMessage\":\"There was an error encountered while deleting this budget. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteBudgetDialog.events.successfulDeletion\":\"Successfully deleted the budget \\u0027{name}\\u0027\",\"deleteBudgetDialog.title\":\"Delete Budget\",\"deleteBudgetDialog.subtitle\":\"Please enter the name of this budget to delete it\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setBudgetCard.title\":\"Budget\",\"setBudgetCard.subtitle\":\"Setting a budget is an important way to manage your overall cloud spend.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"selectCloudAccountCard.title\":\"Select Cloud Connections\",\"selectCloudAccountCard.subtitle\":\"Select one or many of the following cloud connections in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"carbonMissingMappingDialog.title\":\"Emissions and Energy Limitations\",\"carbonMissingMappingDialog.subtitle\":\"There are limitations to the availability and accuracy of the data in our Emissions and Energy reporting. The following product meters are not mapped to emissions, and as a result real CO2e figures might be lower than reality.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"carbonTable.exportText.btnText\":\"Export CSV\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"currencyComboBox.currency\":\"Currency\",\"currencyComboBox.fallbackPlaceholder\":\"Please enter the currency code of your choosing e.g. AUD\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customViewMenu.delete\":\"Delete\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customViewsTable.noCustomViews\":\"There are no Custom Views yet\",\"customViewsTable.loading\":\"Loading Custom Views\",\"customViewsTable.name\":\"Name\",\"customViewsTable.filters\":\"Filters\",\"customViewsTable.history\":\"History\",\"customViewsTable.lastMonth\":\"Last Month\",\"customViewsTable.currentMonth\":\"Current Month Forecast\",\"customViewsTable.difference\":\"Difference\",\"customViewsTable.budgets\":\"Budgets\",\"customViewsTable.actions\":\"Actions\",\"customViewsTable.failedToLoad\":\"Failed to load custom view data.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCustomViewButton.errorMessage\":\"There was an error encountered while deleting this custom view. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCustomViewDialog.events.successfulDeletion\":\"Successfully deleted the custom view \\u0027{customViewName}\\u0027\",\"deleteCustomViewDialog.title\":\"Delete Custom View\",\"deleteCustomViewDialog.subtitle\":\"Please enter the name of this custom view to delete it.\",\"deleteCustomViewDialog.warningText\":\"Deleting this custom view will also delete all associated budgets if any.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postCustomViewButton.errorMessage\":\"There was an error encountered while creating this customView. If everything looks right please contact support so we can help you :)\",\"postCustomViewButton.saveAndView\":\"Save and View\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postCustomViewDialog.events.successfulCreation\":\"Successfully created the customView \\u0027{customViewName}\\u0027\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putCustomViewButton.errorMessage\":\"There was an error encountered while updating this custom view. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putCustomViewDialog.events.successfulUpdates\":\"Successfully updated the customView \\u0027{customViewName}\\u0027\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setCustomViewCard.title\":\"Custom View\",\"setCustomViewCard.subtitle\":\"Configure a custom view which is a reusable configured filter set over your tenant.\",\"setCustomViewCard.cloudAccounts.title\":\"Cloud Connections\",\"setCustomViewCard.subscriptions.title\":\"Subscriptions\",\"setCustomViewCard.products.title\":\"Products\",\"setCustomViewCard.services.title\":\"Services\",\"setCustomViewCard.regions.title\":\"Regions\",\"setCustomViewCard.geographies.title\":\"Geographies\",\"setCustomViewCard.productCategories.title\":\"Product Categories\",\"setCustomViewCard.providerTypes.title\":\"Provider Types\",\"setCustomViewCard.cloudProviders.title\":\"Provider Types\",\"setCustomViewCard.tagKeyValues.title\":\"Tags\",\"setCustomViewCard.tags.title\":\"Tags\",\"setCustomViewCard.tagKeys.title\":\"Tag Keys\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createFxRateButton.errorMessage\":\"There was an error encountered while creating this fx rate. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteFxRateButton.errorMessage\":\"There was an error encountered while deleting this fx rate. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteFxRateDialog.title\":\"Delete FX Rate\",\"deleteFxRateDialog.subtitle\":\"Warning: This process is irreversible! Your FX Rate data will be deleted permanently and you will need to re-enter your rates if you want to see your data again. Changes will only take place on the next import.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchFxRateButton.errorMessage\":\"There was an error encountered while updating this fx rate. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"chatsDialog.noChatsYet\":\"You haven\\u0027t started any Cloud Intelligence chats yet.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"dashboard.namespaces.namespaceColumnHeading\":\"Namespace\",\"dashboard.namespaces.totalColumnHeading\":\"Total\",\"dashboard.namespaces.nodata\":\"There is no namespace spend data in the selected date range\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deletePolicyButton.errorMessage\":\"There was an error encountered while deleting this policy. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deletePolicyDialog.events.successfulDeletion\":\"Successfully deleted the policy \\u0027{policyName}\\u0027\",\"deletePolicyDialog.title\":\"Delete Policy\",\"deletePolicyDialog.subtitle\":\"Please enter the name of this policy to delete it\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"policyMenu.delete\":\"Delete\",\"policyMenu.edit\":\"Edit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchProductButton.errorMessage\":\"There was an error encountered while patching this product. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"productManageMenu.editSpendLimit\":\"Set Spend Limit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionsCarbonTable.noRegions\":\"There are no regions visible in this tenant.\",\"regionsCarbonTable.currentMonthCO2e.title\":\"Last 30 days (CO2e)\",\"regionsCarbonTable.currentMonthKwH.title\":\"Last 30 days (kWh)\",\"regionsCarbonTable.currentMonthIntensity.title\":\"Energy Intensity (mt/kWh)\",\"regionsCarbonTable.providerType.title\":\"Provider\",\"regionsCarbonTable.geography.title\":\"Geography\",\"regionsCarbonTable.search.placeholder\":\"Search regions by name, provider etc.\",\"regionsCarbonTable.search.title\":\"Search within results...\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionsCarbonTableCard.title\":\"Region emissions this month\",\"regionsCarbonTableCard.subtitle\":\"All regions visible within this tenant\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionsTable.noRegions\":\"There are no regions visible in this tenant.\",\"regionsTable.currentMonth.title\":\"Last 30 days\",\"regionsTable.providerType.title\":\"Provider\",\"regionsTable.geography.title\":\"Geography\",\"regionsTable.search.placeholder\":\"Search regions by name, provider etc.\",\"regionsTable.search.title\":\"Search within results...\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionsTableCard.title\":\"Regions this month\",\"regionsTableCard.subtitle\":\"All regions visible within this tenant\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteReportButton.errorMessage\":\"There was an error encountered while deleting this report. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteReportDialog.events.successfulDeletion\":\"Successfully deleted the report \\u0027{reportName}\\u0027\",\"deleteReportDialog.title\":\"Delete Report\",\"deleteReportDialog.subtitle\":\"Please enter the name of this report to delete it\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postReportButton.errorMessage\":\"There was an error encountered while creating this report. If everything looks right please contact support so we can help you :)\",\"postReportButton.saveAndView\":\"Save and View\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putReportButton.errorMessage\":\"There was an error encountered while updating this report. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"savedReportConfigCard.title\":\"Set Report Configuration\",\"savedReportConfigCard.subtitle\":\"The configuration of the saved report. Keep in mind the delay in usage imports (24hr+) when deciding on report schedules.\",\"savedReportConfigCard.reportName.title\":\"Report Name\",\"savedReportConfigCard.reportName.placeholder\":\"e.g. My Custom Report 1\",\"savedReportConfigCard.topXResults.title\":\"Max Return Count\",\"savedReportConfigCard.filters.title\":\"Filters\",\"savedReportConfigCard.filters.placeholder\":\"Begin typing the name of services etc.\",\"savedReportConfigCard.subject.title\":\"Subject\",\"savedReportConfigCard.messageBody.title\":\"Message Body\",\"savedReportConfigCard.recipients.title\":\"Recipients (Emails)\",\"savedReportConfigCard.deliverInEmail.title\":\"Email Report\",\"savedReportConfigCard.scheduledStartDate.title\":\"Recurrence Start\",\"savedReportConfigCard.scheduledEndDate.title\":\"Recurrence End\",\"savedReportConfigCard.days.title\":\"Daily\",\"savedReportConfigCard.months.title\":\"Monthly\",\"savedReportConfigCard.weeks.title\":\"Weekly\",\"savedReportConfigCard.selectedDaysOfWeek.title\":\"Days of Week\",\"savedReportConfigCard.monthlyFrequency.title\":\"Schedule on the Nth day of the month\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"reportMenu.edit\":\"Edit\",\"reportMenu.delete\":\"Delete\",\"reportMenu.clone\":\"Clone\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"reportsTable.headers.reportName\":\"Report Name\",\"reportsTable.headers.createdDate\":\"Created Date\",\"reportsTable.headers.dateRangeKey\":\"Date Range\",\"reportsTable.headers.segregatedBy\":\"Fields\",\"reportsTable.headers.nextRun\":\"Next Run\",\"reportsTable.headers.actions\":\"Actions\",\"segregationSelect.products.title\":\"Products\",\"segregationSelect.services.title\":\"Services\",\"segregationSelect.subscriptions.title\":\"Subscriptions\",\"segregationSelect.meters.title\":\"Meters\",\"segregationSelect.cloudaccounts.title\":\"Cloud Connections\",\"segregationSelect.cloudProviders.title\":\"Providers\",\"segregationSelect.productCategories.title\":\"Product Categories\",\"segregationSelect.geographies.title\":\"Geographies\",\"segregationSelect.regions.title\":\"Regions\",\"dateRangeSelect.key_30d.title\":\"Last 30 days\",\"dateRangeSelect.key_60d.title\":\"Last 60 days\",\"dateRangeSelect.key_90d.title\":\"Last 90 days\",\"dateRangeSelect.key_lastMonth.title\":\"Last month\",\"dateRangeSelect.key_thisMonth.title\":\"This month\",\"dateRangeSelect.key_6m.title\":\"Last 6 months\",\"dateRangeSelect.key_all.title\":\"All usage\",\"dateRangeSelect.key_custom.title\":\"Custom\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchServiceButton.errorMessage\":\"There was an error encountered while patching this service. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"serviceManageMenu.editSpendLimit\":\"Set Spend Limit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"serviceMetadataChips.viewInAzure\":\"View in Azure\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"spentLimitSelectorCard.title\":\"Configure spend limit\",\"spendLimitSelectorCard.subtitle\":\"Setting a spend limit can give you peace of mind that you will be warned when consumption is expected to exceed this limit.\",\"spendLimitSelectorCard.searchEntity.title\":\"Search Entity\",\"spendLimitSelectorCard.searchEntity.placeholder\":\"Begin typing the name of services etc.\",\"spentLimitSelectorCard.monthlySpendLimit.title\":\"Monthly Spend Limit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"spendLimitsTable.noLimits\":\"There are no spend limits yet.\",\"spendLimitsTable.loadingLimits\":\"Loading spending limits\",\"spendLimitsTable.progress\":\"Progress\",\"spendLimitsTable.projections\":\"Forecast\",\"spendLimitsTable.actual\":\"Current Spend\",\"spendLimitsTable.limit\":\"Spend Limit Amount\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchSubscriptionButton.errorMessage\":\"There was an error encountered while patching this subscription. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"subscriptionManageMenu.editSpendLimit\":\"Set Spend Limit\",\"subscriptionManageMenu.editName\":\"Edit Name\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"subscriptionMetadataChips.viewInAzure\":\"View in Azure\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchTagButton.errorMessage\":\"There was an error encountered while patching this tag keyvalue. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagForm.tagKey.title\":\"Key\",\"tagForm.tagValue.title\":\"Value\",\"tagForm.newTag\":\"New Tag\",\"tagForm.noTags\":\"You do not currently have any tags here\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagKeyAutocomplete.tagKey.label\":\"Key\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagKeyValueManageMenu.editSpendLimit\":\"Set Spend Limit\",\"tagKeyValueManageMenu.promoteToDimension\":\"Promote to Dimension!\",\"tagKeyValueManageMenu.demoteToTagKey\":\"Demote to Tag Key!\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingActionLeftInput.AddNewTagAction.left\":\"Key\",\"tagMappingActionLeftInput.CopyValue.left\":\"Source Key\",\"tagMappingActionLeftInput.RemoveTag.left\":\"Key\",\"tagMappingActionLeftInput.Markup.left\":\"Markup %\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingActionRightInput.AddNewTagAction.right\":\"Value\",\"tagMappingActionRightInput.CopyValue.right\":\"Target Key\",\"tagMappingActionRightInput.RemoveTag.right\":\"Remove\",\"tagMappingActionRightInput.Markup.right\":\"Markup %\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingActionTypeSelect.AddNewTagAction.title\":\"Add Tag\",\"tagMappingActionTypeSelect.CopyValue.title\":\"Copy Value\",\"tagMappingActionTypeSelect.RemoveTag.title\":\"Remove Tag\",\"tagMappingActionTypeSelect.Markup.title\":\"Markup Cost\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingFormCardContent.SourceRowField_Insensitive.condition\":\"Field Name\",\"tagMappingFormCardContent.SourceRowField_Sensitive.condition\":\"Field Name\",\"tagMappingFormCardContent.SourceTagKeyValue_Insensitive.condition\":\"Tag Key\",\"tagMappingFormCardContent.SourceTagKeyValue_Sensitive.condition\":\"Tag Key\",\"tagMappingFormCardContent.Subscription_Insensitive.condition\":\"Subscription Name\",\"tagMappingFormCardContent.Subscription_Sensitive.condition\":\"Subscription Name\",\"tagMappingFormCardContent.CloudAccount_Insensitive.condition\":\"Cloud Account Name\",\"tagMappingFormCardContent.CloudAccount_Sensitive.condition\":\"Cloud Account Name\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingConditionRightInput.conditionMatches\":\"Matches\",\"tagMappingConditionRightInput.conditionMatch\":\"Match\",\"tagMappingConditionRightInput.matchesDescription\":\"Condition will pass if any matches are true\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingConditionTypeSelect.SourceRowField_Insensitive.title\":\"Source Row Field\",\"tagMappingConditionTypeSelect.SourceRowField_Sensitive.title\":\"Source Row Field (Case sensitive)\",\"tagMappingConditionTypeSelect.SourceTagKeyValue_Insensitive.title\":\"Tag Key Value\",\"tagMappingConditionTypeSelect.SourceTagKeyValue_Sensitive.title\":\"Tag Key Value (Case sensitive)\",\"tagMappingConditionTypeSelect.Subscription_Insensitive.title\":\"Subscription Name\",\"tagMappingConditionTypeSelect.Subscription_Sensitive.title\":\"Subscription Name (Case sensitive)\",\"tagMappingConditionTypeSelect.CloudAccount_Insensitive.title\":\"Cloud Account Name\",\"tagMappingConditionTypeSelect.CloudAccount_Sensitive.title\":\"Cloud Account Name (Case sensitive)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagMappingFormCardContent.AddNewTagAction.right\":\"Value\",\"tagMappingFormCardContent.CopyValue.right\":\"Target Key\",\"tagMappingFormCardContent.RemoveTag.right\":\"Remove\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagValueAutocomplete.tagValue.label\":\"Value\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"chooseTenantCard.title.default\":\"Choose Tenant\",\"chooseTenantCard.subtitle.default\":\"Please choose a tenant\",\"chooseTenantCard.subtitle.none\":\"No tenants available\",\"chooseTenantCard.contact\":\"Please contact support\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.createTenantDialog.title\":\"Create Tenant\",\"views.createTenantDialog.subtitle\":\"The tenant you create here will be charged under your current billing agreement unless other arrangements are made specifically.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteTenantButton.errorMessage\":\"There was an error encountered while deleting this tenant. If everything looks right please contact support so we can help you :)\",\"deleteTenantButton.unauthorisedMessage\":\"You do not have permission to delete this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"postTenantButton.errorMessage\":\"There was an error encountered while creating this tenant. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putTenantButton.errorMessage\":\"There was an error encountered while updating this tenant. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setTenantCard.name.required\":\"A name is required for tenants\",\"setTenantCard.currencyCode.required\":\"A currency code is required for tenants\",\"setTenantCard.mpn\":\"Microsoft Partner Number\",\"setTenantCard.tagHeirarchy1\":\"Tag Key 1\",\"setTenantCard.tagHeirarchy2\":\"Tag Key 2\",\"setTenantCard.tagHeirarchy3\":\"Tag Key 3\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tenantRadioGroup.create-button\":\"Create Tenant\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"dateRangeButtonToggle.customButtonText\":\"Custom\",\"dateRangeButtonToggle.updateButtonText\":\"Update\",\"dateRangeButtonToggle.allButtonText\":\"All\",\"dateRangeButtonToggle.formInvalidText\":\"Please select a valid date range to continue.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"dateRangeSelect.label\":\"Date range\",\"dateRangeSelect.key_30d.title\":\"Last 30 days\",\"dateRangeSelect.key_60d.title\":\"Last 60 days\",\"dateRangeSelect.key_90d.title\":\"Last 90 days\",\"dateRangeSelect.key_lastMonth.title\":\"Last month\",\"dateRangeSelect.key_thisMonth.title\":\"This month\",\"dateRangeSelect.key_6m.title\":\"Last 6 months\",\"dateRangeSelect.key_13m.title\":\"All usage\",\"dateRangeSelect.key_all.title\":\"All usage\",\"dateRangeSelect.key_custom.title\":\"Custom\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"segregationButtonToggle.products.title\":\"Products\",\"segregationButtonToggle.productCategories.title\":\"Categories\",\"segregationButtonToggle.productcategories.title\":\"Categories\",\"segregationButtonToggle.services.title\":\"Services\",\"segregationButtonToggle.subscriptions.title\":\"Subscriptions\",\"segregationButtonToggle.meters.title\":\"Meters\",\"segregationButtonToggle.cloudAccounts.title\":\"Cloud Connections\",\"segregationButtonToggle.cloudaccounts.title\":\"Cloud Connections\",\"segregationButtonToggle.regions.title\":\"Regions\",\"segregationButtonToggle.tags.title\":\"Tags\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"spendUsageOptionsToolbar.label\":\"Filter results by entities\",\"segregationButtonToggle.products.title\":\"Products\",\"segregationButtonToggle.products.description\":\"Names of the offerings provided by the cloud vendor\",\"segregationButtonToggle.productCategories.title\":\"Categories\",\"segregationButtonToggle.productCategories.description\":\"Classified product groupings\",\"segregationButtonToggle.services.title\":\"Services\",\"segregationButtonToggle.services.description\":\"Individual resources or licenses within a cloud vendor.\",\"segregationButtonToggle.subscriptions.title\":\"Subscriptions\",\"segregationButtonToggle.subscriptions.description\":\"A billing group within a cloud vendor.\",\"segregationButtonToggle.meters.title\":\"Meters\",\"segregationButtonToggle.meters.description\":\"The unit of action being charged on a resource\",\"segregationButtonToggle.cloudAccounts.title\":\"Cloud Connections\",\"segregationButtonToggle.cloudAccounts.description\":\"Individual technical connections to a cloud vendor\",\"segregationButtonToggle.regions.title\":\"Regions\",\"segregationButtonToggle.regions.description\":\"Vendor specific geographical boundaries\",\"segregationButtonToggle.tags.title\":\"Tags\",\"segregationButtonToggle.tags.description\":\"User defined tags\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"spendUsageTable.exportText.btnText\":\"Export CSV\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"usageComparison.comparisontimeframe\":\"Comparison timeframe\",\"usageComparison.currentperiodending\":\"Current period ending\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"usageComparisonsTable.headers.name\":\"Name\",\"usageComparisonsTable.headers.difference\":\"Difference\",\"usageComparisonsTable.headers.past\":\"Past\",\"usageComparisonsTable.headers.current\":\"Current\",\"usageComparisonsTable.exportBtnText\":\"Export CSV\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"usageFieldSelect.ChargeDate.title\":\"Charge date\",\"usageFieldSelect.SourceCost.title\":\"Source cost\",\"usageFieldSelect.Cost.title\":\"Cost\",\"usageFieldSelect.PriceChannels.title\":\"Price channels\",\"usageFieldSelect.Currency.title\":\"Currency\",\"usageFieldSelect.Unit.title\":\"Unit\",\"usageFieldSelect.UnitsConsumed.title\":\"Units consumed\",\"usageFieldSelect.MeterId.title\":\"Meter ID\",\"usageFieldSelect.MeterName.title\":\"Meter name\",\"usageFieldSelect.ServiceId.title\":\"Service ID\",\"usageFieldSelect.ServiceName.title\":\"Service name\",\"usageFieldSelect.ServiceTypes.title\":\"Service types\",\"usageFieldSelect.RegionName.title\":\"Region name\",\"usageFieldSelect.ImportId.title\":\"Import ID\",\"usageFieldSelect.ProductName.title\":\"Product name\",\"usageFieldSelect.Tags.title\":\"Tags\",\"usageFieldSelect.ResourceName.title\":\"Resource name\",\"usageFieldSelect.MetaData.title\":\"Metadata\",\"usageFieldSelect.AltServiceId.title\":\"Alt service ID\",\"usageFieldSelect.AltServiceName.title\":\"Alt service name\",\"usageFieldSelect.AltUsageItemType.title\":\"Alt usage item type\",\"usageFieldSelect.CO2e.title\":\"CO2e\",\"usageFieldSelect.kWh.title\":\"kWh\",\"usageFieldSelect.CostView.title\":\"Cost view\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"virtualTagsTable.noRecords\":\"There are no virtual tags configured for this service.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createWebhookButton.errorMessage\":\"There was an error encountered while creating this webhook. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createWebhookDialog.events.successfulUpdates\":\"Successfully updated the webhook \\u0027{webhookName}\\u0027\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"editWebhookButton.errorMessage\":\"There was an error encountered while editing this webhook. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"editWebhookDialog.events.successfulUpdates\":\"Successfully updated the webhook \\u0027{webhookName}\\u0027\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"annotationDialog.dialogTitle\":\"Annotations\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"annotationDialog.dialogTitle\":\"Annotations\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"alibabaCloudAccountsTable.accessKeyId\":\"Access Key Id\",\"alibabaCloudAccountsTable.regionCode\":\"Region Code\",\"alibabaCloudAccountsTable.expiry\":\"Expiry\",\"alibabaCloudAccountsTable.noData\":\"No alibaba cloud connections configured.\",\"alibabaCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"alibabaRegionAutocomplete.noRegionHint\":\"Please specify the region which you are connecting to.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAlibabaCredentialsCard.title\":\"Set Alibaba Credentials\",\"setAlibabaCredentialsCard.name.required\":\"An name for this cloud connection is required\",\"setAlibabaCredentialsCard.accessKeyId\":\"Access Key ID\",\"setAlibabaCredentialsCard.accessKeyId.required\":\"Access Key ID is required\",\"setAlibabaCredentialsCard.regionCode\":\"Alibaba Region\",\"setAlibabaCredentialsCard.secretAccessKey\":\"Access Key Secret\",\"setAlibabaCredentialsCard.secretAccessKey.required\":\"Access Key Secret is required\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"amazonWSCloudAccountsTable.accessKeyId\":\"Access Key Id\",\"amazonWSCloudAccountsTable.bucketName\":\"Bucket Name\",\"amazonWSCloudAccountsTable.expiry\":\"Expiry\",\"amazonWSCloudAccountsTable.noData\":\"No amazon cloud connections configured.\",\"amazonWSCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createAmazonAccountMenu.AwsAssumeRoleUsage.top\":\"Amazon\",\"createAmazonAccountMenu.AwsAssumeRoleUsage.text\":\"AWS Assume Role Connection\",\"createAmazonAccountMenu.AwsAssumeRoleUsage.bottom\":\"Preferred method of connecting to AWS. This will require you to enable cross-account access.\",\"createAmazonAccountMenu.AwsIamUsage.top\":\"Amazon\",\"createAmazonAccountMenu.AwsIamUsage.text\":\"AWS IAM Based Connection\",\"createAmazonAccountMenu.AwsIamUsage.bottom\":\"Legacy connection method that uses IAM Access keys. This is no longer the preferred method as it requires you to maintain expiring secret keys.\",\"createAmazonAccountMenu.AwsPax8AssumeRoleUsage.top\":\"Amazon\",\"createAmazonAccountMenu.AwsPax8AssumeRoleUsage.text\":\"AWS Assume Role Connection for Pax8\",\"createAmazonAccountMenu.AwsPax8AssumeRoleUsage.bottom\":\"Preferred method of connecting to AWS. This will require you to enable cross-account access.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"s3RegionAutocomplete.noRegionHint\":\"Please specify if your bucket is in a Chinese region.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAmazonAssumeRoleCredentialsCard.title\":\"Set AWS Assume Role Credentials\",\"setAmazonAssumeRoleCredentialsCard.name.required\":\"An name for this cloud connection is required\",\"setAmazonAssumeRoleCredentialsCard.externalId\":\"Account ID (External ID)\",\"setAmazonAssumeRoleCredentialsCard.roleArn\":\"Role ARN\",\"setAmazonAssumeRoleCredentialsCard.sessionName\":\"Session Name\",\"setAmazonAssumeRoleCredentialsCard.regionCode\":\"S3 Region\",\"setAmazonAssumeRoleCredentialsCard.s3BucketName\":\"S3 Bucket Name (Reports)\",\"setAmazonAssumeRoleCredentialsCard.s3BucketName.required\":\"S3 Bucket Name is required\",\"setAmazonAssumeRoleCredentialsCard.s3BucketName.notBucketName\":\"The provided key is not a valid S3 bucket name\",\"setAmazonAssumeRoleCredentialsCard.isPax8Format\":\"Use Pax8 AWS Format?\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAmazonWsCredentialsCard.title\":\"Set AWS IAM Access Key Credentials\",\"setAmazonWsCredentialsCard.name.required\":\"An name for this cloud connection is required\",\"setAmazonWsCredentialsCard.accessKeyId\":\"Access Key ID\",\"setAmazonWsCredentialsCard.accessKeyId.required\":\"Access Key ID is required\",\"setAmazonWsCredentialsCard.accessKeyId.notKeyId\":\"Access Key IDs comprise of 20 alphanumeric uppercase characters\",\"setAmazonWsCredentialsCard.regionCode\":\"S3 Region\",\"setAmazonWsCredentialsCard.secretAccessKey\":\"Secret Access Key\",\"setAmazonWsCredentialsCard.secretAccessKey.required\":\"Secret Access Key is required\",\"setAmazonWsCredentialsCard.secretAccessKey.notSecretKey\":\"Secret Access Keys comprise of 40 upper and lower case characters\",\"setAmazonWsCredentialsCard.s3BucketName\":\"S3 Bucket Name (Reports)\",\"setAmazonWsCredentialsCard.s3BucketName.required\":\"S3 Bucket Name is required\",\"setAmazonWsCredentialsCard.s3BucketName.notBucketName\":\"The provided key is not a valid S3 bucket name\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"azureCloudAccountsTable.noData\":\"No azure cloud connections configured.\",\"azureCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\",\"azureCloudAccountsTable.disconnectedArmConnection\":\"Please update your enhanced connection with valid credentials\",\"azureCloudAccountsTable.unsuppliedArmConnection\":\"Please supply an Azure App credential to be able to view recommendations\",\"azureCloudAccountsTable.enhancedFeatureConnection\":\"Enhanced Features\",\"azureCloudAccountsTable.subscriptions\":\"subscriptions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAzureArmCredentialsCard.title\":\"Set Azure Credentials\",\"setAzureArmCredentialsCard.name.required\":\"A name for this cloud connection is required\",\"setAzureArmCredentialsCard.tenantId\":\"Tenant ID\",\"setAzureArmCredentialsCard.tenantId.required\":\"Tenant ID is required\",\"setAzureArmCredentialsCard.tenantId.notGuid\":\"Tenant ID is not a valid GUID\",\"setAzureArmCredentialsCard.copyRemoteTags\":\"Load Current Azure Tag Hierarchy\",\"setAzureArmCredentialsCard.copyRemoteTags.tooltip\":\"Do you want to load the current subscription and resource group tags?\",\"setAzureArmCredentialsCard.clientId\":\"Client ID (App ID)\",\"setAzureArmCredentialsCard.clientId.required\":\"Client ID is required\",\"setAzureArmCredentialsCard.clientId.notGuid\":\"Client ID is not a valid GUID\",\"setAzureArmCredentialsCard.clientSecret\":\"Client Secret\",\"setAzureArmCredentialsCard.clientSecret.required\":\"Client Secret is required\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAzureCmeCredentialsCard.title\":\"Set Azure Credentials (Cost Management Export)\",\"setAzureCmeCredentialsCard.name.required\":\"A name for this cloud connection is required\",\"setAzureCmeCredentialsCard.tenantId\":\"Tenant ID\",\"setAzureCmeCredentialsCard.tenantId.required\":\"Tenant ID is required\",\"setAzureCmeCredentialsCard.tenantId.notGuid\":\"Tenant ID is not a valid GUID\",\"setAzureCmeCredentialsCard.copyRemoteTags\":\"Load Current Azure Tags\",\"setAzureCmeCredentialsCard.copyRemoteTags.tooltip\":\"Do you want to load the current subscription and resource group tags?\",\"setAzureCmeCredentialsCard.clientId\":\"Client ID (App ID)\",\"setAzureCmeCredentialsCard.storageAccount\":\"Storage Account Name\",\"setAzureCmeCredentialsCard.storageAccount.required\":\"Storage Account Name is required\",\"setAzureCmeCredentialsCard.container\":\"Container Name\",\"setAzureCmeCredentialsCard.container.required\":\"Container Name is required\",\"setAzureCmeCredentialsCard.directoryName\":\"Directory Name\",\"setAzureCmeCredentialsCard.directoryName.required\":\"Directory is required\",\"setAzureCmeCredentialsCard.exportName\":\"Export Name\",\"setAzureCmeCredentialsCard.exportName.required\":\"Export Name is required\",\"setAzureCmeCredentialsCard.clientId.required\":\"Client ID is required\",\"setAzureCmeCredentialsCard.clientId.notGuid\":\"Client ID is not a valid GUID\",\"setAzureCmeCredentialsCard.clientSecret\":\"Client Secret\",\"setAzureCmeCredentialsCard.clientSecret.required\":\"Client Secret is required\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setAzureEaCredentialsCard.title\":\"Set Azure EA Credentials\",\"setAzureEaCredentialsCard.enrollmentNumber\":\"Enrollment Number\",\"setAzureEaCredentialsCard.expiryDate\":\"Expiry Date\",\"setAzureEaCredentialsCard.eaApiKey\":\"EA Api Key\",\"setAzureEaCredentialsCard.name.required\":\"An name for this cloud connection is required\",\"setAzureEaCredentialsCard.eaApiKey.required\":\"An ea api key is required for this cloud connection\",\"setAzureEaCredentialsCard.eaApiKey.parseError\":\"The ea api key supplied is not valid\",\"setAzureEaCredentialsCard.eaApiKey.expired\":\"The ea api key supplied has expired.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"showAzureSubscriptions.title\":\"Azure App Credential Subscriptions\",\"showAzureSubscriptions.subscriptions\":\"Subscriptions\",\"showAzureSubscriptions.noSubscriptions\":\"No Subscriptions visible.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"cloudAccountCopiesTable.customerName\":\"Customer Name\",\"cloudAccountCopiesTable.sharedCloudAccountName\":\"Shared Cloud Connection Name\",\"cloudAccountCopiesTable.markupPercentage\":\"Markup Percentage\",\"cloudAccountCopiesTable.tagAllocations\":\"Tags\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createCloudAccountMenu.AzureEa.top\":\"Azure\",\"createCloudAccountMenu.AzureEa.text\":\"Azure Enterprise Agreement\",\"createCloudAccountMenu.AzureEa.bottom\":\"For Azure subscriptions that have been provisioned through an enterprise agreement. Will require admin access to https://ea.azure.com\",\"createCloudAccountMenu.Azure.top\":\"Azure\",\"createCloudAccountMenu.Azure.text\":\"Azure Account (Legacy)\",\"createCloudAccountMenu.Azure.bottom\":\"(Legacy connection method) For all Azure offer types.\",\"createCloudAccountMenu.AzureCme.top\":\"Azure\",\"createCloudAccountMenu.AzureCme.text\":\"Azure Account (Cost Management Export)\",\"createCloudAccountMenu.AzureCme.bottom\":\"Preferred Connection Method for all Azure offer types with the exception of Enterprise Agreements (0136P).\",\"createCloudAccountMenu.AzurePax8.top\":\"Azure Pax8\",\"createCloudAccountMenu.AzurePax8.text\":\"Azure Pax8\",\"createCloudAccountMenu.AzurePax8.bottom\":\"Proprietary connection type for PAX8.\",\"createCloudAccountMenu.Amazon.top\":\"AWS\",\"createCloudAccountMenu.Amazon.text\":\"Amazon Web Services Account\",\"createCloudAccountMenu.Amazon.bottom\":\"For all AWS accounts, both Linked or otherwise. This will require access to an S3 bucket containing reports.\",\"createCloudAccountMenu.Google.top\":\"GCP\",\"createCloudAccountMenu.Google.text\":\"Google Cloud Platform Project\",\"createCloudAccountMenu.Google.bottom\":\"Coming Soon!\",\"createCloudAccountMenu.MicrosoftCsp.top\":\"Distributors\",\"createCloudAccountMenu.MicrosoftCsp.text\":\"Direct Azure CSP Connection\",\"createCloudAccountMenu.MicrosoftCsp.bottom\":\"For Azure CSPs with direct connections. Will require administrative permissions in https://partner.microsoft.com\",\"createCloudAccountMenu.Rhipe.top\":\"Distributors\",\"createCloudAccountMenu.Rhipe.text\":\"Rhipe\",\"createCloudAccountMenu.Rhipe.bottom\":\"For customers of https://www.rhipe.com. This will require API keys available from PRISM.\",\"createCloudAccountMenu.VmWare.top\":\"VmWare\",\"createCloudAccountMenu.VmWare.text\":\"VMWare vSphere\",\"createCloudAccountMenu.VmWare.bottom\":\"For customers to upload priced VMWare vSphere consumption.\",\"createCloudAccountMenu.Alibaba.top\":\"Alibaba\",\"createCloudAccountMenu.Alibaba.text\":\"Alibaba Cloud\",\"createCloudAccountMenu.Alibaba.bottom\":\"For all Alibaba cloud customers.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"credentialStatusIcon.tooltip.unknown\":\"An error has occurred, this is an unknown credential status\",\"credentialStatusIcon.tooltip.unavailable\":\"Please connect the appropriate credentials to continue viewing {integrationType}.\",\"credentialStatusIcon.tooltip.allGood\":\"All {integrationType} are correctly configured.\",\"credentialStatusIcon.tooltip.partiallyGood\":\"Although you may be seeing some {integrationType} you do not have all the credentials necessary.\",\"credentialStatusIcon.tooltip.actionRequired\":\"Please review your accounts as not all {integrationType} are coming through.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customCloudAccountsTable.noData\":\"No custom cloud connections configured.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCloudAccountButton.errorMessage\":\"There was an error encountered while deleting this cloud connection. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCloudAccountCopyButton.errorMessage\":\"There was an error encountered while deleting the shared cloud connection. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCloudAccountDialog.title\":\"Delete Cloud Connection\",\"deleteCloudAccountDialog.subtitle\":\"Warning: This process is irreversible! Your cloud connection data will be deleted permanently and you will need to re-enter your credentials if you want to see your data again.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setRhipeCredentialsCard.title\":\"Set Rhipe Client Credentials\",\"setRhipeCredentialsCard.name.required\":\"An name for this cloud connection is required\",\"setRhipeCredentialsCard.clientId\":\"Client ID\",\"setRhipeCredentialsCard.clientId.required\":\"An client ID is required\",\"setRhipeCredentialsCard.clientId.notGuid\":\"The provided client ID is not a valid guid\",\"setRhipeCredentialsCard.clientSecret\":\"Client Secret\",\"setRhipeCredentialsCard.clientSecret.required\":\"An client secret is required\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"googleCloudAccountsTable.projectId\":\"Project ID\",\"googleCloudAccountsTable.dataSetId\":\"Dataset ID\",\"googleCloudAccountsTable.expiry\":\"Expiry\",\"googleCloudAccountsTable.noData\":\"No google cloud connections configured.\",\"googleCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setGoogleJsonCredentialsCard.title\":\"Set Google Credentials\",\"setGoogleJsonCredentialsCard.subtitle\":\"Google Cloud Platform JSON credentials\",\"setGoogleJsonCredentialsCard.jsonCredentials\":\"Json Credentials\",\"setGoogleJsonCredentialsCard.dataSetId\":\"Dataset ID\",\"setGoogleJsonCredentialsCard.tableId\":\"Table ID\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"oracleCloudAccountsTable.tenancyId\":\"Tenancy ID\",\"oracleCloudAccountsTable.userId\":\"User ID\",\"oracleCloudAccountsTable.noData\":\"No oracle cloud connections configured.\",\"oracleCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setOracleCredentialsCard.title\":\"Set Oracle Credentials\",\"setOracleCredentialsCard.subtitle\":\"Oracle Cloud credentials\",\"setOracleCredentialsCard.pemCredentials\":\"PEM Credentials\",\"setOracleCredentialsCard.tenancyId\":\"Tenancy ID\",\"setOracleCredentialsCard.userId\":\"User ID\",\"setOracleCredentialsCard.regionId\":\"Region ID\",\"setOracleCredentialsCard.fingerprint\":\"Fingerprint\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"patchCloudAccountButton.errorMessage\":\"There was an error encountered while updating this cloud connection. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createCloudAccountButton.errorMessage\":\"There was an error encountered while creating this cloud connection. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putCredentialButton.errorMessage\":\"There was an error encountered while updating the credentials of this cloud connection. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setCloudAccountCurrenciesCard.title\":\"Set Currency Source\",\"setCloudAccountCurrenciesCard.subtitle\":\"Change the currency source of this cloud connection.\",\"setCloudAccountCurrenciesCard.alert\":\"Changes to the currency source of a cloud connection only apply to the current month on.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setSnowflakeCredentialsCard.title\":\"Set Snowflake Credentials\",\"setSnowflakeCredentialsCard.accountName\":\"Account Name\",\"setSnowflakeCredentialsCard.organizationName\":\"Organization Name\",\"setSnowflakeCredentialsCard.userName\":\"User Name\",\"setSnowflakeCredentialsCard.password\":\"Password\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"snowflakeCloudAccountsTable.orgName\":\"Organization\",\"snowflakeCloudAccountsTable.accountName\":\"Account\",\"snowflakeCloudAccountsTable.noData\":\"No snowflake cloud connections configured.\",\"snowflakeCloudAccountsTable.disconnectedUsageConnection\":\"Please update your usage connection with valid credentials\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setUserCard.title\":\"Set User Details\",\"setUserCard.subtitle\":\"Please enter the details for this user. New users will be sent an invite email directly.\",\"setUserCard.canRead.title\":\"Reader\",\"setUserCard.canRead.subtitle\":\"Can read all non-administrative data in this tenant.\",\"setUserCard.canContribute.title\":\"Contributor\",\"setUserCard.canContribute.subtitle\":\"Can perform non-administrative write functions like setting spend limits and adding annotations.\",\"setUserCard.canAdminister.title\":\"Administrator\",\"setUserCard.canAdminister.subtitle\":\"Can read and write administrative data, such as adding users to a tenant and creating new cloud connections.\",\"setUserCard.canManageBilling.title\":\"Billing Administrator\",\"setUserCard.canManageBilling.subtitle\":\"Can manage billing functions of the tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setPermissionsCard.title\":\"Set Permissions\",\"setPermissionsCard.subtitle\":\"Indicate the level of permissions this entity should have over this tenant.\",\"setPermissionsCard.canRead.title\":\"Reader\",\"setPermissionsCard.canRead.subtitle\":\"Can read all non-administrative data in this tenant.\",\"setPermissionsCard.canContribute.title\":\"Contributor\",\"setPermissionsCard.canContribute.subtitle\":\"Can perform non-administrative write functions like setting spend limits and adding annotations.\",\"setPermissionsCard.canAdminister.title\":\"Administrator\",\"setPermissionsCard.canAdminister.subtitle\":\"Can read and write administrative data, such as adding users to a tenant and creating new cloud connections.\",\"setPermissionsCard.canManageBilling.title\":\"Billing Administrator\",\"setPermissionsCard.canManageBilling.subtitle\":\"Can manage billing functions of the tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"addCustomerButton.errorMessage\":\"There was an error encountered while creating this customer. If everything looks right please contact support.\",\"addCustomerButton.submit\":\"Submit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"navMenuList.subheaders.costAndUsage\":\"Costs and Usage\",\"navMenuList.subheaders.tracking\":\"Tracking\",\"navMenuList.subheaders.reporting\":\"Reporting\",\"navMenuList.subheaders.customers\":\"Customers\",\"navMenuList.subheaders.settings\":\"Settings\",\"navMenuList.financeDashboard\":\"Overview\",\"navMenuList.opsDashboard\":\"Operations\",\"navMenuList.trendsDashboard\":\"Trends\",\"navMenuList.reservationsDashboard\":\"Reservations\",\"navMenuList.costExplorer\":\"Cost Explorer\",\"navMenuList.reports\":\"Reports\",\"navMenuList.customViews\":\"Custom Views\",\"navMenuList.budgets\":\"Budgets & Spend Limits\",\"navMenuList.spendLimits\":\"Spend Limits\",\"navMenuList.customReports\":\"Custom Reports\",\"navMenuList.tagOverview\":\"Tag Reports\",\"navMenuList.regionOverview\":\"Cost Map\",\"navMenuList.customersOverview\":\"Customers Report\",\"navMenuList.manage\":\"Manage\",\"navMenuList.recommendations\":\"Recommendations\",\"navMenuList.accounts\":\"Accounts\",\"navMenuList.users\":\"Users\",\"navMenuList.support\":\"Contact Support\",\"navMenuList.dashboarding\":\"Custom Dashboards\",\"navMenuList.credentialTooltip\":\"There are one or more cloud connection with invalid or expired credentials.\",\"navMenuList.cloudIntelligence\":\"Cloud Intelligence\",\"navMenuList.subheaders.energy\":\"Emissions and Energy\",\"navMenuList.carbon.overview\":\"Overview\",\"navMenuList.carbon.explorer\":\"Emissions Explorer\",\"navMenuList.carbon.map\":\"Energy Map\",\"navMenuList.watchdog\":\"Watchdog\",\"navMenuList.kubernetes\":\"Kubernetes\",\"navMenuList.azureEmissions\":\"Azure Emissions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"navTenantMenuList.tenantSettings\":\"Settings\",\"navTenantMenuList.chooseTenant\":\"Change Tenant...\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"navUserMenu.title\":\"User Menu\",\"navUserMenu.changePassword\":\"Change Password\",\"navUserMenu.logOut\":\"Log Out\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"putRecommendationSettingsButton.errorMessage\":\"There was an error encountered while updating this recommendation. If everything looks right please contact support so we can help you :)\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"recommendationsnotavailable.higherplan\":\"Some recommendations are not available on your current subscription, contact\",\"recommendationsnotavailable.salesteam\":\"sales team\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"setRecommendationSettingsCard.title\":\"Configure Recommendation Settings\",\"setRecommendationSettingsCard.enabled\":\"Enabled\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.chooseProfile.title\":\"Choose Profile\",\"views.chooseProfile.logout\":\"Logout\",\"views.chooseProfile.login\":\"Choose\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"nativeCarbonDashboard.title\":\"Azure Emissions\",\"nativeCarbonDashboard.subtitle\":\"These figures use a model directly from Azure and do not match other carbon screens.\",\"nativeCarbonDashboard.titles.currentProjected\":\"Total {thisMonthName}\",\"nativeCarbonDashboard.titles.previousTotal\":\"Total {lastMonthName}\",\"nativeCarbonDashboard.titles.cumulative\":\"12 months cumulative\",\"nativeCarbonDashboard.error.loadingRegions\":\"There was an issue loading your regions. If this problem persists please contact support.\",\"nativeCarbonDashboard.error.loadingRegionTotals\":\"There was an issue loading your region carbon data. If this problem persists please contact support.\",\"dashboard.titles.potentialSavings\":\"Potential Monthly Savings\",\"dashboard.recommendationStatus.loading\":\"Loading...\",\"dashboard.recommendationStatus.unknown\":\"Unknown status\",\"dashboard.recommendationStatus.unavailable\":\"Unavailable\",\"dashboard.recommendationStatus.allGood\":\"All good\",\"dashboard.recommendationStatus.partiallyGood\":\"New credentials required\",\"dashboard.recommendationStatus.actionRequired\":\"Connection broken\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"budgetdetails.title\":\"Budget Details - {budgetName}\",\"budgetdetails.chartTitle\":\"Budget Periods\",\"budgetdetails.backButton\":\"Back to Budgets\",\"budgetdetails.table.period\":\"Budget Period\",\"budgetdetails.table.amount\":\"Budget Amount\",\"budgetdetails.table.actual\":\"Actual Spend\",\"budgetdetails.table.varianceamount\":\"Delta Amount\",\"budgetdetails.table.variancepercentage\":\"Delta %\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"budgets.basl_title\":\"Budgets & Spend Limits\",\"budgets.sl_title\":\"Spend Limits\",\"budgets.subTitle\":\"Budgets\",\"budgets.caption\":\"Budgets let you set limits on resources. Notifications are sent when spend is projected to exceed 75%, 90%, and 100% of the budgeted amount.\",\"budgets.spendlimits.title\":\"Spend Limits\",\"budgets.spendlimits.caption\":\"Spend limits are simplified budgets that can be applied quickly to a range of entity types in the platform.\",\"budgets.titles.totalBudgets\":\"Total Budgets & Limits\",\"budgets.titles.totalSpendLimits\":\"Total Spend Limits\",\"budgets.titles.totalProjectedAbove\":\"Total Projected Above\",\"budgets.titles.totalActuallyAbove\":\"Total Actually Above\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"emissionsExplorer.title\":\"Emissions Explorer\",\"emissionsExplorer.tabs.productcategories\":\"Product Categories\",\"emissionsExplorer.tabs.resources\":\"Services\",\"emissionsExplorer.tabs.subscriptions\":\"Subscriptions\",\"emissionsExplorer.tabs.cloudaccounts\":\"Cloud Connections\",\"emissionsExplorer.tabs.products\":\"Products\",\"emissionsExplorer.headers.productcategories\":\"Product Category\",\"emissionsExplorer.headers.subscriptions\":\"Subscription Name\",\"emissionsExplorer.headers.cloudaccounts\":\"Cloud Connection Name\",\"emissionsExplorer.headers.products\":\"Product Name\",\"emissionsExplorer.headers.services\":\"Service Name\",\"emissionsExplorer.headers.tags\":\"Tag Value\",\"emissionsExplorer.toast.navigationError\":\"Detailed information not yet available for this dimension\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"carbonMap.title\":\"Region Overview\",\"carbonMap.error.loadingRegions\":\"There was an issue loading your regions. If this problem persists please contact support.\",\"carbonMap.error.loadingRegionTotals\":\"There was an issue loading your region spend. If this problem persists please contact support.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"carbonDashboard.title\":\"Emissions and Energy\",\"carbonDashboard.titles.currentProjected\":\"Total {thisMonthName}\",\"carbonDashboard.titles.previousTotal\":\"Total {lastMonthName}\",\"carbonDashboard.titles.cumulative\":\"12 months cumulative\",\"carbonDashboard.error.loadingRegions\":\"There was an issue loading your regions. If this problem persists please contact support.\",\"carbonDashboard.error.loadingRegionTotals\":\"There was an issue loading your region carbon data. If this problem persists please contact support.\",\"dashboard.titles.potentialSavings\":\"Potential Monthly Savings\",\"dashboard.recommendationStatus.loading\":\"Loading...\",\"dashboard.recommendationStatus.unknown\":\"Unknown status\",\"dashboard.recommendationStatus.unavailable\":\"Unavailable\",\"dashboard.recommendationStatus.allGood\":\"All good\",\"dashboard.recommendationStatus.partiallyGood\":\"New credentials required\",\"dashboard.recommendationStatus.actionRequired\":\"Connection broken\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"copyCloudAccount.chooseTenant.title\":\"Sharing\",\"copyCloudAccount.chooseTenant.caption\":\"Choose the cloud connection to copy into which customer.\",\"copyCloudAccount.chooseTenant.share\":\"Share cloud connection credentials for enhanced services e.g. Recommendations and reservations.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"copyCloudAccount.finish.title\":\"Finish\",\"copyCloudAccount.finish.caption\":\"Finally what would you like to call the shared cloud connection.\",\"copyCloudAccount.finish.name.label\":\"Shared cloud connection name\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"copyCloudAccount.index.title\":\"Sharing {cloudAccountName}\",\"copyCloudAccount.steps.chooseTenant\":\"Share Details\",\"copyCloudAccount.steps.pricing\":\"Pricing\",\"copyCloudAccount.steps.filters\":\"Filters\",\"copyCloudAccount.steps.finish\":\"Finish\",\"copyCloudAccount.success.added\":\"Shared cloud connection into customer\",\"copyCloudAccount.success.updated\":\"Updated shared cloud connection rules\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"copyCloudAccount.pricing.title\":\"Pricing\",\"copyCloudAccount.pricing.caption\":\"The pricing rules for the copied account.\",\"copyCloudAccount.pricing.baseCostOnly\":\"This cloud connection type only supports base cost pricing\",\"copyCloudAccount.pricing.initialPrice\":\"Price Basis\",\"copyCloudAccount.pricing.markupPercent\":\"Markup Percent %\",\"copyCloudAccount.pricing.noMarkups\":\"No Markups have been set\",\"copyCloudAccount.pricing.newMarkup\":\"New Markup\",\"copyCloudAccount.pricing.effectiveFrom\":\"Effective From\",\"copyCloudAccount.pricing.useTenantCurrencies\":\"Use Tenant Currencies\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"copyCloudAccount.tags.title\":\"Filter by Tags\",\"copyCloudAccount.tags.caption\":\"You may optionally filter the usage in the copied cloud connection to only include spend, services or subscriptions with the given tags. The evaluation of these tags is an OR, i.e. if any of these tag conditions are met copy.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customView.title\":\"Custom View - {customviewName}\",\"customView.failedToLoad\":\"There was an issue loading this custom report.\",\"customView.backButtonText\":\"Back to custom views\",\"customView.lastMonth\":\"Total {lastMonthName}\",\"customView.currentMonth\":\"Projected {thisMonthName}\",\"customView.budgets\":\"Budget Status\",\"customView.usage\":\"Usage\",\"customView.overview\":\"Overview\",\"customView.lessThan\":\"{percentage}% less than {month}\",\"customView.moreThan\":\"{percentage}% more than {month}\",\"customView.titles.creditsLastMonth\":\"Includes {credits} of credits and discounts\",\"customView.budgetExceedsActual\":\"Budget exceeds actual\",\"customView.budgetExceedsForecast\":\"Budget exceeds forecast\",\"customView.budgetAllGood\":\"All Budgets under forecast\",\"customView.budgetNotAvailable\":\"No Budgets set\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customViews.title\":\"Custom Views\",\"customViews.subtitle\":\"Custom views are re-usable filters that can be applied to spend.\",\"customViews.failedToLoad\":\"There was an issue loading the custom views.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customView.overview.title\":\"Custom Views\",\"customView.overview.subtitle\":\"Custom views are re-usable filters that can be applied to spend.\",\"customView.overview.failedToLoad\":\"There was an issue loading the custom views.\",\"customView.overview.yearInReview\":\"Year in review\",\"customView.overview.monthAverage\":\"{total} {currency} / Month Average\",\"customView.budgets.subTitle\":\"Related Budgets\",\"customView.budgets.caption\":\"Budgets let you set limits on resources. Notifications are sent when actuals are projected to exceed 75%, 90%, and 100% of the budgeted amount.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"createCustomer.title\":\"Create Customer\",\"createCustomer.customerName.label\":\"Customer Name\",\"createCustomer.successfulAdd\":\"Customer successfully added.\",\"createCustomer.customerIsNotForProfit.label\":\"Customer is a registered charity or not-for-profit.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customerManage.title\":\"Customer - {customerName}\",\"customerManage.failedToLoad\":\"There was an issue loading this customer.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customerManage.sharedCloudAccountName\":\"Shared Cloud Connection Name\",\"customerManage.sourceCloudAccount\":\"Source Cloud Connection\",\"customerManage.customerAccount\":\"Customer Account\",\"customerManage.origin\":\"Origin\",\"customerManage.currentMarkup\":\"Current Markup\",\"customerManage.actualMargin\":\"Actual Margin\",\"customerManage.actions\":\"Actions\",\"deleteCopyCard.subtitle\":\"Warning: This process is irreversible! The shared cloud connection data will be deleted permanently and you will need to re-share your account if you want to see your data again.\",\"deleteCopyCard.title\":\"Delete Share\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.users.title\":\"Access Management\",\"views.users.subtitle\":\"The users and groups that have some level of access of this tenant.\",\"users.inviteUserOrGroup\":\"Add User / Group\",\"users\":\"Users\",\"users.DeleteUserTitle\":\"Delete User\",\"users.DeleteUserSubtitle\":\"This user will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.customersManage.title\":\"Customers\",\"views.customersManage.name\":\"Customer Name\",\"views.customersManage.sharedAccounts\":\"# Shared Accounts\",\"views.customersManage.otherAccounts\":\"# Other Accounts\",\"views.customersManage.lastMonthCost\":\"Cost\",\"views.customersManage.lastMonthRevenue\":\"Revenue\",\"views.customersManage.profit\":\"Profit\",\"views.customersManage.lastMonthOther\":\"Other Spend\",\"views.customersManage.lastMonthMargin\":\"Margin\",\"views.customersManage.cards.totalCustomers\":\"Total Customers\",\"views.customersManage.successCreating\":\"Customer has been successfully created. These rules will be applied during the next import at the end of the day.\",\"views.customersManage.errorDeleting\":\"There was an error deleting this virtual tag. Please refresh this page and try again.\",\"views.customersManage.currentperiodending\":\"Reporting Period\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"deleteCopyCard.title\":\"Delete Copy\",\"deleteCopyCard.subtitle\":\"Warning: This process is irreversible! The copy cloud connection data will be deleted permanently and you will need to re-copy your account if you want to see your data again.\",\"dialogCloudAccount.copyCloudAccount\":\"Share Cloud Connection\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"cloudAccountDialog.cloudAccountNotFound\":\"We could not find reference to this cloud connection within this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogCloudAccount.title\":\"Cloud Connection\",\"views.dialogCloudAccount.tabs.usage\":\"Usage\",\"views.dialogCloudAccount.tabs.trends\":\"Trends\",\"views.dialogCloudAccount.tabs.virtualtags\":\"Virtual Tags\",\"views.dialogCloudAccount.tabs.copies\":\"Sharing\",\"views.dialogCloudAccount.tabs.carbon\":\"Emissions\",\"views.dialogCloudAccount.tabs.annotations\":\"Annotations\",\"views.dialogCloudAccount.accountType\":\"{type} Account\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"virtualTags.sourceDescription\":\"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\"virtualTags.errorCreating\":\"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\"virtualTags.successCreating\":\"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\"virtualTags.errorDeleting\":\"There was an error deleting this virtual tag. Please refresh this page and try again.\",\"virtualTags.successDeleting\":\"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"cloudProviderDialog.cloudProviderNotFound\":\"There is no remaining reference to this cloudProvider within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogCloudProvider.tabs.usage\":\"Usage\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customViewDialog.customViewNotFound\":\"We could not find reference to this cloud connection within this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogCustomView.title\":\"Custom View\",\"views.dialogCustomView.tabs.usage\":\"Usage\",\"views.dialogCustomView.accountType\":\"{type} Account\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"geographyDialog.geographyNotFound\":\"There is no remaining reference to this geography within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogGeography.tabs.usage\":\"Usage\",\"views.dialogGeography.tabs.carbon\":\"Emissions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"productCategoryDialog.productCategoryNotFound\":\"There is no remaining reference to this productCategory within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogProductCategory.tabs.usage\":\"Usage\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"productDialog.productNotFound\":\"There is no remaining reference to this product within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogProduct.tabs.usage\":\"Usage\",\"views.dialogProduct.tabs.carbon\":\"Emissions\",\"views.dialogProduct.tabs.trends\":\"Trends\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionDialog.regionNotFound\":\"There is no remaining reference to this region within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogRegion.tabs.usage\":\"Usage\",\"views.dialogRegion.tabs.carbon\":\"Emissions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"reservationDialog.reservationsNotFound\":\"There is no reference to this reservation currently. This may happen in rare circumstances, please check back in a few minutes.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogReservation.tabs.usage\":\"Usage\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"servicesDialog.serviceNotFound\":\"There is no remaining reference to this service within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogService.tabs.usage\":\"Usage\",\"views.dialogService.tabs.carbon\":\"Emissions\",\"views.dialogService.tabs.tags\":\"Record Tags\",\"views.dialogService.tabs.virtualtags\":\"Virtual Tags\",\"views.dialogService.tabs.annotations\":\"Annotations\",\"views.dialogService.tabs.raw\":\"Raw Data\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"serviceDialog.tags.sourceDescription\":\"The tags visible here are sourced from the last 60 days of usage records for this service. To update the tags of this service, please tag the corresponding resource in the source cloud provider. We recommend utilizing resource policies where appropriate to speed this up.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"serviceDialog.virtualTags.sourceDescription\":\"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\"serviceDialog.virtualTags.errorCreating\":\"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\"serviceDialog.virtualTags.successCreating\":\"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\"serviceDialog.virtualTags.errorDeleting\":\"There was an error deleting this virtual tag. Please refresh this page and try again.\",\"serviceDialog.virtualTags.successDeleting\":\"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"subscriptionsDialog.subscriptionNotFound\":\"There is no remaining reference to this subscription within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogSubscription.title\":\"Subscriptions\",\"views.dialogSubscription.tabs.usage\":\"Usage\",\"views.dialogSubscription.tabs.carbon\":\"Emissions\",\"views.dialogSubscription.tabs.trends\":\"Trends\",\"views.dialogSubscription.tabs.virtualtags\":\"Virtual Tags\",\"views.dialogSubscription.tabs.annotations\":\"Annotations\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"subscriptionDialog.virtualTags.sourceDescription\":\"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\"subscriptionDialog.virtualTags.errorCreating\":\"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\"subscriptionDialog.virtualTags.successCreating\":\"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\"subscriptionDialog.virtualTags.errorDeleting\":\"There was an error deleting this virtual tag. Please refresh this page and try again.\",\"subscriptionDialog.virtualTags.successDeleting\":\"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagDialog.tagNotFound\":\"There is no remaining reference to this tag within the last 13 months of usage.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dialogTag.tabs.usage\":\"Usage\",\"views.dialogTag.tabs.trends\":\"Trends\",\"views.dialogTag.tabs.carbon\":\"Emissions\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"dashboard.title\":\"Cost and Usage\",\"dashboard.accountOverview\":\"Account Overview\",\"dashboard.titles.projected\":\"Projected {thisMonthName}\",\"dashboard.titles.totalLastMonth\":\"Total {lastMonthName}\",\"dashboard.titles.potentialSavings\":\"Potential Monthly Savings\",\"dashboard.yearInReview\":\"Year in review\",\"dashboard.monthAverage\":\"{total} {currency} / Month Average\",\"dashboard.titles.creditsLastMonth\":\"Excludes {credits} of credits and discounts\",\"dashboard.usageByHeirarchy.title\":\"Usage by hierarchy\",\"dashboard.usageByHeirarchy.caption\":\"Aggregate spend across the tenant hierarchy over the last 3 months\",\"dashboard.lessThan\":\"{percentage}% less than {month}\",\"dashboard.moreThan\":\"{percentage}% more than {month}\",\"dashboard.recommendationStatus.loading\":\"Loading...\",\"dashboard.recommendationStatus.unknown\":\"Unknown status\",\"dashboard.recommendationStatus.unavailable\":\"Unavailable\",\"dashboard.recommendationStatus.allGood\":\"All good\",\"dashboard.recommendationStatus.partiallyGood\":\"New credentials required\",\"dashboard.recommendationStatus.actionRequired\":\"Connection broken\",\"dashboard.usageByHierarchy.manageHierarchy\":\"Manage hierarchy\",\"dialog.manageTenants.edit.title\":\"Update Tenant\",\"dialog.manageTenants.edit.subtitle\":\"Update the details of this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"gettingStarted.title\":\"Getting Started\",\"gettingStarted.AzureEa.top\":\"Azure\",\"gettingStarted.AzureEa.text\":\"Azure Enterprise Agreement\",\"gettingStarted.AzureEa.bottom\":\"For Azure subscriptions that have been provisioned through an enterprise agreement. Will require admin access to https://ea.azure.com\",\"gettingStarted.Azure.top\":\"Azure\",\"gettingStarted.Azure.text\":\"Azure Account\",\"gettingStarted.Azure.bottom\":\"For all Azure offer types with the exception of Enterprise Agreements (0136P) or Azure in CSP (0145P).\",\"gettingStarted.Amazon.top\":\"AWS\",\"gettingStarted.Amazon.text\":\"Amazon Web Services Account\",\"gettingStarted.Amazon.bottom\":\"For all AWS accounts, both Linked or otherwise. This will require access to an S3 bucket containing reports.\",\"gettingStarted.Google.top\":\"GCP\",\"gettingStarted.Google.text\":\"Google Cloud Platform Project\",\"gettingStarted.Google.bottom\":\"For all Google Cloud projects.\",\"gettingStarted.MicrosoftCsp.top\":\"Distributors\",\"gettingStarted.MicrosoftCsp.text\":\"Direct Azure CSP Connection\",\"gettingStarted.MicrosoftCsp.bottom\":\"For Azure CSPs with direct connections. Will require administrative permissions in https://partner.microsoft.com\",\"gettingStarted.Rhipe.top\":\"Distributors\",\"gettingStarted.Rhipe.text\":\"Rhipe\",\"gettingStarted.Rhipe.bottom\":\"For customers of https://www.rhipe.com. This will require API keys available from PRISM.\",\"gettingStarted.VmWare.top\":\"VmWare\",\"gettingStarted.VmWare.text\":\"VMWare vSphere\",\"gettingStarted.VmWare.bottom\":\"For customers to upload priced VMWare vSphere consumption.\",\"gettingStarted.Alibaba.top\":\"Alibaba\",\"gettingStarted.Alibaba.text\":\"Alibaba Cloud\",\"gettingStarted.Alibaba.bottom\":\"For all Alibaba cloud customers.\",\"gettingStarted.Oracle.top\":\"Oracle\",\"gettingStarted.Oracle.text\":\"Oracle Cloud\",\"gettingStarted.Oracle.bottom\":\"For all Oracle Cloud customers.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.gptChats.title\":\"Cloud Intelligence\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"dashboard.title\":\"Kubernetes Dashboard\",\"dashboard.filter.title\":\"Filter\",\"dashboard.filter.caption\":\"Currently viewing cluster spend from {fromDate} to {toDate}\",\"dashboard.clusters.nodata\":\"There is no cluster spend data in the selected date range\",\"dashboard.clusters.caption\":\"View the cost breakdown of the {cluster} cluster by utilisation, and namespace\",\"dashboard.clusterSpend.title\":\"Cost Breakdown\",\"dashboard.clusterSpend.caption\":\"The shared, utilised and unused costs of your {cluster} cluster\",\"dashboard.namespaces.title\":\"Namespaces\",\"dashboard.namespaces.caption\":\"The total spend of your {cluster} namespaces\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.mainView.loadingIndicator\":\"We are currently importing usage for this tenant.\",\"views.mainView.loadFailedText\":\"There was an error loading your tenant status. Please refresh to continue.\",\"views.mainView.invalidCredentialAlert\":\"Please check the following credential: \"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"notFound.title\":\"Whoops, 404\",\"notFound.message\":\"The page you were looking for does not exist\",\"notFound.back\":\"Get me out of here!\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"recommendationStatus.higherplan\":\"Some recommendations are not available on your current subscription\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customReport.title\":\"Custom Report - {reportName}\",\"customReport.failedToLoad\":\"There was an issue loading this custom report.\",\"customReport.backButtonText\":\"Back to reports\",\"customReport.editButtonText\":\"Edit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"customReports.title\":\"Custom Reports\",\"customReports.subtitle\":\"All reports created here are visible to all users within the tenant.\",\"customReports.failedToLoad\":\"There was an issue loading the custom reports.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.customerUsage.title\":\"Customers\",\"views.customerUsage.dateRangeFormat\":\"{startPeriodString} to {endPeriodString}\",\"views.customerUsage.cards.totalRevenue\":\"Total Revenue\",\"views.customerUsage.cards.totalCost\":\"Total Cost\",\"views.customerUsage.cards.totalProfit\":\"Total Profit\",\"views.customerUsage.cards.margin\":\"Margin\",\"views.customerUsage.cards.totalCustomers\":\"Total Customers\",\"views.customerUsage.exportFileName\":\"customers.csv\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"regionOverview.title\":\"Region Overview\",\"regionOverview.filterNumber\":\"Minimum Spend\",\"regionOverview.error.loadingRegions\":\"There was an issue loading your regions. If this problem persists please contact support.\",\"regionOverview.error.loadingRegionTotals\":\"There was an issue loading your region spend. If this problem persists please contact support.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"tagsOverview.title\":\"Tag Report\",\"tagsOverview.runReport\":\"Run Report\",\"tagsOverview.primaryTagKey\":\"Primary Tag Key\",\"tagsOverview.additionalTagKeys\":\"Additional Tag Key/s\",\"tagsOverview.dates.start\":\"Start date\",\"tagsOverview.dates.end\":\"End date\",\"tagsOverview.titles.reportFilters\":\"Report Filters\",\"tagsOverview.titles.totalSpend\":\"Total Spend By tag\",\"tagsOverview.export\":\"export\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"reservationsDashboard.title\":\"Reservations Dashboard\",\"reservationsDashboard.subtitle\":\"Reservations\",\"reservationsDashboard.caption\":\"Account Reservations available in the current scope.\",\"reservationsDashboard.exportBtnText\":\"Export CSV\",\"reservationsDashboard.headers.cloudProviderType\":\"Provider\",\"reservationsDashboard.headers.cloudAccountName\":\"Cloud Connection\",\"reservationsDashboard.headers.commitmentType\":\"Commitment Type\",\"reservationsDashboard.headers.commitmentId\":\"Commitment Id\",\"reservationsDashboard.headers.productName\":\"Product Name\",\"reservationsDashboard.headers.quantity\":\"Quantity\",\"reservationsDashboard.headers.region\":\"Region\",\"reservationsDashboard.headers.paymentOption\":\"Payment Option\",\"reservationsDashboard.headers.startDate\":\"Start Date\",\"reservationsDashboard.headers.thirtyDayUtil\":\"30day Utilisation\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"resourceExplorer.title\":\"Cost Explorer\",\"resourceExplorer.tabs.productcategories\":\"Product Categories\",\"resourceExplorer.tabs.resources\":\"Services\",\"resourceExplorer.tabs.subscriptions\":\"Subscriptions\",\"resourceExplorer.tabs.cloudproviders\":\"Cloud Providers\",\"resourceExplorer.tabs.cloudaccounts\":\"Cloud Connections\",\"resourceExplorer.tabs.products\":\"Products\",\"resourceExplorer.headers.productCategories\":\"Product Category\",\"resourceExplorer.headers.subscriptions\":\"Subscription Name\",\"resourceExplorer.headers.cloudAccounts\":\"Cloud Connection Name\",\"resourceExplorer.headers.products\":\"Product Name\",\"resourceExplorer.headers.services\":\"Service Name\",\"resourceExplorer.headers.tags\":\"Tag Value\",\"resourceExplorer.toast.navigationError\":\"Detailed information not yet available for this dimension\",\"resourceExplorer.rangeSelectedDialog.dialogTitle\":\"Range Information\",\"resourceExplorer.annotationDialog.dialogTitle\":\"Annotations\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.selfService.createTenant.logout\":\"Logout\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.alibaba.title\":\"Alibaba Cloud Connections\",\"settings.alibaba.subtitle\":\"All cloud connections importing Alibaba Cloud usage data in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.amazon.title\":\"AWS Cloud Connections\",\"settings.amazon.subtitle\":\"All cloud connections importing AWS usage data in this tenant.\",\"settings.amazon.editNew\":\"Edit Assume Role Credentials\",\"settings.amazon.editLegacy\":\"Edit IAM Access Key Credentials\",\"copy cloud connection\":\"Copy Cloud Connection\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"apiManagement.title\":\"Api Management\",\"apiManagement.subTitle\":\"API Keys\",\"apiManagement.caption\":\"The following API Key Management enables access to the public CloudCtrl API. You can find more information under the API documentation.\",\"apiManagement.createKey\":\"Create Key\",\"apiManagement.table.noData\":\"There are no keys configured yet\",\"apiManagement.table.referenceColumn\":\"Reference\",\"apiManagement.table.permissions\":\"Permissions\",\"apiManagement.table.creationDateColumn\":\"Creation Date\",\"apiManagement.table.createdByEmail\":\"Created By\",\"apiManagement.table.loading\":\"Loading API keys\",\"apiManagement.deleteDialog.title\":\"Delete API Key\",\"apiManagement.deleteDialog.subtitle\":\"This action is not reversable, you will need to generate a new key.\",\"apiManagement.deletedKeyToast\":\"Deleted the API Key\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"startdate\":\"Start Date\",\"eventtype\":\"Event Type\",\"environment\":\"Environment\",\"duration\":\"Duration (ms)\",\"status\":\"Status\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.azure.title\":\"Azure Cloud Connections\",\"settings.azure.subtitle\":\"All cloud connections importing Azure usage data in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"billingDetails.title\":\"Billing details\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.custom.title\":\"Custom Cloud Connections\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.dimensions.title\":\"Dimensions\",\"views.dimensions.caption\":\"Dimensions are elevated tag keys that are useful for tenants that have large datasets.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.manageTenants.title\":\"General Settings\",\"views.manageTenants.my.title\":\"General Settings\",\"views.manageTenants.my.caption\":\"Name, currency and other general settings for this tenant.\",\"views.manageTenants.edit.button\":\"Edit\",\"views.manageTenants.name\":\"Name\",\"views.manageTenants.tenantId\":\"Tenant ID\",\"views.manageTenants.display.currency\":\"Display Currency\",\"views.manageTenants.display.mpn\":\"Microsoft Partner Number\",\"views.manageTenants.edit.title\":\"Update Tenant\",\"views.manageTenants.edit.subtitle\":\"Update the details of this tenant. FX Rates will be applied on the underlying cloud currencies immediately.\",\"views.manageTenants.delete.button\":\"Delete\",\"views.manageTenants.delete.title\":\"Delete Tenant\",\"views.manageTenants.delete.subtitle\":\"Please consider this carefully before continuing, this action cannot be reversed. You will always be able to create a new tenant and re-import your usage but you will lose all custom tags, spend limits etc. forever.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.google.title\":\"Google Cloud Connections\",\"settings.google.subtitle\":\"All cloud connections importing GCP usage data in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.groups.title\":\"Groups\",\"settings.groups.subtitle\":\"Groups of users who can be invited to multiple tenants and inheret permissions granted to a group.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.title\":\"Settings\",\"settings.tabs.amazon\":\"Amazon\",\"settings.tabs.azure\":\"Azure\",\"settings.tabs.google\":\"Google\",\"settings.tabs.oracle\":\"Oracle\",\"settings.tabs.alibaba\":\"Alibaba\",\"settings.tabs.snowflake\":\"Snowflake\",\"settings.tabs.users\":\"Access Management\",\"settings.tabs.groups\":\"Groups\",\"settings.tabs.general\":\"General\",\"settings.tabs.billing\":\"Billing\",\"settings.tabs.apimanagement\":\"Api Keys\",\"settings.tabs.actions\":\"Actions\",\"settings.tabs.custom\":\"Custom\",\"settings.tabs.fxrates\":\"FX Rates\",\"settings.tabs.tagmappings\":\"Mapping Rules\",\"settings.tabs.mailinglists\":\"Mailing Lists\",\"settings.tabs.webhooks\":\"WebHooks\",\"settings.tabs.dimensions\":\"Dimensions\",\"settings.tabs.audit\":\"Audit\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.oracle.title\":\"Oracle Cloud Connections\",\"settings.oracle.subtitle\":\"All cloud connections importing OCI usage data in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"settings.snowflake.title\":\"Snowflake Cloud Connections\",\"settings.snowflake.subtitle\":\"All cloud connections importing Snowflake usage data in this tenant.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.users.title\":\"Access Management\",\"views.users.subtitle\":\"The users and groups that have some level of access of this tenant.\",\"users.inviteUserOrGroup\":\"Add User / Group\",\"users\":\"Users\",\"users.DeleteUserTitle\":\"Delete User\",\"users.DeleteUserSubtitle\":\"This user will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"views.webhooks.title\":\"Webhooks\",\"views.webhooks.url\":\"Url\",\"views.webhooks.lastcalled\":\"Last Called\",\"views.webhooks.enabled\":\"Enabled\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"trendsDashboard.titles.averageDaily\":\"Average Daily\",\"trendsDashboard.titles.sevenDayTrend\":\"7 Day Trend\",\"trendsDashboard.titles.thirtyDayTrend\":\"30 Day Trend\",\"trendsDashboard.titles.sixtyDayTrend\":\"60 Day Trend\",\"trendsDashboard.title\":\"Trends Dashboard\",\"trendsDashboard.title.asterix\":\"* Daily trend information based on last usage date of \",\"trendsDashboard.spendLimits.title\":\"Spend Limits\",\"trendsDashboard.spendLimits.caption\":\"The top 10 most at-risk spend limits\",\"trendsDashboard.trends.title\":\"Trends\",\"trendsDashboard.trends.caption\":\"The largest changes up or down in spend trends between two date ranges.\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"watchdogDashboard.title\":\"Watchdog\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"newPolicy.title\":\"Create Policy\",\"editPolicy.title\":\"Edit Policy\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"viewPolicy.title\":\"View Policy\"}}')\n delete Component.options._Ctor\n}\n","module.exports = function (Component) {\n Component.options.__i18n = Component.options.__i18n || []\n Component.options.__i18n.push('{\"en\":{\"viewPolicy.title\":\"View Policy\"}}')\n delete Component.options._Ctor\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":_vm.type,\"color\":_vm.color,\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form,\"block\":_vm.block,\"outlined\":_vm.outlined},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._t(\"default\",function(){return [_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"delete_forever\")]),_vm._v(\"Delete\")]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpDeleteButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpDeleteButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HttpDeleteButton.vue?vue&type=template&id=f008d23c&\"\nimport script from \"./HttpDeleteButton.vue?vue&type=script&lang=js&\"\nexport * from \"./HttpDeleteButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":_vm.type,\"color\":_vm.color,\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form,\"block\":_vm.block,\"outlined\":_vm.outlined},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._t(\"default\",function(){return [_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit\")]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPostButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPostButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HttpPostButton.vue?vue&type=template&id=33969e2e&\"\nimport script from \"./HttpPostButton.vue?vue&type=script&lang=js&\"\nexport * from \"./HttpPostButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-snackbar',{attrs:{\"color\":_vm.color,\"timeout\":_vm.timeout},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_vm._v(\" \"+_vm._s(_vm.text)+\" \"),_c('v-btn',{attrs:{\"dark\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.show = false}}},[_vm._v(\"Close\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport EventBus from \"@/lib/EventBus\";\r\n\r\nexport function toastError(data) {\r\n EventBus.$emit('$toast.error', data);\r\n}\r\n\r\nexport function toastSuccess(data) {\r\n EventBus.$emit('$toast.success', data);\r\n}\r\n\r\nexport function toastInfo(data) {\r\n EventBus.$emit('$toast.info', data);\r\n}\r\n\r\nexport default {\r\n data() {\r\n return {\r\n show: false,\r\n color: \"\",\r\n timeout: 4000,\r\n text: \"\"\r\n };\r\n },\r\n created() {\r\n EventBus.$on(\"$toast.error\", this.onError);\r\n EventBus.$on(\"$toast.success\", this.onSuccess);\r\n EventBus.$on(\"$toast.info\", this.onInfo);\r\n },\r\n destroyed() {\r\n EventBus.$off(\"$toast.error\", this.onError);\r\n EventBus.$off(\"$toast.success\", this.onSuccess);\r\n EventBus.$off(\"$toast.info\", this.onInfo);\r\n },\r\n methods: {\r\n render(text, color) {\r\n this.text = text;\r\n this.color = color;\r\n this.show = true;\r\n },\r\n onError(text) {\r\n this.render(text, \"error\");\r\n },\r\n onSuccess(text) {\r\n this.render(text, \"success\");\r\n },\r\n onInfo(text) {\r\n this.render(text, \"info\");\r\n }\r\n }\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Toast.vue?vue&type=template&id=5138bdce&\"\nimport script from \"./Toast.vue?vue&type=script&lang=ts&\"\nexport * from \"./Toast.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tabs',{attrs:{\"vertical\":\"\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab',{key:\"script\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"code\")]),_vm._v(\" Script \")],1),_c('v-tab',{key:\"test\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"science\")]),_vm._v(\" Test \")],1),_c('v-tab',{key:\"results\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done_all\")]),_vm._v(\" Result \")],1),_c('v-tab-item',[_c('v-alert',{staticClass:\"mb-2\",attrs:{\"type\":\"info\",\"text\":\"\"}},[_vm._v(\" For more information on scripts please refer to the \"),_c('a',{attrs:{\"href\":`${_vm.docsUrl}/Setup/Actions/ImportUsageTransformation.html`,\"target\":\"_blank\"}},[_vm._v(\"documentation\")]),_vm._v(\". \")]),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"block\":\"\"},on:{\"click\":_vm.runTest}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Run Test \")],1),_c('MonacoEditor',{attrs:{\"height\":\"500\",\"theme\":\"vs-dark\",\"value\":_vm.value,\"options\":_vm.scriptOptions},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})],1),_c('v-tab-item',[_c('v-btn',{staticClass:\"mb-2\",attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"block\":\"\"},on:{\"click\":_vm.runTest}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Run Test \")],1),_c('MonacoEditor',{attrs:{\"height\":\"500\",\"theme\":\"vs-dark\",\"options\":_vm.testJsonOptions},model:{value:(_vm.testJson),callback:function ($$v) {_vm.testJson=$$v},expression:\"testJson\"}})],1),_c('v-tab-item',[_c('MonacoEditor',{attrs:{\"height\":\"500\",\"theme\":\"vs-dark\",\"options\":_vm.resultOptions},model:{value:(_vm.resultJson),callback:function ($$v) {_vm.resultJson=$$v},expression:\"resultJson\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"monaco-editor-container\",style:(this.style)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nfunction noop() {}\r\n\r\nexport { monaco };\r\n\r\nexport default {\r\n name: 'MonacoEditor',\r\n props: {\r\n diffEditor: { type: Boolean, default: false },\r\n width: { type: [String, Number], default: '100%' },\r\n height: { type: [String, Number], default: '100%' },\r\n original: String, // Only valid in diff mode\r\n value: String,\r\n language: { type: String, default: 'javascript' },\r\n theme: { type: String, default: 'vs' },\r\n options: {\r\n type: Object,\r\n default() {\r\n return {};\r\n },\r\n },\r\n editorMounted: { type: Function, default: noop },\r\n editorBeforeMount: { type: Function, default: noop },\r\n },\r\n\r\n watch: {\r\n options: {\r\n deep: true,\r\n handler(options) {\r\n this.editor && this.editor.updateOptions(options);\r\n },\r\n },\r\n\r\n value() {\r\n this.editor && this.value !== this._getValue() && this._setValue(this.value);\r\n },\r\n\r\n language() {\r\n if (!this.editor) return;\r\n if (this.diffEditor) {\r\n const { original, modified } = this.editor.getModel();\r\n monaco.editor.setModelLanguage(original, this.language);\r\n monaco.editor.setModelLanguage(modified, this.language);\r\n } else monaco.editor.setModelLanguage(this.editor.getModel(), this.language);\r\n },\r\n\r\n theme() {\r\n this.editor && monaco.editor.setTheme(this.theme);\r\n },\r\n\r\n style() {\r\n this.editor &&\r\n this.$nextTick(() => {\r\n this.editor.layout();\r\n });\r\n },\r\n },\r\n\r\n computed: {\r\n style() {\r\n return {\r\n width: !/^\\d+$/.test(this.width) ? this.width : `${this.width}px`,\r\n height: !/^\\d+$/.test(this.height) ? this.height : `${this.height}px`,\r\n };\r\n },\r\n },\r\n\r\n mounted() {\r\n this.initMonaco();\r\n },\r\n\r\n beforeDestroy() {\r\n this.editor && this.editor.dispose();\r\n },\r\n\r\n methods: {\r\n initMonaco() {\r\n const { value, language, theme, options } = this;\r\n Object.assign(options, this._editorBeforeMount());\r\n this.editor = monaco.editor[this.diffEditor ? 'createDiffEditor' : 'create'](this.$el, {\r\n value: value,\r\n language: language,\r\n theme: theme,\r\n ...options,\r\n });\r\n this.diffEditor && this._setModel(this.value, this.original);\r\n this._editorMounted(this.editor);\r\n },\r\n\r\n _getEditor() {\r\n if (!this.editor) return null;\r\n return this.diffEditor ? this.editor.modifiedEditor : this.editor;\r\n },\r\n\r\n _setModel(value, original) {\r\n // Set model in diff mode\r\n const { language } = this;\r\n const originalModel = monaco.editor.createModel(original, language);\r\n const modifiedModel = monaco.editor.createModel(value, language);\r\n this.editor.setModel({\r\n original: originalModel,\r\n modified: modifiedModel,\r\n });\r\n },\r\n\r\n _setValue(value) {\r\n const editor = this._getEditor();\r\n if (editor) return editor.setValue(value);\r\n },\r\n\r\n _getValue() {\r\n const editor = this._getEditor();\r\n if (!editor) return '';\r\n return editor.getValue();\r\n },\r\n\r\n _editorBeforeMount() {\r\n const options = this.editorBeforeMount(monaco);\r\n return options || {};\r\n },\r\n\r\n _editorMounted(editor) {\r\n this.editorMounted(editor, monaco);\r\n if (this.diffEditor) {\r\n editor.onDidUpdateDiff((event) => {\r\n const value = this._getValue();\r\n this._emitChange(value, event);\r\n });\r\n } else {\r\n editor.onDidChangeModelContent((event) => {\r\n const value = this._getValue();\r\n this._emitChange(value, event);\r\n });\r\n }\r\n },\r\n\r\n _emitChange(value, event) {\r\n this.$emit('change', value, event);\r\n this.$emit('input', value);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MonacoEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MonacoEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonacoEditor.vue?vue&type=template&id=50ac919c&\"\nimport script from \"./MonacoEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonacoEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from 'vue';\r\nimport MonacoEditor from '../Common/MonacoEditor.vue';\r\nimport Config from '@/lib/Config';\r\nimport * as vm from \"@/lib/vm\";\r\n\r\nexport const DEFAULT_SCRIPT_TEXT = `module.exports = {\r\n beforeTransform(ctx, cb) {\r\n var error = null;\r\n cb(error);\r\n },\r\n transformRecord(record, ctx, cb) {\r\n var error = null;\r\n cb(error, record);\r\n },\r\n afterTransform(ctx, cb) {\r\n var error = null;\r\n var newRecords = [];\r\n cb(error, newRecords);\r\n }\r\n};`;\r\n\r\nconst DEFAULT_SCRIPT_TEST_JSON = `module.exports = {\r\n records: [\r\n {\r\n cost: 10,\r\n chargeDate: new Date(),\r\n currencyCode: 'USD',\r\n metaData: new Map(),\r\n meterId: 'test-meter-123',\r\n meterName: 'Test Meter 123',\r\n productName: 'Test Product',\r\n regionName: 'Test Region 123',\r\n serviceId: 'test-svc-123',\r\n serviceName: 'Test Service 123',\r\n serviceTypes: [],\r\n sourceCost: 5,\r\n unit: 'Hrs Consumed',\r\n tags: new Map(),\r\n priceChannels: new Map(),\r\n unitsConsumed: 123\r\n }\r\n ],\r\n context: {\r\n sysTenantId: '6352f484-09dd-4b4b-9f95-b75bff11261c',\r\n sysCloudAccountId: '33177086-8318-478c-80b7-c4cf8ca44979',\r\n sysSubscriptionId: '83f8d689-f197-4281-85c4-a52f776cf5c7',\r\n subscriptionId: 'be7aefd7-9ea1-47f2-80f3-d9fa7407eeb8',\r\n subscriptionName: 'My BizSpark Plus',\r\n isCopy: false,\r\n importDate: 'Tue May 03 2022 18:50:27 GMT+1000 (Australian Eastern Standard Time)',\r\n uploadExpiryDate: 'Tue May 04 2022 18:50:27 GMT+1000 (Australian Eastern Standard Time)',\r\n allowedEditFields: undefined,\r\n filePartName: 'Primary',\r\n userData: {}\r\n }\r\n};`;\r\n\r\nexport const DEFAULT_VS_OPTIONS = {\r\n readonly: true,\r\n automaticLayout: true,\r\n language: 'javascript',\r\n};\r\n\r\nexport interface IPartialTransformContext {\r\n sysTenantId: string;\r\n sysCloudAccountId: string;\r\n sysSubscriptionId: string;\r\n subscriptionId: string;\r\n subscriptionName: string;\r\n isCopy: boolean;\r\n importDate: string;\r\n uploadExpiryDate: string;\r\n allowedEditFields?: string[];\r\n filePartName: string;\r\n}\r\n\r\nexport interface ITransformContext extends IPartialTransformContext {\r\n userData: { [key: string]: string };\r\n}\r\n\r\nexport interface ITestData {\r\n context: ITransformContext;\r\n records: IUsageRecord[];\r\n}\r\n\r\nexport interface IUsageRecord {\r\n chargeDate: Date;\r\n sourceCost: number;\r\n cost: number;\r\n priceChannels: Map;\r\n currencyCode: string;\r\n unit: string;\r\n unitsConsumed: number;\r\n meterId: string;\r\n meterName: string;\r\n serviceId: string;\r\n serviceName: string;\r\n serviceTypes: string[];\r\n regionName: string;\r\n productName: string;\r\n tags: Map;\r\n metaData: Map;\r\n}\r\n\r\nexport interface IScriptFactory {\r\n beforeTransform(ctx: ITransformContext, callback: (err: Error) => void): void;\r\n transformRecord(\r\n data: IUsageRecord,\r\n ctx: ITransformContext,\r\n callback: (err: Error, data: IUsageRecord) => void\r\n ): void;\r\n afterTransform(ctx: ITransformContext, callback: (err: Error, data: IUsageRecord[]) => void): void;\r\n}\r\n\r\nexport default defineComponent({\r\n props: { value: String },\r\n components: { MonacoEditor },\r\n setup(props) {\r\n const docsUrl = Config.get().DOCS_URL;\r\n const testJson = ref(DEFAULT_SCRIPT_TEST_JSON);\r\n const resultJson = ref('[]');\r\n const scriptOptions = { ...DEFAULT_VS_OPTIONS };\r\n const testJsonOptions = { ...DEFAULT_VS_OPTIONS };\r\n const resultOptions = { ...DEFAULT_VS_OPTIONS, readOnly: true };\r\n const activeTab = ref(0);\r\n const runTest = async () => {\r\n try {\r\n const inputs = vm.evaluate(testJson.value) as ITestData;\r\n const factory = vm.evaluate(props.value) as IScriptFactory;\r\n await new Promise((resolve, reject) => {\r\n factory.beforeTransform(inputs.context, (err) => {\r\n if (err) reject(err);\r\n else resolve();\r\n });\r\n });\r\n const newRecords = [];\r\n for (const record of inputs.records) {\r\n const newRecord = await new Promise((resolve, reject) => {\r\n factory.transformRecord(record, inputs.context, (err, data) => {\r\n if (err) reject(err);\r\n else resolve(data);\r\n });\r\n });\r\n newRecords.push(newRecord);\r\n }\r\n const lastly = await new Promise((resolve, reject) => {\r\n factory.afterTransform(inputs.context, (err, lastRecords) => {\r\n if (err) reject(err);\r\n else resolve(lastRecords);\r\n });\r\n });\r\n newRecords.push(...lastly);\r\n resultJson.value = JSON.stringify(newRecords, null, '\\t');\r\n } catch (err) {\r\n resultJson.value = '' + err;\r\n } finally {\r\n activeTab.value = 2;\r\n }\r\n };\r\n return {\r\n scriptOptions,\r\n testJson,\r\n testJsonOptions,\r\n resultJson,\r\n resultOptions,\r\n activeTab,\r\n docsUrl,\r\n runTest,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActionScriptInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ActionScriptInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ActionScriptInput.vue?vue&type=template&id=a1f3a124&\"\nimport script from \"./ActionScriptInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./ActionScriptInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.title || _vm.$t('domain.actions.createActionScriptCard.title'),\"subtitle\":_vm.subtitle || _vm.$t('domain.actions.createActionScriptCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(actionBindings){return [_vm._t(\"actions\",null,{\"loading\":_vm.loading,\"isValid\":_vm.isValid,\"formData\":_vm.formData},actionBindings)]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-radio-group',{attrs:{\"hide-details\":\"\",\"row\":\"\",\"label\":\"Flow Type\"},model:{value:(_vm.actionType),callback:function ($$v) {_vm.actionType=$$v},expression:\"actionType\"}},_vm._l((_vm.knownScriptTypes),function(ka){return _c('v-radio',{key:ka.id,attrs:{\"label\":ka.name,\"value\":ka.id,\"disabled\":ka.disabled}})}),1),_c('v-radio-group',{attrs:{\"row\":\"\",\"label\":\"Delivery Type\"},model:{value:(_vm.deliveryType),callback:function ($$v) {_vm.deliveryType=$$v},expression:\"deliveryType\"}},_vm._l((_vm.knownDeliveryTypes),function(ka){return _c('v-radio',{key:ka.id,attrs:{\"label\":ka.name,\"value\":ka.id,\"disabled\":ka.disabled}})}),1),_c('v-text-field',{attrs:{\"label\":_vm.$t('domain.actions.createActionScriptCard.actionName'),\"autofocus\":\"\"},model:{value:(_vm.actionName),callback:function ($$v) {_vm.actionName=$$v},expression:\"actionName\"}}),_c('action-script-input',{model:{value:(_vm.scriptText),callback:function ($$v) {_vm.scriptText=$$v},expression:\"scriptText\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport ActionScriptInput, { DEFAULT_SCRIPT_TEXT } from '@/components/Domain.Actions/ActionScriptInput.vue';\r\nexport const DEFAULT_SCRIPT_NAME = 'My New Usage Script';\r\n\r\nexport const KNOWN_SCRIPT_TYPES = [\r\n { id: 'ImportUsageTransformation', name: 'Usage Transform', disabled: false },\r\n { id: 'BillingTransformation', name: 'Billing Transform (Coming Soon)', disabled: true },\r\n];\r\n\r\nexport const KNOWN_DELIVERY_TYPES = [\r\n { id: 'Script', name: 'Script', disabled: false },\r\n { id: 'WebHook', name: 'Web Hook (Coming Soon)', disabled: true },\r\n];\r\n\r\nexport interface IPriceStreamViewModel {\r\n effectiveFrom:Date;\r\n effectiveTo: Date | null;\r\n \r\n}\r\n\r\nexport interface IFormData {\r\n actionType: string;\r\n deliveryType: string;\r\n\r\n // For Script Delivery Types\r\n actionName: string;\r\n scriptText: string;\r\n\r\n // Price Stream ID\r\n priceStreamRules: IPriceStreamViewModel[];\r\n}\r\n\r\nexport enum FlowType {\r\n importUsageTransformation = 'ImportUsageTransformation',\r\n}\r\n\r\nexport enum DeliveryType {\r\n script = 'Script',\r\n webHook = 'WebHook',\r\n priceStream = 'PriceStream',\r\n}\r\n\r\nexport default defineComponent({\r\n components: { ActionScriptInput },\r\n props: {\r\n loading: Boolean,\r\n init: Object,\r\n title: String,\r\n subtitle: String,\r\n },\r\n setup() {\r\n const isValid = ref(true);\r\n const scriptText = ref(DEFAULT_SCRIPT_TEXT);\r\n const knownScriptTypes = KNOWN_SCRIPT_TYPES;\r\n const knownDeliveryTypes = KNOWN_DELIVERY_TYPES;\r\n const actionType = ref(FlowType.importUsageTransformation);\r\n const deliveryType = ref(DeliveryType.script);\r\n const actionName = ref(DEFAULT_SCRIPT_NAME);\r\n const priceStreamRules = ref([]);\r\n\r\n return {\r\n isValid,\r\n knownScriptTypes,\r\n actionType,\r\n knownDeliveryTypes,\r\n deliveryType,\r\n actionName,\r\n scriptText,\r\n priceStreamRules,\r\n };\r\n },\r\n computed: {\r\n formData(): IFormData {\r\n return {\r\n scriptText: this.scriptText,\r\n actionName: this.actionName,\r\n actionType: this.actionType,\r\n deliveryType: this.deliveryType,\r\n priceStreamRules: this.priceStreamRules,\r\n };\r\n },\r\n },\r\n watch: {\r\n init: {\r\n handler(val) {\r\n this.actionType = val?.actionType || 'ImportUsageTransformation';\r\n this.actionName = val?.actionName || DEFAULT_SCRIPT_NAME;\r\n this.scriptText = val?.scriptText || DEFAULT_SCRIPT_TEXT;\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetActionScriptCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetActionScriptCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetActionScriptCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetActionScriptCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetActionScriptCard.vue?vue&type=template&id=448c0f90&\"\nimport script from \"./SetActionScriptCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetActionScriptCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetActionScriptCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import Config from '@/lib/Config';\r\nimport AuthClient from '@/lib/Auth';\r\nimport axios, { AxiosInstance } from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport Vue from 'vue';\r\n\r\nconst config = Config.get();\r\n\r\nexport class ApiV2Client {\r\n\r\n get anonymous(): AxiosInstance {\r\n const instance = axios.create({ baseURL: config.API_2_URL });\r\n axiosRetry(instance, { retryDelay: axiosRetry.exponentialDelay, retries: config.API_MAX_RETRY_COUNT });\r\n return instance;\r\n }\r\n\r\n get http(): AxiosInstance {\r\n const instance = axios.create({ baseURL: config.API_2_URL });\r\n\r\n axiosRetry(instance, { retryDelay: axiosRetry.exponentialDelay, retries: config.API_MAX_RETRY_COUNT });\r\n instance.interceptors.request.use(\r\n async cfg => {\r\n const token = await Vue.prototype.$auth.getTokenSilently();\r\n cfg.headers.Authorization = token ? `Bearer ${token}` : '';\r\n cfg.headers['X-Tenant-Id'] = AuthClient.tenantId ? AuthClient.tenantId : '';\r\n return cfg;\r\n },\r\n error => {\r\n Promise.reject(error);\r\n }\r\n );\r\n instance.interceptors.response.use(\r\n cfg => {\r\n return cfg;\r\n },\r\n error => {\r\n if (error.response && 401 === error.response.status) {\r\n AuthClient.tenantId = null;\r\n Vue.prototype.$auth.loginWithRedirect({});\r\n } else {\r\n return Promise.reject(error);\r\n }\r\n }\r\n );\r\n return instance;\r\n }\r\n}\r\n\r\nexport default new ApiV2Client();\r\n","import Vue from 'vue';\r\n\r\nexport class AuthClient {\r\n public get tenantId(): string {\r\n return localStorage.getItem('x-cc-tenantid') || null;\r\n }\r\n\r\n public set tenantId(val: string) {\r\n if (val) localStorage.setItem('x-cc-tenantid', val);\r\n else localStorage.removeItem('x-cc-tenantid');\r\n }\r\n\r\n public get isTenantSelected(): boolean {\r\n return !!this.tenantId;\r\n }\r\n\r\n public get isAuthenticated(): boolean {\r\n return !!Vue.prototype.$auth?.user?.email;\r\n }\r\n\r\n public get userEmail(): string {\r\n return Vue.prototype.$auth.user.email;\r\n }\r\n\r\n public get loading(): boolean {\r\n return Vue.prototype.$auth.loading;\r\n }\r\n}\r\n\r\nexport default new AuthClient();\r\n","export interface ICognitoClientOptions {\r\n UserPoolId: string;\r\n ClientId: string;\r\n CognitoUrl: string;\r\n AzureIDPName: string;\r\n}\r\n\r\nexport interface IConfig {\r\n APP_NAME: string;\r\n API_URL: string;\r\n API_2_URL: string;\r\n SUPPORTED_PARENTS: string;\r\n FEATURES: string[];\r\n APP_INSIGHTS_KEY: string;\r\n DEFAULT_THEME: any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n LOGOS: any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n SUPPORT_EMAIL: string;\r\n API_MAX_RETRY_COUNT: number;\r\n RESALE_PARTNER_ID: string;\r\n SIDENAV_ALWAYS_DARK: boolean;\r\n COGNITO_USERPOOLID: string;\r\n COGNITO_CLIENTID: string;\r\n COGNITO_DOMAIN: string;\r\n COGNITO_AZUREIDP: string;\r\n AUTH0_DOMAIN: string;\r\n AUTH0_CLIENTID: string;\r\n AUTH0_AUDIENCE: string;\r\n MSAL_CLIENTID: string;\r\n MSAL_AUTHORITY: string;\r\n DOCS_URL: string;\r\n AG_GRID_KEY: string;\r\n CHART_COLORS: string[];\r\n}\r\n\r\nexport class ConfigClient {\r\n public get(): IConfig {\r\n return (window as any).$cloudctrl.config as IConfig; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n\r\n public isFeatureEnabled(featureName: string): boolean {\r\n const config = this.get();\r\n return (config.FEATURES || []).includes(featureName);\r\n }\r\n\r\n public isSelfServiceEnabled(): boolean {\r\n return this.isFeatureEnabled('EnableSelfService');\r\n }\r\n\r\n public isChineseJurisdiction(): boolean {\r\n return this.isFeatureEnabled('ChineseJurisdictionalFeatures');\r\n }\r\n\r\n public isAnnotationEnabled(): boolean {\r\n return this.isFeatureEnabled('EnableAnnotations');\r\n }\r\n\r\n public isMainSite(): boolean {\r\n return document.domain === 'cloudctrl.com.au';\r\n }\r\n\r\n public isDeprecationNoticeEnabled(): boolean {\r\n return this.isFeatureEnabled('DeprecateTagReports');\r\n }\r\n\r\n public getCognitoCredentials(): ICognitoClientOptions {\r\n const config = this.get();\r\n return {\r\n UserPoolId: config.COGNITO_USERPOOLID,\r\n ClientId: config.COGNITO_CLIENTID,\r\n CognitoUrl: config.COGNITO_DOMAIN,\r\n AzureIDPName: config.COGNITO_AZUREIDP\r\n };\r\n }\r\n}\r\n\r\nexport default new ConfigClient();\r\n","import Vue from 'vue';\r\nconst eventBus = new Vue();\r\nexport default eventBus;\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('router-view',{on:{\"hideChinaFooter\":function($event){_vm.showChineseFooter = false}}}),_c('toast'),(_vm.showChineseFooter)?_c('v-footer',{attrs:{\"fixed\":\"\"}},[_c('div',{staticStyle:{\"width\":\"500px\",\"margin\":\"0 auto\"}},[_c('a',{staticStyle:{\"float\":\"left\",\"display\":\"inline\",\"margin-right\":\"1.5em\"},attrs:{\"href\":\"http://beian.miit.gov.cn\"}},[_vm._v(\"沪ICP备16016808号\")]),_c('a',{staticStyle:{\"display\":\"inline-block\",\"text-decoration\":\"none\",\"height\":\"20px\",\"float\":\"left\",\"line-height\":\"20px\"},attrs:{\"target\":\"_blank\",\"href\":\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010102006691\"}},[_c('img',{staticStyle:{\"float\":\"left\"},attrs:{\"src\":\"/images/备案编号图标.png\"}}),_c('p',{staticStyle:{\"float\":\"left\",\"height\":\"20px\",\"line-height\":\"20px\",\"margin\":\"0px 0px 0px 5px\",\"color\":\"#939393\"}},[_vm._v(\" 沪公网安备 31010102006691号 \")])])])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3bd9d370&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport Vuetify from \"vuetify/lib\";\r\nimport Config from \"@/lib/Config\";\r\n\r\nVue.use(Vuetify);\r\n\r\nconst theme = { ...Config.get().DEFAULT_THEME };\r\nconst customThemes = theme.customThemes || null;\r\ndelete theme.customThemes;\r\nconst darkThemePreference = localStorage.getItem(\"dark_theme\");\r\nif (darkThemePreference) {\r\n theme.dark = darkThemePreference === \"true\";\r\n} else if (window.matchMedia) {\r\n try {\r\n theme.dark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n } finally {\r\n // ignore browser compatibility issues\r\n }\r\n}\r\n\r\nif (customThemes) {\r\n for (const key in customThemes) {\r\n document.documentElement.style.setProperty(\r\n `--${key}`,\r\n customThemes[key],\r\n );\r\n }\r\n}\r\n\r\nexport default new Vuetify({\r\n theme,\r\n icons: {\r\n iconfont: \"md\",\r\n },\r\n});\r\n","import proj4 from 'proj4';\r\n\r\n// This is necessary because the highcharts map module does not support latitude / longitudes without this being introduced first.\r\n// This may caused issues if we move to an SSR model.\r\n\r\nif (typeof window !== 'undefined') {\r\n window.proj4 = window.proj4 || proj4;\r\n}\r\n\r\nexport default proj4;","export default {\r\n \"title\": \"World, Miller projection, medium resolution\", \"version\": \"1.1.2\", \"type\": \"FeatureCollection\", \"copyright\": \"Copyright (c) 2015 Highsoft AS, Based on data from Natural Earth\", \"copyrightShort\": \"Natural Earth\", \"copyrightUrl\": \"http://www.naturalearthdata.com\", \"crs\": { \"type\": \"name\", \"properties\": { \"name\": \"urn:ogc:def:crs:EPSG:54003\" } }, \"hc-transform\": { \"default\": { \"crs\": \"+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +datum=WGS84 +units=m +no_defs\", \"scale\": 1.72182781654e-05, \"jsonres\": 15.5, \"jsonmarginX\": -999, \"jsonmarginY\": 9851.0, \"xoffset\": -19495356.3693, \"yoffset\": 12635908.1982 } },\r\n \"features\": [{ \"type\": \"Feature\", \"id\": \"FO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.54, \"hc-key\": \"fo\", \"hc-a2\": \"FO\", \"name\": \"Faroe Islands\", \"labelrank\": \"6\", \"country-abbrev\": \"Faeroe Is.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"FRO\", \"iso-a2\": \"FO\", \"woe-id\": \"23424816\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3991, 8611], [4005, 8598], [4004, 8594], [3989, 8605], [3991, 8611]]] } }, { \"type\": \"Feature\", \"id\": \"UM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.58, \"hc-key\": \"um\", \"hc-a2\": \"UM\", \"name\": \"United States Minor Outlying Islands\", \"labelrank\": \"5\", \"country-abbrev\": \"U.S. MOI\", \"subregion\": \"Seven seas (open ocean)\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"UMI\", \"iso-a2\": \"UM\", \"woe-id\": \"28289407\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-605, 6652], [-606, 6652], [-606, 6652], [-606, 6652], [-605, 6652]]] } }, { \"type\": \"Feature\", \"id\": \"US\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.68, \"hc-middle-y\": 0.68, \"hc-key\": \"us\", \"hc-a2\": \"US\", \"name\": \"United States of America\", \"labelrank\": \"2\", \"country-abbrev\": \"U.S.A.\", \"subregion\": \"Northern America\", \"region-wb\": \"North America\", \"iso-a3\": \"USA\", \"iso-a2\": \"US\", \"woe-id\": \"23424977\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[556, 8034], [559, 8032], [549, 8036], [550, 8040], [556, 8034]]], [[[558, 8043], [561, 8042], [558, 8039], [553, 8040], [558, 8043]]], [[[265, 8289], [268, 8289], [267, 8283], [263, 8288], [265, 8289]]], [[[263, 8300], [267, 8295], [264, 8292], [261, 8294], [263, 8300]]], [[[255, 8300], [267, 8279], [253, 8290], [251, 8302], [255, 8300]]], [[[306, 8298], [305, 8293], [298, 8293], [300, 8304], [306, 8298]]], [[[249, 8306], [250, 8302], [245, 8301], [244, 8305], [249, 8306]]], [[[292, 8310], [298, 8305], [294, 8298], [291, 8308], [292, 8310]]], [[[238, 8311], [244, 8313], [244, 8308], [238, 8304], [238, 8311]]], [[[249, 8311], [248, 8310], [244, 8314], [249, 8314], [249, 8311]]], [[[232, 8330], [237, 8337], [249, 8340], [245, 8335], [232, 8330]]], [[[272, 8342], [284, 8338], [278, 8330], [268, 8336], [272, 8342]]], [[[268, 8353], [268, 8346], [255, 8348], [259, 8353], [268, 8353]]], [[[282, 8349], [285, 8339], [276, 8346], [276, 8355], [282, 8349]]], [[[261, 8368], [271, 8358], [264, 8355], [259, 8356], [261, 8368]]], [[[234, 8379], [258, 8373], [253, 8353], [237, 8353], [234, 8379]]], [[[181, 8386], [179, 8377], [173, 8376], [177, 8383], [181, 8386]]], [[[158, 8420], [155, 8412], [152, 8416], [154, 8423], [158, 8420]]], [[[1578, 8023], [1574, 8018], [1559, 8010], [1556, 8013], [1578, 8023]]], [[[1623, 7918], [1621, 7909], [1614, 7899], [1610, 7903], [1623, 7918]]], [[[1667, 7934], [1667, 7928], [1663, 7927], [1665, 7933], [1667, 7934]]], [[[1724, 7944], [1726, 7939], [1717, 7939], [1721, 7943], [1724, 7944]]], [[[224, 8331], [215, 8369], [227, 8371], [236, 8359], [224, 8331]]], [[[-726, 8256], [-740, 8233], [-777, 8227], [-811, 8206], [-792, 8230], [-757, 8230], [-757, 8246], [-726, 8256]]], [[[193, 8378], [186, 8400], [202, 8387], [208, 8341], [193, 8378]]], [[[183, 8412], [177, 8392], [156, 8412], [174, 8431], [183, 8412]]], [[[199, 8431], [221, 8424], [229, 8389], [214, 8393], [199, 8431]]], [[[-826, 8660], [-803, 8657], [-834, 8641], [-862, 8661], [-896, 8667], [-850, 8675], [-826, 8660]]], [[[553, 8054], [551, 8053], [551, 8054], [553, 8054]]], [[[1261, 7281], [1260, 7293], [1252, 7296], [1228, 7335], [1206, 7373], [1202, 7375], [1200, 7378], [1167, 7387], [1143, 7358], [1102, 7380], [1091, 7409], [1043, 7449], [993, 7449], [993, 7434], [908, 7434], [797, 7472], [799, 7479], [728, 7473], [722, 7492], [686, 7523], [648, 7524], [624, 7541], [571, 7629], [568, 7651], [532, 7689], [528, 7720], [512, 7742], [522, 7777], [507, 7826], [520, 7864], [527, 7925], [507, 8030], [563, 8020], [563, 8024], [573, 8014], [562, 8025], [562, 8026], [566, 8031], [562, 8027], [561, 8054], [1379, 8054], [1455, 8037], [1491, 8018], [1546, 8016], [1503, 7997], [1471, 7971], [1510, 7975], [1520, 7963], [1574, 7988], [1575, 7986], [1575, 7988], [1591, 7997], [1601, 7995], [1583, 7981], [1612, 7961], [1683, 7971], [1697, 7959], [1708, 7961], [1708, 7954], [1689, 7936], [1622, 7938], [1592, 7889], [1612, 7898], [1595, 7842], [1598, 7806], [1614, 7783], [1632, 7792], [1645, 7831], [1636, 7855], [1644, 7893], [1694, 7935], [1726, 7918], [1730, 7880], [1715, 7868], [1750, 7865], [1758, 7833], [1755, 7820], [1751, 7816], [1746, 7820], [1739, 7807], [1727, 7787], [1756, 7775], [1780, 7780], [1855, 7817], [1862, 7830], [1858, 7836], [1858, 7842], [1927, 7844], [1955, 7886], [1970, 7900], [1987, 7905], [1987, 7905], [2082, 7905], [2118, 7937], [2126, 7968], [2149, 7996], [2192, 7982], [2192, 7933], [2196, 7927], [2203, 7927], [2202, 7914], [2210, 7911], [2216, 7898], [2179, 7882], [2181, 7881], [2174, 7874], [2173, 7879], [2173, 7879], [2164, 7875], [2168, 7876], [2168, 7870], [2163, 7871], [2161, 7874], [2155, 7872], [2110, 7843], [2108, 7787], [2041, 7770], [2006, 7747], [2005, 7718], [1959, 7656], [1937, 7700], [1941, 7654], [1934, 7620], [1948, 7620], [1956, 7577], [1933, 7542], [1915, 7545], [1890, 7517], [1854, 7495], [1795, 7447], [1786, 7414], [1814, 7342], [1829, 7289], [1819, 7237], [1797, 7235], [1766, 7277], [1746, 7323], [1752, 7355], [1710, 7394], [1682, 7378], [1650, 7401], [1567, 7404], [1544, 7395], [1558, 7358], [1533, 7373], [1514, 7361], [1485, 7382], [1464, 7376], [1411, 7380], [1340, 7337], [1309, 7290], [1321, 7262], [1289, 7265], [1261, 7281]]], [[[247, 8324], [243, 8322], [239, 8327], [247, 8327], [248, 8327], [252, 8348], [288, 8301], [287, 8280], [261, 8307], [246, 8319], [247, 8324]]], [[[-425, 7092], [-433, 7100], [-433, 7100], [-426, 7097], [-425, 7092], [-425, 7092], [-425, 7092]]], [[[-425, 7092], [-390, 7060], [-422, 7047], [-425, 7092], [-425, 7092], [-425, 7092]]], [[[308, 8292], [307, 8287], [302, 8290], [308, 8292], [308, 8292], [308, 8292]]], [[[217, 8430], [220, 8427], [210, 8429], [210, 8433], [205, 8435], [148, 8429], [100, 8466], [54, 8486], [-34, 8511], [-77, 8513], [-132, 8528], [-131, 8544], [-185, 8544], [-179, 8506], [-229, 8506], [-240, 8492], [-304, 8469], [-282, 8489], [-303, 8495], [-289, 8538], [-261, 8553], [-264, 8566], [-317, 8528], [-328, 8503], [-369, 8479], [-346, 8459], [-377, 8422], [-432, 8396], [-465, 8356], [-478, 8363], [-510, 8328], [-540, 8328], [-589, 8308], [-615, 8286], [-687, 8268], [-679, 8288], [-643, 8297], [-585, 8332], [-551, 8327], [-555, 8346], [-513, 8369], [-478, 8400], [-458, 8457], [-516, 8437], [-555, 8465], [-597, 8443], [-595, 8484], [-613, 8511], [-651, 8497], [-693, 8522], [-709, 8506], [-741, 8500], [-765, 8515], [-713, 8520], [-680, 8544], [-726, 8574], [-715, 8598], [-667, 8655], [-644, 8644], [-615, 8663], [-568, 8678], [-587, 8710], [-579, 8735], [-637, 8709], [-728, 8718], [-784, 8772], [-702, 8808], [-655, 8816], [-653, 8790], [-599, 8787], [-594, 8837], [-655, 8842], [-667, 8867], [-741, 8904], [-729, 8932], [-673, 8934], [-637, 8959], [-638, 8973], [-601, 9009], [-570, 9009], [-534, 9034], [-486, 9036], [-450, 9061], [-399, 9052], [-370, 9033], [-317, 9037], [-306, 9015], [-225, 9020], [-162, 9000], [-87, 8990], [-49, 8997], [19, 8972], [20, 8520], [74, 8510], [120, 8473], [126, 8458], [158, 8488], [183, 8497], [199, 8475], [245, 8436], [292, 8359], [346, 8330], [346, 8304], [346, 8304], [319, 8284], [320, 8322], [316, 8323], [310, 8332], [305, 8326], [295, 8329], [287, 8349], [254, 8380], [220, 8428], [217, 8430]]], [[[-373, 8372], [-390, 8391], [-344, 8421], [-318, 8446], [-311, 8403], [-356, 8377], [-413, 8325], [-373, 8372]]], [[[-433, 7100], [-479, 7115], [-446, 7112], [-433, 7100], [-433, 7100]]], [[[308, 8292], [309, 8295], [309, 8292], [308, 8292], [308, 8292], [308, 8292]]]] } }, { \"type\": \"Feature\", \"id\": \"JP\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.66, \"hc-key\": \"jp\", \"hc-a2\": \"JP\", \"name\": \"Japan\", \"labelrank\": \"2\", \"country-abbrev\": \"Japan\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"JPN\", \"iso-a2\": \"JP\", \"woe-id\": \"23424856\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[8389, 7914], [8390, 7917], [8398, 7911], [8394, 7909], [8389, 7914]]], [[[8149, 7526], [8129, 7515], [8097, 7520], [8140, 7570], [8197, 7578], [8232, 7572], [8278, 7641], [8269, 7618], [8307, 7629], [8314, 7654], [8342, 7662], [8359, 7703], [8352, 7721], [8369, 7771], [8380, 7756], [8400, 7767], [8419, 7706], [8391, 7670], [8390, 7636], [8375, 7598], [8384, 7580], [8357, 7553], [8353, 7573], [8306, 7546], [8256, 7542], [8267, 7531], [8239, 7508], [8212, 7518], [8222, 7544], [8172, 7539], [8149, 7527], [8166, 7521], [8186, 7539], [8200, 7532], [8186, 7497], [8173, 7507], [8138, 7480], [8130, 7504], [8149, 7526]]], [[[8044, 7495], [8037, 7525], [8057, 7499], [8076, 7517], [8113, 7508], [8122, 7487], [8101, 7435], [8068, 7431], [8067, 7482], [8044, 7495]]], [[[8380, 7790], [8365, 7775], [8355, 7820], [8373, 7846], [8401, 7845], [8416, 7924], [8472, 7874], [8509, 7860], [8522, 7839], [8483, 7831], [8455, 7794], [8413, 7818], [8367, 7806], [8380, 7790]]]] } }, { \"type\": \"Feature\", \"id\": \"SC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.58, \"hc-middle-y\": 0.41, \"hc-key\": \"sc\", \"hc-a2\": \"SC\", \"name\": \"Seychelles\", \"labelrank\": \"6\", \"country-abbrev\": \"Syc.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SYC\", \"iso-a2\": \"SC\", \"woe-id\": \"23424941\", \"continent\": \"Seven seas (open ocean)\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5849, 6344], [5852, 6341], [5851, 6337], [5843, 6348], [5849, 6344]]] } }, { \"type\": \"Feature\", \"id\": \"IN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.34, \"hc-middle-y\": 0.43, \"hc-key\": \"in\", \"hc-a2\": \"IN\", \"name\": \"India\", \"labelrank\": \"2\", \"country-abbrev\": \"India\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"IND\", \"iso-a2\": \"IN\", \"woe-id\": \"23424848\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[6818, 7133], [6820, 7134], [6820, 7126], [6817, 7128], [6818, 7133]]], [[[6819, 7322], [6840, 7326], [6842, 7305], [6869, 7285], [6937, 7293], [6923, 7319], [6953, 7324], [7012, 7369], [7032, 7360], [7057, 7370], [7092, 7333], [7074, 7306], [7024, 7278], [7023, 7255], [6996, 7195], [6973, 7200], [6969, 7150], [6951, 7137], [6939, 7192], [6922, 7167], [6909, 7188], [6949, 7229], [6935, 7237], [6886, 7236], [6870, 7262], [6829, 7277], [6818, 7260], [6843, 7237], [6816, 7220], [6837, 7209], [6832, 7189], [6847, 7142], [6823, 7124], [6820, 7141], [6792, 7124], [6767, 7075], [6740, 7073], [6699, 7023], [6646, 6986], [6647, 6972], [6586, 6945], [6580, 6925], [6588, 6875], [6574, 6835], [6574, 6783], [6504, 6717], [6476, 6742], [6454, 6807], [6424, 6859], [6410, 6911], [6384, 6956], [6360, 7072], [6367, 7093], [6351, 7149], [6344, 7113], [6310, 7098], [6291, 7105], [6258, 7137], [6287, 7155], [6241, 7174], [6227, 7195], [6247, 7208], [6280, 7205], [6313, 7222], [6265, 7289], [6295, 7328], [6337, 7325], [6368, 7360], [6381, 7388], [6416, 7427], [6415, 7446], [6438, 7461], [6400, 7495], [6393, 7534], [6410, 7548], [6453, 7539], [6490, 7559], [6513, 7572], [6527, 7544], [6546, 7534], [6542, 7507], [6563, 7480], [6530, 7473], [6541, 7434], [6608, 7397], [6589, 7383], [6579, 7353], [6660, 7310], [6714, 7305], [6751, 7281], [6795, 7274], [6820, 7286], [6819, 7322]]]] } }, { \"type\": \"Feature\", \"id\": \"FR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.28, \"hc-middle-y\": 0.04, \"hc-key\": \"fr\", \"hc-a2\": \"FR\", \"name\": \"France\", \"labelrank\": \"2\", \"country-abbrev\": \"Fr.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"FRA\", \"iso-a2\": \"FR\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2537, 7972], [2531, 7971], [2530, 7983], [2533, 7975], [2537, 7972]]], [[[4485, 7820], [4477, 7774], [4465, 7781], [4462, 7817], [4485, 7820]]], [[[9164, 5848], [9155, 5806], [9109, 5833], [9082, 5858], [9076, 5879], [9141, 5830], [9164, 5848]]], [[[6256, 4904], [6297, 4899], [6285, 4876], [6245, 4876], [6256, 4904]]], [[[2331, 7017], [2334, 7019], [2334, 7016], [2331, 7017]]], [[[4427, 7861], [4426, 7860], [4425, 7859], [4424, 7860], [4423, 7858], [4385, 7835], [4321, 7852], [4294, 7830], [4298, 7812], [4279, 7808], [4263, 7812], [4262, 7812], [4262, 7812], [4255, 7814], [4255, 7818], [4246, 7818], [4203, 7821], [4151, 7846], [4160, 7853], [4173, 7943], [4145, 7980], [4120, 7997], [4065, 8019], [4064, 8038], [4112, 8049], [4124, 8036], [4163, 8041], [4147, 8082], [4197, 8065], [4210, 8081], [4250, 8101], [4251, 8127], [4279, 8135], [4327, 8092], [4376, 8075], [4381, 8071], [4392, 8072], [4447, 8053], [4429, 8001], [4386, 7963], [4389, 7952], [4391, 7955], [4393, 7956], [4405, 7957], [4405, 7947], [4412, 7939], [4400, 7909], [4427, 7861]]], [[[2596, 6636], [2603, 6648], [2632, 6639], [2670, 6598], [2632, 6543], [2583, 6547], [2601, 6581], [2587, 6623], [2596, 6636]]]] } }, { \"type\": \"Feature\", \"id\": \"FM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.52, \"hc-key\": \"fm\", \"hc-a2\": \"FM\", \"name\": \"Federated States of Micronesia\", \"labelrank\": \"6\", \"country-abbrev\": \"F.S.M.\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"FSM\", \"iso-a2\": \"FM\", \"woe-id\": \"23424815\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8899, 6684], [8902, 6683], [8902, 6679], [8899, 6679], [8899, 6684]]] } }, { \"type\": \"Feature\", \"id\": \"CN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.41, \"hc-middle-y\": 0.56, \"hc-key\": \"cn\", \"hc-a2\": \"CN\", \"name\": \"China\", \"labelrank\": \"2\", \"country-abbrev\": \"China\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"CHN\", \"iso-a2\": \"CN\", \"woe-id\": \"23424781\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7429, 7050], [7456, 7076], [7488, 7081], [7498, 7067], [7481, 7036], [7459, 7021], [7429, 7031], [7429, 7050]]], [[[6842, 7305], [6840, 7326], [6819, 7322], [6773, 7330], [6756, 7323], [6729, 7336], [6699, 7367], [6683, 7364], [6640, 7401], [6608, 7397], [6541, 7434], [6530, 7473], [6563, 7480], [6542, 7507], [6546, 7534], [6527, 7544], [6513, 7572], [6500, 7571], [6482, 7577], [6459, 7605], [6416, 7624], [6411, 7627], [6426, 7631], [6423, 7675], [6395, 7677], [6389, 7707], [6399, 7728], [6446, 7748], [6450, 7736], [6482, 7759], [6521, 7763], [6529, 7774], [6584, 7803], [6602, 7838], [6581, 7906], [6646, 7924], [6668, 7986], [6719, 7972], [6741, 7981], [6750, 8032], [6795, 8058], [6801, 8059], [6810, 8061], [6814, 8039], [6847, 8016], [6885, 8003], [6906, 7963], [6901, 7912], [6979, 7903], [7034, 7879], [7064, 7822], [7220, 7815], [7232, 7803], [7282, 7788], [7326, 7787], [7372, 7807], [7453, 7813], [7526, 7857], [7511, 7885], [7528, 7908], [7575, 7895], [7603, 7919], [7637, 7921], [7664, 7953], [7714, 7968], [7756, 7963], [7762, 7975], [7722, 8015], [7698, 8015], [7696, 8015], [7691, 8008], [7642, 8005], [7632, 8021], [7667, 8086], [7699, 8074], [7742, 8093], [7740, 8107], [7768, 8158], [7788, 8176], [7766, 8201], [7790, 8222], [7862, 8234], [7935, 8210], [8005, 8075], [8043, 8071], [8086, 8027], [8093, 8004], [8135, 8005], [8192, 8031], [8204, 8005], [8185, 7988], [8178, 7951], [8146, 7907], [8138, 7916], [8121, 7913], [8090, 7899], [8099, 7870], [8091, 7827], [8078, 7815], [8057, 7831], [8053, 7812], [8004, 7796], [8007, 7774], [7962, 7785], [7943, 7758], [7895, 7730], [7838, 7706], [7799, 7682], [7804, 7705], [7833, 7744], [7800, 7758], [7778, 7733], [7751, 7722], [7736, 7698], [7699, 7695], [7708, 7662], [7731, 7662], [7749, 7627], [7787, 7651], [7812, 7637], [7845, 7637], [7787, 7604], [7742, 7557], [7773, 7532], [7791, 7478], [7819, 7454], [7824, 7420], [7794, 7408], [7836, 7385], [7812, 7368], [7814, 7337], [7794, 7326], [7749, 7262], [7758, 7244], [7731, 7235], [7661, 7167], [7610, 7163], [7593, 7144], [7576, 7170], [7574, 7142], [7489, 7118], [7466, 7084], [7461, 7122], [7422, 7134], [7409, 7122], [7366, 7149], [7372, 7161], [7329, 7180], [7289, 7154], [7245, 7162], [7234, 7150], [7217, 7146], [7222, 7111], [7206, 7124], [7177, 7120], [7170, 7139], [7146, 7143], [7157, 7171], [7138, 7175], [7130, 7203], [7101, 7195], [7103, 7234], [7133, 7260], [7132, 7313], [7098, 7343], [7092, 7333], [7057, 7370], [7032, 7360], [7012, 7369], [6953, 7324], [6923, 7319], [6882, 7338], [6842, 7305]]]] } }, { \"type\": \"Feature\", \"id\": \"PT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.50, \"hc-key\": \"pt\", \"hc-a2\": \"PT\", \"name\": \"Portugal\", \"labelrank\": \"2\", \"country-abbrev\": \"Port.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"PRT\", \"iso-a2\": \"PT\", \"woe-id\": \"23424925\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3984, 7629], [3937, 7624], [3944, 7663], [3922, 7681], [3946, 7754], [3944, 7795], [4009, 7795], [4020, 7781], [3998, 7762], [3997, 7692], [3984, 7629]]] } }, { \"type\": \"Feature\", \"id\": \"SW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.86, \"hc-middle-y\": 0.57, \"hc-key\": \"sw\", \"hc-a2\": \"SW\", \"name\": \"Serranilla Bank\", \"labelrank\": \"5\", \"country-abbrev\": \"S.B.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"-99\", \"iso-a2\": \"SW\", \"woe-id\": \"-99\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1870, 6950], [1870, 6950], [1870, 6950], [1870, 6950]]] } }, { \"type\": \"Feature\", \"id\": \"SH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.51, \"hc-key\": \"sh\", \"hc-a2\": \"SH\", \"name\": \"Scarborough Reef\", \"labelrank\": \"6\", \"country-abbrev\": \"S.R.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"-99\", \"iso-a2\": \"SH\", \"woe-id\": \"-99\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7699, 6929], [7698, 6929], [7698, 6929], [7698, 6929], [7699, 6929]]] } }, { \"type\": \"Feature\", \"id\": \"BR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.34, \"hc-key\": \"br\", \"hc-a2\": \"BR\", \"name\": \"Brazil\", \"labelrank\": \"2\", \"country-abbrev\": \"Brazil\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"BRA\", \"iso-a2\": \"BR\", \"woe-id\": \"23424768\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2729, 6474], [2767, 6471], [2755, 6436], [2702, 6426], [2696, 6461], [2729, 6474]]], [[[2615, 5450], [2627, 5475], [2626, 5480], [2554, 5539], [2542, 5531], [2517, 5563], [2494, 5561], [2549, 5623], [2606, 5658], [2604, 5706], [2584, 5708], [2584, 5709], [2583, 5712], [2594, 5736], [2594, 5755], [2559, 5759], [2553, 5800], [2530, 5817], [2483, 5817], [2488, 5852], [2478, 5876], [2496, 5937], [2471, 5965], [2469, 5993], [2419, 5995], [2409, 6069], [2369, 6077], [2332, 6104], [2293, 6110], [2263, 6149], [2262, 6192], [2226, 6186], [2177, 6154], [2139, 6155], [2108, 6153], [2111, 6200], [2091, 6185], [2061, 6183], [2007, 6256], [2034, 6290], [2040, 6327], [2103, 6356], [2128, 6354], [2143, 6437], [2125, 6474], [2131, 6529], [2181, 6529], [2206, 6540], [2219, 6515], [2258, 6498], [2301, 6525], [2324, 6550], [2303, 6552], [2286, 6596], [2377, 6604], [2401, 6632], [2424, 6629], [2437, 6595], [2423, 6558], [2431, 6534], [2459, 6514], [2509, 6538], [2528, 6536], [2543, 6553], [2583, 6547], [2632, 6543], [2670, 6598], [2688, 6593], [2700, 6543], [2723, 6528], [2725, 6479], [2679, 6465], [2701, 6426], [2743, 6421], [2788, 6463], [2869, 6439], [2879, 6399], [2908, 6412], [2969, 6393], [3017, 6395], [3062, 6370], [3101, 6334], [3149, 6327], [3171, 6267], [3156, 6207], [3109, 6160], [3075, 6104], [3048, 6086], [3051, 6007], [3043, 5952], [3028, 5936], [3026, 5900], [2985, 5834], [2988, 5821], [2956, 5790], [2888, 5790], [2811, 5749], [2785, 5728], [2761, 5693], [2767, 5650], [2757, 5614], [2726, 5585], [2711, 5552], [2684, 5560], [2677, 5531], [2654, 5510], [2642, 5465], [2620, 5444], [2615, 5447], [2615, 5450]]]] } }, { \"type\": \"Feature\", \"id\": \"KI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.28, \"hc-middle-y\": 0.65, \"hc-key\": \"ki\", \"hc-a2\": \"KI\", \"name\": \"Kiribati\", \"labelrank\": \"6\", \"country-abbrev\": \"Kir.\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"KIR\", \"iso-a2\": \"KI\", \"woe-id\": \"23424867\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-468, 6538], [-465, 6533], [-460, 6529], [-467, 6531], [-468, 6538]]] } }, { \"type\": \"Feature\", \"id\": \"PH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.40, \"hc-middle-y\": 0.19, \"hc-key\": \"ph\", \"hc-a2\": \"PH\", \"name\": \"Philippines\", \"labelrank\": \"2\", \"country-abbrev\": \"Phil.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"PHL\", \"iso-a2\": \"PH\", \"woe-id\": \"23424934\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7894, 6825], [7915, 6827], [7892, 6850], [7919, 6851], [7934, 6808], [7915, 6812], [7907, 6784], [7894, 6825]]], [[[7758, 6817], [7762, 6844], [7775, 6837], [7758, 6817], [7758, 6817]]], [[[7753, 6809], [7752, 6810], [7758, 6817], [7758, 6817], [7758, 6816], [7753, 6809], [7753, 6809]]], [[[7823, 6787], [7825, 6841], [7859, 6818], [7853, 6800], [7886, 6812], [7884, 6786], [7855, 6746], [7836, 6770], [7842, 6795], [7823, 6787]]], [[[7891, 6697], [7867, 6709], [7840, 6706], [7823, 6668], [7827, 6707], [7866, 6736], [7880, 6720], [7907, 6747], [7929, 6745], [7929, 6776], [7953, 6740], [7962, 6694], [7951, 6678], [7937, 6696], [7925, 6676], [7925, 6643], [7891, 6661], [7891, 6697]]], [[[7896, 6884], [7885, 6826], [7867, 6840], [7859, 6878], [7840, 6893], [7842, 6869], [7816, 6893], [7801, 6877], [7817, 6862], [7802, 6841], [7776, 6880], [7796, 6881], [7767, 6918], [7760, 6966], [7777, 6959], [7775, 7002], [7801, 7048], [7798, 7035], [7834, 7023], [7840, 6987], [7831, 6962], [7812, 6952], [7817, 6900], [7839, 6905], [7896, 6884]]], [[[7753, 6809], [7757, 6790], [7686, 6729], [7752, 6809], [7753, 6809]]]] } }, { \"type\": \"Feature\", \"id\": \"MX\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.51, \"hc-middle-y\": 0.49, \"hc-key\": \"mx\", \"hc-a2\": \"MX\", \"name\": \"Mexico\", \"labelrank\": \"2\", \"country-abbrev\": \"Mex.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"MEX\", \"iso-a2\": \"MX\", \"woe-id\": \"23424900\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[1630, 7094], [1622, 7084], [1622, 7088], [1624, 7093], [1630, 7094]]], [[[1038, 7129], [1042, 7127], [1052, 7116], [1044, 7121], [1038, 7129]]], [[[881, 7216], [885, 7216], [889, 7212], [889, 7210], [881, 7216]]], [[[875, 7231], [874, 7226], [871, 7225], [874, 7232], [875, 7231]]], [[[786, 7330], [784, 7328], [781, 7330], [786, 7338], [786, 7330]]], [[[696, 7356], [694, 7355], [692, 7363], [695, 7361], [696, 7356]]], [[[864, 7349], [866, 7364], [874, 7359], [871, 7350], [864, 7349]]], [[[836, 7376], [845, 7368], [847, 7358], [833, 7372], [836, 7376]]], [[[1200, 7378], [1199, 7374], [1206, 7373], [1228, 7335], [1252, 7296], [1259, 7288], [1261, 7281], [1289, 7265], [1321, 7262], [1306, 7216], [1300, 7155], [1321, 7096], [1361, 7038], [1401, 7020], [1478, 7034], [1505, 7051], [1523, 7108], [1589, 7126], [1630, 7115], [1609, 7083], [1597, 7023], [1583, 7030], [1567, 7012], [1558, 7009], [1504, 7009], [1491, 6992], [1522, 6966], [1482, 6956], [1466, 6911], [1417, 6957], [1389, 6967], [1339, 6944], [1273, 6971], [1205, 6993], [1183, 7012], [1133, 7025], [1088, 7056], [1067, 7089], [1083, 7121], [1064, 7158], [989, 7239], [956, 7256], [956, 7286], [923, 7307], [876, 7358], [847, 7417], [849, 7428], [804, 7448], [801, 7397], [832, 7368], [924, 7228], [922, 7208], [946, 7205], [956, 7176], [943, 7165], [930, 7186], [876, 7228], [873, 7264], [834, 7285], [790, 7321], [816, 7325], [820, 7341], [771, 7383], [760, 7417], [728, 7473], [799, 7479], [797, 7472], [908, 7434], [993, 7434], [993, 7449], [1043, 7449], [1091, 7409], [1102, 7380], [1143, 7358], [1167, 7387], [1200, 7378]], [[1309, 7246], [1303, 7231], [1306, 7218], [1313, 7245], [1309, 7246]]]] } }, { \"type\": \"Feature\", \"id\": \"ES\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.76, \"hc-middle-y\": 0.27, \"hc-key\": \"es\", \"hc-a2\": \"ES\", \"name\": \"Spain\", \"labelrank\": \"2\", \"country-abbrev\": \"Sp.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ESP\", \"iso-a2\": \"ES\", \"woe-id\": \"23424950\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[3748, 7322], [3716, 7331], [3697, 7330], [3726, 7345], [3748, 7322]]], [[[4117, 7566], [4118, 7565], [4117, 7564], [4116, 7566], [4117, 7566]]], [[[4044, 7586], [4046, 7586], [4045, 7584], [4044, 7585], [4044, 7586]]], [[[4045, 7594], [4021, 7599], [4011, 7621], [3984, 7629], [3997, 7692], [3998, 7762], [4020, 7781], [4009, 7795], [3944, 7795], [3930, 7838], [3969, 7860], [3988, 7852], [4098, 7851], [4151, 7846], [4203, 7821], [4246, 7818], [4249, 7812], [4255, 7814], [4262, 7812], [4262, 7813], [4262, 7814], [4263, 7812], [4263, 7812], [4279, 7808], [4298, 7812], [4300, 7795], [4265, 7771], [4233, 7763], [4194, 7709], [4211, 7683], [4189, 7669], [4183, 7644], [4154, 7635], [4143, 7615], [4072, 7613], [4046, 7594], [4045, 7594]]]] } }, { \"type\": \"Feature\", \"id\": \"BU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.73, \"hc-key\": \"bu\", \"hc-a2\": \"BU\", \"name\": \"Bajo Nuevo Bank (Petrel Is.)\", \"labelrank\": \"8\", \"country-abbrev\": null, \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"-99\", \"iso-a2\": \"BU\", \"woe-id\": \"-99\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1830, 6948], [1830, 6948], [1830, 6948], [1830, 6948], [1830, 6948]]] } }, { \"type\": \"Feature\", \"id\": \"MV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.53, \"hc-key\": \"mv\", \"hc-a2\": \"MV\", \"name\": \"Maldives\", \"labelrank\": \"5\", \"country-abbrev\": \"Mald.\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"MDV\", \"iso-a2\": \"MV\", \"woe-id\": \"23424899\", \"continent\": \"Seven seas (open ocean)\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6382, 6647], [6390, 6636], [6380, 6637], [6384, 6642], [6382, 6647]]] } }, { \"type\": \"Feature\", \"id\": \"SP\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"sp\", \"hc-a2\": \"SP\", \"name\": \"Spratly Islands\", \"labelrank\": \"6\", \"country-abbrev\": \"Spratly Is.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"SPI\", \"iso-a2\": \"SP\", \"woe-id\": \"23424921\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7642, 6799], [7641, 6799], [7641, 6799], [7642, 6799], [7642, 6799]]] } }, { \"type\": \"Feature\", \"id\": \"GB\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.69, \"hc-middle-y\": 0.09, \"hc-key\": \"gb\", \"hc-a2\": \"GB\", \"name\": \"United Kingdom\", \"labelrank\": \"2\", \"country-abbrev\": \"U.K.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"GBR\", \"iso-a2\": \"GB\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4108, 8458], [4110, 8454], [4106, 8453], [4102, 8457], [4108, 8458]]], [[[4112, 8469], [4111, 8462], [4116, 8461], [4104, 8463], [4112, 8469]]], [[[4118, 8472], [4113, 8477], [4125, 8471], [4121, 8468], [4118, 8472]]], [[[4173, 8521], [4166, 8500], [4165, 8515], [4155, 8520], [4173, 8521]]], [[[4176, 8534], [4182, 8533], [4169, 8530], [4171, 8539], [4176, 8534]]], [[[4181, 8542], [4179, 8536], [4175, 8537], [4176, 8542], [4181, 8542]]], [[[1789, 7055], [1792, 7057], [1798, 7055], [1792, 7054], [1789, 7055]]], [[[2080, 7131], [2072, 7131], [2072, 7133], [2077, 7133], [2080, 7131]]], [[[2065, 7134], [2063, 7131], [2058, 7131], [2062, 7132], [2065, 7134]]], [[[3994, 8404], [3993, 8427], [4018, 8441], [4015, 8421], [3994, 8404]]], [[[2433, 4774], [2454, 4816], [2486, 4811], [2491, 4798], [2433, 4774]]], [[[5210, 7554], [5209, 7553], [5207, 7555], [5206, 7555], [5206, 7555], [5206, 7554], [5204, 7554], [5204, 7555], [5205, 7555], [5203, 7556], [5206, 7556], [5210, 7558], [5210, 7557], [5207, 7557], [5210, 7554]], [[5205, 7555], [5206, 7556], [5205, 7556], [5205, 7555]]], [[[4046, 7594], [4045, 7593], [4045, 7594], [4046, 7594]]], [[[5184, 7543], [5181, 7544], [5176, 7544], [5178, 7545], [5184, 7543]]], [[[3989, 8295], [4018, 8305], [4040, 8278], [4018, 8256], [3987, 8256], [3961, 8270], [3989, 8295]]], [[[4024, 8390], [4056, 8446], [4114, 8447], [4083, 8416], [4100, 8407], [4147, 8405], [4152, 8396], [4110, 8337], [4156, 8317], [4168, 8277], [4202, 8256], [4214, 8215], [4204, 8207], [4254, 8201], [4251, 8174], [4225, 8151], [4244, 8137], [4212, 8122], [4102, 8117], [4043, 8100], [4081, 8140], [4113, 8140], [4074, 8163], [4046, 8166], [4079, 8182], [4080, 8220], [4109, 8227], [4119, 8259], [4096, 8272], [4103, 8288], [4073, 8289], [4075, 8268], [4052, 8286], [4067, 8313], [4036, 8351], [4008, 8361], [4032, 8367], [4003, 8396], [4024, 8390]]]] } }, { \"type\": \"Feature\", \"id\": \"GR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.30, \"hc-middle-y\": 0.43, \"hc-key\": \"gr\", \"hc-a2\": \"GR\", \"name\": \"Greece\", \"labelrank\": \"3\", \"country-abbrev\": \"Greece\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"GRC\", \"iso-a2\": \"GR\", \"woe-id\": \"23424833\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4984, 7560], [4938, 7553], [4902, 7565], [4922, 7573], [4984, 7560]]], [[[5023, 7596], [5041, 7604], [5037, 7593], [5028, 7585], [5023, 7596]]], [[[5011, 7610], [5003, 7612], [5010, 7619], [5009, 7615], [5011, 7610]]], [[[5002, 7626], [5006, 7623], [5003, 7621], [5004, 7624], [5002, 7626]]], [[[4952, 7622], [4962, 7630], [4963, 7623], [4957, 7611], [4952, 7622]]], [[[4985, 7644], [4977, 7640], [4975, 7641], [4978, 7645], [4985, 7644]]], [[[5004, 7649], [5007, 7647], [4999, 7645], [4993, 7649], [5004, 7649]]], [[[4978, 7677], [4980, 7667], [4975, 7669], [4971, 7677], [4978, 7677]]], [[[4959, 7727], [4953, 7726], [4959, 7743], [4966, 7743], [4959, 7727]]], [[[4828, 7750], [4831, 7753], [4828, 7750], [4826, 7753], [4826, 7754], [4828, 7756], [4831, 7756], [4854, 7765], [4884, 7773], [4931, 7781], [4953, 7770], [4985, 7786], [4994, 7775], [4977, 7752], [4947, 7761], [4907, 7750], [4928, 7732], [4876, 7743], [4874, 7728], [4958, 7637], [4915, 7667], [4918, 7646], [4893, 7656], [4878, 7642], [4892, 7604], [4853, 7613], [4838, 7665], [4798, 7715], [4809, 7720], [4828, 7750]]], [[[4989, 7700], [4994, 7693], [4988, 7690], [4971, 7698], [4986, 7702], [4988, 7702], [4989, 7700]]]] } }, { \"type\": \"Feature\", \"id\": \"AS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.56, \"hc-middle-y\": 0.57, \"hc-key\": \"as\", \"hc-a2\": \"AS\", \"name\": \"American Samoa\", \"labelrank\": \"4\", \"country-abbrev\": \"Am. Samoa\", \"subregion\": \"Polynesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"ASM\", \"iso-a2\": \"AS\", \"woe-id\": \"23424746\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-859, 6056], [-861, 6055], [-863, 6052], [-866, 6054], [-859, 6056]]] } }, { \"type\": \"Feature\", \"id\": \"DK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.35, \"hc-middle-y\": 0.49, \"hc-key\": \"dk\", \"hc-a2\": \"DK\", \"name\": \"Denmark\", \"labelrank\": \"4\", \"country-abbrev\": \"Den.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"DNK\", \"iso-a2\": \"DK\", \"woe-id\": \"23424796\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4538, 8291], [4553, 8278], [4544, 8277], [4531, 8283], [4538, 8291]]], [[[4511, 8288], [4516, 8286], [4512, 8286], [4506, 8292], [4511, 8288]]], [[[4576, 8293], [4566, 8288], [4565, 8292], [4570, 8294], [4576, 8293]]], [[[4495, 8296], [4502, 8291], [4500, 8287], [4494, 8289], [4495, 8296]]], [[[4526, 8290], [4523, 8282], [4520, 8286], [4529, 8299], [4526, 8290]]], [[[4578, 8322], [4559, 8280], [4533, 8320], [4567, 8339], [4578, 8322]]], [[[4484, 8285], [4466, 8289], [4461, 8288], [4445, 8357], [4495, 8381], [4519, 8408], [4509, 8372], [4529, 8353], [4516, 8338], [4525, 8302], [4488, 8310], [4484, 8285]]]] } }, { \"type\": \"Feature\", \"id\": \"GL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.55, \"hc-middle-y\": 0.43, \"hc-key\": \"gl\", \"hc-a2\": \"GL\", \"name\": \"Greenland\", \"labelrank\": \"3\", \"country-abbrev\": \"Grlnd.\", \"subregion\": \"Northern America\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"GRL\", \"iso-a2\": \"GL\", \"woe-id\": \"23424828\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2633, 8910], [2635, 8908], [2628, 8905], [2624, 8909], [2633, 8910]]], [[[2656, 8923], [2628, 8916], [2630, 8920], [2642, 8923], [2656, 8923]]], [[[2582, 9011], [2574, 9011], [2571, 9017], [2578, 9015], [2582, 9011]]], [[[2616, 9047], [2602, 9051], [2613, 9062], [2620, 9051], [2616, 9047]]], [[[2570, 9117], [2557, 9108], [2553, 9113], [2571, 9121], [2570, 9117]]], [[[2552, 9143], [2545, 9137], [2535, 9139], [2543, 9143], [2552, 9143]]], [[[2572, 9145], [2556, 9131], [2554, 9142], [2564, 9145], [2572, 9145]]], [[[2544, 9188], [2558, 9180], [2554, 9179], [2539, 9188], [2544, 9188]]], [[[2534, 9206], [2543, 9205], [2524, 9203], [2524, 9209], [2534, 9206]]], [[[2528, 9242], [2510, 9242], [2496, 9242], [2521, 9246], [2528, 9242]]], [[[2139, 9366], [2126, 9367], [2127, 9369], [2140, 9370], [2139, 9366]]], [[[2061, 9422], [2086, 9417], [2076, 9414], [2052, 9419], [2061, 9422]]], [[[2100, 9424], [2119, 9418], [2095, 9418], [2088, 9423], [2100, 9424]]], [[[3690, 9588], [3655, 9569], [3628, 9580], [3678, 9596], [3690, 9588]]], [[[2218, 9636], [2228, 9632], [2222, 9631], [2218, 9632], [2218, 9636]]], [[[2683, 9729], [2658, 9730], [2626, 9738], [2637, 9753], [2683, 9729]]], [[[2610, 8952], [2619, 8961], [2572, 8975], [2577, 9002], [2623, 9002], [2661, 8980], [2657, 8963], [2610, 8952]]], [[[2631, 8765], [2626, 8765], [2626, 8768], [2627, 8768], [2624, 8771], [2612, 8811], [2652, 8832], [2603, 8840], [2627, 8897], [2686, 8916], [2696, 8975], [2677, 8989], [2606, 9011], [2584, 9029], [2647, 9028], [2701, 9008], [2677, 9040], [2647, 9058], [2641, 9054], [2628, 9056], [2632, 9066], [2636, 9065], [2631, 9068], [2667, 9078], [2637, 9080], [2624, 9074], [2617, 9080], [2629, 9081], [2633, 9081], [2599, 9084], [2603, 9068], [2563, 9065], [2545, 9082], [2553, 9091], [2548, 9094], [2555, 9096], [2557, 9095], [2575, 9114], [2584, 9146], [2568, 9153], [2570, 9153], [2556, 9159], [2555, 9158], [2552, 9159], [2564, 9178], [2541, 9192], [2552, 9207], [2530, 9217], [2538, 9235], [2510, 9267], [2478, 9276], [2463, 9295], [2469, 9316], [2398, 9342], [2320, 9355], [2304, 9341], [2239, 9349], [2231, 9329], [2173, 9337], [2137, 9356], [2186, 9374], [2115, 9382], [2087, 9394], [2100, 9406], [2175, 9418], [2222, 9417], [2237, 9433], [2150, 9423], [2141, 9438], [2088, 9443], [2041, 9468], [2050, 9491], [2146, 9510], [2185, 9528], [2246, 9530], [2279, 9557], [2274, 9591], [2214, 9594], [2202, 9613], [2271, 9643], [2281, 9658], [2335, 9675], [2378, 9663], [2400, 9695], [2380, 9712], [2465, 9738], [2588, 9757], [2615, 9738], [2608, 9698], [2633, 9733], [2679, 9723], [2736, 9726], [2703, 9741], [2687, 9767], [2750, 9763], [2839, 9733], [2864, 9715], [2891, 9719], [2870, 9733], [2876, 9737], [2813, 9756], [2770, 9788], [2788, 9777], [2829, 9779], [2885, 9759], [2877, 9738], [2906, 9760], [2846, 9787], [2988, 9787], [2850, 9794], [2814, 9801], [2838, 9810], [2865, 9802], [2879, 9816], [2954, 9821], [3022, 9818], [3052, 9816], [3056, 9835], [3114, 9844], [3240, 9851], [3294, 9849], [3443, 9826], [3430, 9819], [3292, 9814], [3167, 9796], [3259, 9803], [3311, 9813], [3391, 9808], [3456, 9816], [3478, 9796], [3532, 9789], [3571, 9776], [3538, 9755], [3318, 9740], [3231, 9719], [3264, 9718], [3380, 9734], [3473, 9729], [3471, 9714], [3423, 9702], [3421, 9689], [3499, 9712], [3516, 9732], [3569, 9736], [3573, 9695], [3518, 9653], [3552, 9660], [3651, 9717], [3698, 9699], [3735, 9718], [3791, 9716], [3847, 9704], [3866, 9691], [3808, 9660], [3772, 9658], [3780, 9644], [3746, 9634], [3698, 9635], [3735, 9618], [3716, 9605], [3647, 9598], [3600, 9582], [3634, 9570], [3623, 9548], [3641, 9533], [3613, 9524], [3628, 9503], [3597, 9514], [3572, 9475], [3569, 9450], [3634, 9453], [3630, 9441], [3674, 9435], [3630, 9427], [3586, 9435], [3597, 9418], [3660, 9407], [3648, 9365], [3653, 9329], [3637, 9361], [3647, 9379], [3595, 9391], [3559, 9373], [3560, 9348], [3612, 9348], [3630, 9296], [3689, 9274], [3657, 9271], [3629, 9229], [3573, 9218], [3594, 9181], [3565, 9184], [3542, 9170], [3492, 9190], [3428, 9169], [3444, 9165], [3441, 9166], [3478, 9180], [3514, 9160], [3554, 9151], [3554, 9138], [3524, 9143], [3553, 9127], [3532, 9126], [3545, 9106], [3481, 9133], [3477, 9146], [3501, 9146], [3476, 9150], [3457, 9159], [3441, 9150], [3476, 9123], [3536, 9094], [3520, 9084], [3557, 9059], [3567, 9020], [3511, 9014], [3484, 9049], [3437, 9076], [3445, 9055], [3375, 9038], [3366, 9011], [3394, 9014], [3371, 9014], [3383, 9030], [3452, 9049], [3453, 9026], [3427, 9015], [3407, 9015], [3376, 8996], [3394, 8990], [3453, 9013], [3505, 8997], [3540, 8997], [3514, 8972], [3489, 8966], [3424, 8922], [3372, 8915], [3332, 8897], [3254, 8889], [3215, 8864], [3216, 8851], [3176, 8805], [3124, 8778], [3080, 8766], [3076, 8798], [3061, 8771], [3013, 8760], [3032, 8753], [3009, 8738], [2992, 8708], [3002, 8677], [2953, 8623], [2939, 8546], [2915, 8528], [2921, 8504], [2888, 8501], [2857, 8515], [2855, 8534], [2781, 8544], [2749, 8569], [2741, 8603], [2711, 8619], [2716, 8640], [2679, 8665], [2683, 8709], [2658, 8696], [2660, 8737], [2631, 8765]]]] } }, { \"type\": \"Feature\", \"id\": \"GU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.44, \"hc-key\": \"gu\", \"hc-a2\": \"GU\", \"name\": \"Guam\", \"labelrank\": \"6\", \"country-abbrev\": \"Guam\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"GUM\", \"iso-a2\": \"GU\", \"woe-id\": \"23424832\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8501, 6877], [8498, 6871], [8496, 6877], [8503, 6884], [8501, 6877]]] } }, { \"type\": \"Feature\", \"id\": \"MP\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.49, \"hc-key\": \"mp\", \"hc-a2\": \"MP\", \"name\": \"Northern Mariana Islands\", \"labelrank\": \"6\", \"country-abbrev\": \"N.M.I.\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"MNP\", \"iso-a2\": \"MP\", \"woe-id\": \"23424788\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8526, 6925], [8528, 6930], [8531, 6932], [8529, 6927], [8526, 6925]]] } }, { \"type\": \"Feature\", \"id\": \"PR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.65, \"hc-key\": \"pr\", \"hc-a2\": \"PR\", \"name\": \"Puerto Rico\", \"labelrank\": \"5\", \"country-abbrev\": \"P.R.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"PRI\", \"iso-a2\": \"PR\", \"woe-id\": \"23424935\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2267, 7024], [2239, 7013], [2212, 7014], [2213, 7031], [2267, 7024]]] } }, { \"type\": \"Feature\", \"id\": \"VI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.19, \"hc-key\": \"vi\", \"hc-a2\": \"VI\", \"name\": \"United States Virgin Islands\", \"labelrank\": \"6\", \"country-abbrev\": \"V.I. (U.S.)\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"VIR\", \"iso-a2\": \"VI\", \"woe-id\": \"23424985\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2283, 7008], [2288, 7008], [2278, 7005], [2279, 7008], [2283, 7008]]] } }, { \"type\": \"Feature\", \"id\": \"CA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.29, \"hc-middle-y\": 0.64, \"hc-key\": \"ca\", \"hc-a2\": \"CA\", \"name\": \"Canada\", \"labelrank\": \"2\", \"country-abbrev\": \"Can.\", \"subregion\": \"Northern America\", \"region-wb\": \"North America\", \"iso-a3\": \"CAN\", \"iso-a2\": \"CA\", \"woe-id\": \"23424775\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[1713, 9425], [1665, 9428], [1680, 9462], [1643, 9470], [1608, 9466], [1608, 9487], [1634, 9510], [1674, 9517], [1735, 9510], [1777, 9514], [1703, 9520], [1681, 9564], [1638, 9573], [1639, 9612], [1717, 9607], [1765, 9581], [1781, 9562], [1787, 9587], [1735, 9612], [1889, 9631], [1831, 9632], [1931, 9652], [1841, 9647], [1743, 9627], [1715, 9642], [1699, 9625], [1630, 9631], [1649, 9658], [1614, 9633], [1551, 9650], [1631, 9659], [1637, 9668], [1538, 9660], [1523, 9671], [1581, 9700], [1519, 9685], [1545, 9704], [1475, 9704], [1503, 9719], [1590, 9738], [1689, 9729], [1630, 9740], [1671, 9751], [1659, 9764], [1742, 9752], [1829, 9728], [1749, 9758], [1768, 9779], [1812, 9771], [1783, 9788], [1833, 9786], [1825, 9799], [1915, 9793], [1945, 9807], [2002, 9803], [2013, 9793], [2038, 9809], [2136, 9812], [2138, 9803], [2235, 9795], [2168, 9776], [2203, 9778], [2284, 9797], [2337, 9767], [2377, 9766], [2384, 9744], [2294, 9710], [2264, 9713], [2226, 9694], [2125, 9670], [2289, 9698], [2178, 9642], [2107, 9600], [2083, 9572], [2026, 9575], [2032, 9559], [1951, 9546], [1907, 9553], [1909, 9541], [1994, 9538], [1993, 9525], [1945, 9531], [1892, 9527], [1955, 9522], [1989, 9509], [1984, 9496], [1934, 9493], [1975, 9482], [1961, 9465], [1901, 9446], [1881, 9418], [1807, 9415], [1859, 9401], [1848, 9390], [1892, 9392], [1896, 9373], [1852, 9352], [1863, 9324], [1837, 9325], [1849, 9351], [1798, 9340], [1807, 9358], [1714, 9361], [1699, 9351], [1610, 9360], [1531, 9362], [1516, 9376], [1584, 9403], [1602, 9416], [1587, 9445], [1616, 9451], [1653, 9439], [1658, 9421], [1713, 9425]], [[1713, 9425], [1714, 9425], [1714, 9425], [1714, 9425], [1714, 9425], [1714, 9425], [1729, 9427], [1747, 9459], [1714, 9425], [1714, 9425], [1714, 9425], [1714, 9425], [1713, 9425]]], [[[1858, 7836], [1858, 7833], [1862, 7830], [1790, 7820], [1752, 7798], [1739, 7807], [1758, 7809], [1751, 7816], [1755, 7820], [1758, 7833], [1778, 7845], [1791, 7914], [1827, 7886], [1838, 7897], [1808, 7939], [1708, 7954], [1708, 7961], [1697, 7959], [1686, 8013], [1656, 8016], [1639, 8046], [1591, 8054], [1546, 8016], [1491, 8018], [1455, 8037], [1379, 8054], [561, 8054], [555, 8058], [553, 8054], [551, 8054], [545, 8069], [502, 8091], [506, 8102], [499, 8104], [501, 8103], [504, 8100], [499, 8097], [497, 8104], [488, 8106], [489, 8108], [486, 8110], [485, 8107], [476, 8108], [474, 8109], [464, 8111], [472, 8108], [471, 8108], [468, 8109], [472, 8107], [474, 8108], [480, 8106], [485, 8099], [485, 8098], [490, 8093], [490, 8093], [508, 8069], [539, 8044], [537, 8052], [544, 8047], [553, 8046], [540, 8044], [545, 8040], [537, 8028], [504, 8038], [448, 8070], [445, 8079], [446, 8079], [443, 8087], [443, 8087], [442, 8091], [411, 8096], [393, 8123], [409, 8127], [448, 8116], [450, 8117], [447, 8118], [456, 8118], [459, 8122], [456, 8125], [447, 8118], [412, 8138], [406, 8174], [401, 8161], [398, 8166], [401, 8173], [406, 8174], [406, 8175], [407, 8175], [409, 8178], [406, 8178], [405, 8179], [408, 8179], [407, 8183], [405, 8181], [402, 8201], [387, 8216], [379, 8197], [370, 8211], [371, 8215], [366, 8216], [366, 8220], [371, 8223], [371, 8217], [373, 8223], [384, 8218], [380, 8222], [387, 8253], [374, 8237], [381, 8240], [379, 8235], [373, 8232], [372, 8234], [366, 8227], [332, 8264], [346, 8293], [346, 8304], [346, 8330], [292, 8359], [245, 8436], [199, 8475], [183, 8497], [158, 8488], [126, 8458], [120, 8473], [74, 8510], [20, 8520], [19, 8972], [75, 8965], [132, 8936], [172, 8933], [173, 8954], [234, 8964], [250, 8959], [335, 9000], [361, 8992], [287, 8966], [261, 8941], [310, 8969], [318, 8952], [336, 8974], [431, 9004], [446, 8976], [481, 8955], [509, 8996], [512, 8957], [549, 8964], [555, 8982], [600, 8978], [635, 8959], [701, 8939], [762, 8928], [763, 8938], [815, 8916], [820, 8899], [792, 8901], [776, 8883], [825, 8871], [894, 8872], [929, 8885], [965, 8875], [975, 8854], [999, 8850], [1012, 8813], [1023, 8842], [999, 8872], [1069, 8919], [1010, 8895], [975, 8901], [991, 8919], [1064, 8932], [1078, 8905], [1103, 8888], [1137, 8887], [1191, 8870], [1215, 8879], [1285, 8876], [1309, 8866], [1275, 8905], [1318, 8911], [1331, 8888], [1358, 8902], [1341, 8860], [1375, 8831], [1371, 8890], [1389, 8888], [1427, 8930], [1396, 8925], [1405, 8962], [1349, 8984], [1339, 9009], [1342, 9061], [1378, 9097], [1396, 9099], [1380, 9098], [1381, 9125], [1363, 9145], [1363, 9192], [1377, 9214], [1424, 9223], [1466, 9213], [1527, 9207], [1478, 9147], [1462, 9139], [1410, 9143], [1430, 9125], [1411, 9101], [1398, 9100], [1438, 9070], [1443, 9037], [1487, 8999], [1448, 8975], [1480, 8964], [1520, 8932], [1525, 8899], [1543, 8940], [1565, 8950], [1594, 8924], [1580, 8901], [1607, 8842], [1655, 8889], [1662, 8924], [1690, 8940], [1667, 8953], [1666, 8979], [1701, 8983], [1715, 8980], [1715, 8982], [1725, 8979], [1723, 8978], [1752, 8972], [1790, 8948], [1776, 8934], [1792, 8919], [1751, 8910], [1793, 8859], [1785, 8836], [1730, 8804], [1700, 8835], [1720, 8796], [1674, 8800], [1668, 8815], [1628, 8808], [1656, 8794], [1611, 8754], [1595, 8754], [1542, 8784], [1562, 8753], [1621, 8749], [1593, 8699], [1561, 8687], [1534, 8698], [1528, 8674], [1504, 8670], [1505, 8669], [1514, 8666], [1512, 8664], [1511, 8666], [1505, 8669], [1514, 8645], [1453, 8618], [1404, 8545], [1390, 8504], [1401, 8450], [1439, 8451], [1460, 8395], [1454, 8374], [1503, 8387], [1566, 8370], [1605, 8336], [1693, 8303], [1761, 8295], [1767, 8244], [1762, 8210], [1837, 8137], [1874, 8185], [1860, 8212], [1855, 8257], [1837, 8278], [1896, 8304], [1928, 8336], [1934, 8367], [1917, 8417], [1872, 8446], [1910, 8497], [1884, 8545], [1903, 8573], [1885, 8610], [1905, 8624], [1985, 8603], [2018, 8619], [2077, 8581], [2073, 8567], [2145, 8542], [2132, 8530], [2143, 8458], [2163, 8459], [2196, 8424], [2251, 8456], [2259, 8494], [2279, 8522], [2293, 8517], [2299, 8495], [2302, 8500], [2305, 8496], [2301, 8493], [2299, 8495], [2303, 8480], [2323, 8475], [2336, 8445], [2383, 8381], [2366, 8360], [2429, 8297], [2504, 8272], [2482, 8261], [2509, 8241], [2548, 8229], [2554, 8180], [2513, 8148], [2465, 8139], [2429, 8106], [2372, 8097], [2354, 8104], [2232, 8103], [2205, 8067], [2155, 8046], [2129, 8008], [2086, 7969], [2038, 7949], [1987, 7905], [1970, 7900], [1955, 7886], [1860, 7863], [1837, 7844], [1858, 7842], [1858, 7838], [1858, 7836]], [[456, 8113], [455, 8114], [454, 8114], [456, 8113]], [[544, 8070], [543, 8075], [540, 8074], [540, 8071], [544, 8070]], [[424, 8181], [428, 8188], [413, 8181], [409, 8169], [424, 8181]], [[1315, 8873], [1309, 8871], [1310, 8867], [1315, 8870], [1315, 8873]], [[466, 8061], [471, 8060], [471, 8063], [469, 8063], [466, 8061]], [[463, 8065], [462, 8069], [458, 8069], [458, 8065], [463, 8065]]], [[[2286, 8678], [2286, 8639], [2268, 8632], [2229, 8643], [2201, 8663], [2198, 8647], [2247, 8606], [2237, 8590], [2170, 8608], [2139, 8627], [2076, 8651], [2080, 8670], [2048, 8683], [2024, 8719], [1988, 8708], [1954, 8719], [1928, 8699], [1894, 8707], [1885, 8735], [1906, 8760], [1956, 8748], [2002, 8763], [2024, 8760], [1994, 8794], [2039, 8823], [2062, 8850], [2038, 8899], [2013, 8904], [1964, 8939], [1930, 8922], [1930, 8939], [1961, 8950], [1899, 8982], [1899, 9001], [1861, 9008], [1866, 8984], [1778, 8998], [1766, 8979], [1644, 8997], [1572, 9016], [1546, 9050], [1612, 9042], [1590, 9056], [1539, 9063], [1530, 9095], [1546, 9144], [1564, 9172], [1599, 9197], [1631, 9204], [1678, 9202], [1631, 9145], [1640, 9100], [1686, 9060], [1667, 9114], [1696, 9106], [1661, 9135], [1676, 9169], [1746, 9198], [1785, 9197], [1822, 9141], [1805, 9098], [1835, 9128], [1862, 9100], [1876, 9132], [1901, 9142], [1972, 9127], [1970, 9106], [2001, 9104], [2000, 9085], [2036, 9059], [2053, 9080], [2094, 9059], [2066, 9049], [2064, 9043], [2072, 9048], [2082, 9041], [2103, 9051], [2091, 9022], [2129, 9038], [2175, 9022], [2212, 8976], [2191, 8974], [2194, 8971], [2188, 8967], [2194, 8966], [2201, 8970], [2207, 8967], [2198, 8965], [2209, 8962], [2222, 8945], [2194, 8940], [2183, 8927], [2180, 8928], [2174, 8928], [2182, 8926], [2175, 8917], [2219, 8908], [2228, 8897], [2231, 8899], [2238, 8899], [2237, 8895], [2228, 8896], [2237, 8885], [2276, 8889], [2307, 8851], [2310, 8851], [2317, 8853], [2324, 8851], [2323, 8851], [2334, 8850], [2324, 8830], [2364, 8838], [2380, 8805], [2348, 8798], [2346, 8770], [2315, 8760], [2319, 8733], [2288, 8742], [2220, 8813], [2190, 8809], [2212, 8787], [2187, 8765], [2258, 8726], [2254, 8713], [2286, 8689], [2286, 8685], [2286, 8685], [2287, 8680], [2292, 8674], [2286, 8678]], [[2063, 9038], [2061, 9032], [2070, 9036], [2065, 9034], [2063, 9038]], [[2187, 8974], [2164, 8972], [2177, 8969], [2187, 8974]]], [[[2096, 7974], [2093, 7974], [2100, 7980], [2101, 7977], [2096, 7974]]], [[[533, 8059], [538, 8053], [544, 8051], [538, 8052], [533, 8059]]], [[[2301, 8091], [2368, 8068], [2357, 8057], [2317, 8069], [2301, 8091]]], [[[495, 8094], [493, 8097], [495, 8100], [498, 8096], [495, 8094]]], [[[409, 8150], [403, 8151], [401, 8156], [405, 8160], [409, 8150]]], [[[1857, 8175], [1850, 8170], [1841, 8168], [1841, 8172], [1857, 8175]]], [[[316, 8175], [314, 8174], [313, 8171], [313, 8177], [316, 8175]]], [[[399, 8172], [397, 8175], [398, 8179], [401, 8179], [399, 8172]]], [[[397, 8181], [396, 8177], [390, 8177], [392, 8181], [397, 8181]]], [[[385, 8190], [387, 8184], [385, 8182], [383, 8189], [385, 8190]]], [[[390, 8195], [391, 8191], [390, 8189], [384, 8195], [390, 8195]]], [[[297, 8200], [302, 8200], [303, 8197], [299, 8195], [297, 8200]]], [[[394, 8186], [392, 8196], [394, 8203], [397, 8191], [394, 8186]]], [[[366, 8203], [377, 8196], [378, 8191], [372, 8194], [366, 8203]]], [[[398, 8196], [397, 8198], [396, 8202], [400, 8203], [398, 8196]]], [[[359, 8213], [360, 8209], [357, 8209], [354, 8216], [359, 8213]]], [[[363, 8217], [367, 8211], [364, 8211], [361, 8219], [363, 8217]]], [[[1788, 8220], [1797, 8219], [1809, 8199], [1769, 8212], [1788, 8220]]], [[[1834, 8218], [1836, 8216], [1832, 8215], [1833, 8218], [1834, 8218]]], [[[378, 8225], [372, 8224], [371, 8226], [376, 8233], [378, 8225]]], [[[329, 8230], [331, 8237], [350, 8227], [348, 8218], [329, 8230]]], [[[343, 8235], [336, 8236], [334, 8239], [340, 8242], [343, 8235]]], [[[353, 8238], [366, 8226], [359, 8220], [337, 8245], [353, 8238]]], [[[327, 8256], [336, 8254], [339, 8250], [328, 8243], [327, 8256]]], [[[314, 8276], [324, 8276], [326, 8266], [318, 8270], [314, 8276]]], [[[1852, 8288], [1842, 8285], [1840, 8286], [1859, 8290], [1852, 8288]]], [[[333, 8283], [332, 8285], [341, 8294], [338, 8286], [333, 8283]]], [[[1861, 8337], [1867, 8352], [1869, 8353], [1869, 8342], [1861, 8337]]], [[[1843, 8360], [1842, 8352], [1831, 8342], [1841, 8352], [1843, 8360]]], [[[1834, 8370], [1832, 8369], [1834, 8374], [1838, 8369], [1834, 8370]]], [[[2200, 8432], [2196, 8433], [2197, 8436], [2199, 8437], [2200, 8432]]], [[[2155, 8463], [2146, 8461], [2146, 8468], [2153, 8468], [2155, 8463]]], [[[1818, 8492], [1823, 8494], [1825, 8492], [1822, 8490], [1818, 8492]]], [[[1830, 8501], [1833, 8500], [1829, 8496], [1825, 8495], [1830, 8501]]], [[[2284, 8532], [2292, 8519], [2283, 8523], [2280, 8528], [2284, 8532]]], [[[2184, 8533], [2191, 8527], [2187, 8519], [2174, 8520], [2184, 8533]]], [[[1883, 8544], [1879, 8541], [1869, 8538], [1871, 8541], [1883, 8544]]], [[[2281, 8579], [2279, 8566], [2261, 8578], [2274, 8583], [2281, 8579]]], [[[2252, 8589], [2255, 8585], [2247, 8587], [2252, 8591], [2252, 8589]]], [[[1449, 8594], [1442, 8589], [1438, 8593], [1443, 8593], [1449, 8594]]], [[[2273, 8593], [2280, 8586], [2271, 8587], [2267, 8591], [2273, 8593]]], [[[1847, 8614], [1850, 8596], [1837, 8578], [1824, 8603], [1847, 8614]]], [[[1463, 8614], [1464, 8616], [1470, 8615], [1467, 8613], [1463, 8614]]], [[[2284, 8621], [2293, 8621], [2287, 8613], [2277, 8616], [2284, 8621]]], [[[1894, 8622], [1887, 8624], [1901, 8624], [1897, 8621], [1894, 8622]]], [[[2278, 8622], [2272, 8621], [2274, 8624], [2278, 8624], [2278, 8622]]], [[[1995, 8630], [2007, 8628], [2009, 8625], [1997, 8626], [1995, 8630]]], [[[2103, 8635], [2121, 8624], [2105, 8622], [2090, 8637], [2103, 8635]]], [[[1767, 8641], [1772, 8629], [1737, 8605], [1714, 8619], [1732, 8640], [1767, 8641]]], [[[2222, 8640], [2222, 8639], [2213, 8647], [2218, 8646], [2222, 8640]]], [[[1877, 8666], [1899, 8663], [1902, 8651], [1891, 8647], [1877, 8666]]], [[[2300, 8671], [2296, 8665], [2297, 8658], [2290, 8672], [2300, 8671]]], [[[1914, 8674], [1932, 8665], [1919, 8662], [1906, 8671], [1914, 8674]]], [[[2297, 8678], [2295, 8679], [2295, 8682], [2300, 8681], [2297, 8678]]], [[[1903, 8691], [1897, 8687], [1890, 8688], [1891, 8690], [1903, 8691]]], [[[2277, 8700], [2275, 8699], [2274, 8705], [2278, 8702], [2277, 8700]]], [[[2022, 8713], [2021, 8705], [2018, 8705], [2017, 8715], [2022, 8713]]], [[[2266, 8724], [2269, 8720], [2255, 8714], [2261, 8722], [2266, 8724]]], [[[2351, 8774], [2357, 8774], [2360, 8769], [2350, 8770], [2351, 8774]]], [[[1732, 8779], [1726, 8777], [1725, 8780], [1730, 8780], [1732, 8779]]], [[[1679, 8789], [1689, 8780], [1691, 8765], [1678, 8775], [1679, 8789]]], [[[1701, 8792], [1719, 8784], [1729, 8768], [1707, 8775], [1701, 8792]]], [[[1737, 8802], [1744, 8800], [1741, 8796], [1732, 8800], [1737, 8802]]], [[[2352, 8845], [2353, 8844], [2340, 8837], [2345, 8845], [2352, 8845]]], [[[1017, 8840], [1013, 8840], [1010, 8844], [1011, 8846], [1017, 8840]]], [[[1002, 8856], [1000, 8852], [995, 8857], [1002, 8860], [1002, 8856]]], [[[987, 8864], [990, 8864], [988, 8859], [984, 8863], [987, 8864]]], [[[2311, 8862], [2304, 8863], [2306, 8869], [2311, 8864], [2311, 8862]]], [[[1001, 8864], [995, 8864], [996, 8870], [999, 8869], [1001, 8864]]], [[[843, 8882], [837, 8883], [852, 8884], [852, 8882], [843, 8882]]], [[[997, 8881], [992, 8881], [993, 8884], [996, 8885], [997, 8881]]], [[[964, 8886], [973, 8884], [971, 8880], [965, 8883], [964, 8886]]], [[[959, 8889], [960, 8886], [955, 8889], [955, 8892], [959, 8889]]], [[[944, 8895], [952, 8898], [942, 8891], [932, 8889], [944, 8895]]], [[[2000, 8891], [2025, 8885], [2025, 8875], [1996, 8875], [2000, 8891]]], [[[1641, 8883], [1634, 8873], [1624, 8883], [1631, 8902], [1641, 8883]]], [[[890, 8898], [887, 8898], [889, 8902], [894, 8903], [890, 8898]]], [[[1961, 8903], [1974, 8899], [1976, 8864], [1952, 8849], [1919, 8848], [1909, 8872], [1928, 8900], [1961, 8903]]], [[[1859, 8896], [1854, 8898], [1855, 8904], [1865, 8901], [1859, 8896]]], [[[1767, 8905], [1771, 8904], [1768, 8902], [1763, 8905], [1767, 8905]]], [[[2003, 8899], [1996, 8909], [2001, 8909], [2005, 8904], [2003, 8899]]], [[[917, 8916], [917, 8914], [919, 8912], [907, 8911], [917, 8916]]], [[[1102, 8907], [1086, 8915], [1097, 8916], [1104, 8913], [1102, 8907]]], [[[1872, 8919], [1870, 8911], [1860, 8911], [1869, 8917], [1872, 8919]]], [[[1993, 8916], [1985, 8915], [1981, 8919], [1984, 8921], [1993, 8916]]], [[[1981, 8915], [1984, 8904], [1966, 8913], [1971, 8924], [1981, 8915]]], [[[1184, 8927], [1182, 8916], [1167, 8922], [1176, 8929], [1184, 8927]]], [[[1232, 8934], [1224, 8924], [1218, 8926], [1218, 8938], [1232, 8934]]], [[[1236, 8935], [1230, 8938], [1232, 8946], [1235, 8943], [1236, 8935]]], [[[166, 8945], [168, 8943], [161, 8944], [162, 8948], [166, 8945]]], [[[1187, 8943], [1188, 8950], [1191, 8949], [1190, 8944], [1187, 8943]]], [[[1516, 8957], [1520, 8950], [1516, 8949], [1513, 8957], [1516, 8957]]], [[[1876, 8959], [1876, 8950], [1864, 8933], [1847, 8934], [1876, 8959]]], [[[181, 8968], [186, 8972], [180, 8962], [173, 8964], [181, 8968]]], [[[1779, 8961], [1785, 8959], [1786, 8956], [1774, 8960], [1779, 8961]]], [[[1528, 8959], [1523, 8951], [1518, 8955], [1523, 8961], [1528, 8959]]], [[[1918, 8960], [1929, 8958], [1914, 8944], [1907, 8952], [1918, 8960]]], [[[1199, 8967], [1208, 8963], [1201, 8958], [1198, 8962], [1199, 8967]]], [[[1336, 8968], [1351, 8968], [1351, 8957], [1339, 8963], [1336, 8968]]], [[[1365, 8970], [1373, 8966], [1364, 8955], [1363, 8967], [1365, 8970]]], [[[83, 8969], [76, 8966], [71, 8969], [76, 8972], [83, 8969]]], [[[1890, 8974], [1874, 8964], [1864, 8965], [1881, 8977], [1890, 8974]]], [[[1840, 8981], [1844, 8971], [1807, 8973], [1823, 8980], [1840, 8981]]], [[[1756, 8978], [1754, 8977], [1746, 8979], [1751, 8982], [1756, 8978]]], [[[1479, 8982], [1481, 8985], [1489, 8981], [1487, 8976], [1479, 8982]]], [[[1315, 8986], [1312, 8986], [1311, 8988], [1315, 8988], [1315, 8986]]], [[[1622, 8997], [1634, 8997], [1629, 8989], [1611, 8996], [1622, 8997]]], [[[890, 9007], [877, 9007], [872, 9011], [884, 9008], [890, 9007]]], [[[748, 9020], [758, 9020], [744, 9016], [738, 9020], [748, 9020]]], [[[735, 9020], [725, 9020], [723, 9021], [725, 9023], [735, 9020]]], [[[403, 9024], [398, 9023], [395, 9020], [398, 9026], [403, 9024]]], [[[1216, 9028], [1222, 9027], [1230, 9016], [1217, 9020], [1216, 9028]]], [[[2033, 9068], [2043, 9069], [2038, 9062], [2030, 9064], [2033, 9068]]], [[[2046, 9075], [2038, 9075], [2040, 9080], [2045, 9081], [2046, 9075]]], [[[1100, 9174], [1080, 9147], [1043, 9179], [1041, 9196], [1083, 9199], [1100, 9174]]], [[[1106, 9352], [1117, 9374], [1155, 9352], [1166, 9333], [1127, 9326], [1106, 9352]]], [[[1524, 9434], [1544, 9415], [1530, 9407], [1498, 9420], [1524, 9434]]], [[[1088, 9420], [1104, 9404], [1081, 9404], [1056, 9441], [1088, 9420]]], [[[1664, 8007], [1660, 8006], [1654, 8006], [1656, 8009], [1664, 8007]]], [[[1600, 8048], [1604, 8045], [1593, 8045], [1594, 8049], [1600, 8048]]], [[[1763, 7943], [1772, 7941], [1776, 7924], [1734, 7937], [1763, 7943]]], [[[1732, 7940], [1731, 7937], [1726, 7938], [1728, 7941], [1732, 7940]]], [[[1710, 7953], [1718, 7950], [1713, 7944], [1709, 7949], [1710, 7953]]], [[[1938, 7875], [1934, 7873], [1936, 7876], [1943, 7877], [1938, 7875]]], [[[1366, 9443], [1437, 9441], [1429, 9423], [1355, 9424], [1366, 9443]]], [[[2430, 7942], [2394, 7922], [2378, 7943], [2406, 7980], [2411, 7952], [2430, 7942]]], [[[2364, 7988], [2365, 7958], [2348, 7940], [2327, 7957], [2361, 7959], [2364, 7988]]], [[[277, 8210], [270, 8217], [293, 8221], [295, 8199], [277, 8210]]], [[[257, 8259], [297, 8258], [287, 8221], [261, 8230], [257, 8259]]], [[[1844, 8337], [1829, 8330], [1851, 8362], [1858, 8352], [1844, 8337]]], [[[1395, 9317], [1429, 9288], [1426, 9252], [1382, 9254], [1337, 9272], [1349, 9299], [1395, 9317]]], [[[957, 9478], [905, 9483], [849, 9475], [844, 9483], [927, 9507], [955, 9496], [957, 9478]]], [[[1358, 9489], [1390, 9481], [1388, 9465], [1330, 9444], [1302, 9460], [1284, 9490], [1291, 9511], [1350, 9498], [1358, 9489]]], [[[2210, 7911], [2202, 7914], [2203, 7927], [2195, 7929], [2192, 7933], [2192, 7982], [2149, 7996], [2126, 7968], [2118, 7937], [2082, 7905], [1987, 7905], [2022, 7920], [2033, 7943], [2111, 7979], [2155, 8025], [2239, 8062], [2276, 8063], [2298, 8050], [2295, 8032], [2262, 8016], [2230, 8020], [2256, 8004], [2290, 8010], [2271, 7986], [2302, 7943], [2350, 7927], [2367, 7937], [2394, 7917], [2333, 7893], [2308, 7894], [2257, 7848], [2239, 7871], [2245, 7889], [2279, 7910], [2289, 7938], [2249, 7913], [2210, 7911]]], [[[2018, 7927], [2024, 7931], [2021, 7924], [2020, 7921], [2009, 7921], [2015, 7925], [2012, 7925], [2016, 7930], [2021, 7930], [2018, 7927]]], [[[518, 8075], [504, 8083], [514, 8081], [518, 8075], [518, 8075], [518, 8075]]], [[[629, 9322], [617, 9345], [604, 9327], [571, 9328], [559, 9347], [597, 9359], [678, 9417], [749, 9430], [780, 9414], [754, 9406], [765, 9375], [730, 9364], [718, 9338], [684, 9302], [660, 9308], [712, 9340], [710, 9380], [687, 9377], [670, 9338], [629, 9322]]], [[[2606, 8006], [2634, 8020], [2643, 7998], [2633, 7971], [2596, 7976], [2607, 7995], [2574, 7990], [2550, 7973], [2552, 8004], [2449, 8000], [2441, 8012], [2462, 8038], [2521, 8144], [2553, 8130], [2521, 8094], [2558, 8090], [2552, 8069], [2599, 8083], [2618, 8064], [2604, 8038], [2629, 8033], [2606, 8006]]], [[[1663, 8674], [1617, 8670], [1645, 8694], [1639, 8718], [1654, 8775], [1667, 8783], [1687, 8748], [1694, 8761], [1761, 8726], [1784, 8700], [1824, 8681], [1800, 8664], [1725, 8695], [1722, 8679], [1673, 8648], [1663, 8674]]], [[[1295, 8985], [1330, 8964], [1360, 8932], [1379, 8931], [1340, 8910], [1312, 8914], [1248, 8940], [1284, 8957], [1295, 8985]]], [[[1118, 9032], [1191, 8997], [1210, 8979], [1165, 8981], [1152, 8958], [1175, 8964], [1181, 8940], [1135, 8927], [1046, 8948], [1043, 8964], [1019, 8939], [971, 8925], [843, 8910], [830, 8948], [762, 8954], [719, 8990], [733, 8998], [815, 9008], [894, 9005], [875, 9018], [821, 9029], [760, 9020], [715, 9023], [691, 9046], [758, 9065], [767, 9075], [697, 9065], [700, 9081], [671, 9079], [670, 9095], [698, 9112], [685, 9123], [721, 9151], [804, 9178], [822, 9164], [829, 9134], [850, 9157], [903, 9140], [890, 9116], [922, 9133], [946, 9128], [919, 9156], [937, 9155], [980, 9131], [1007, 9079], [1021, 9094], [1006, 9107], [996, 9142], [999, 9187], [1024, 9167], [1044, 9168], [1077, 9144], [1079, 9125], [1107, 9076], [1100, 9049], [1118, 9032]]], [[[1885, 9194], [1941, 9161], [1939, 9145], [1830, 9148], [1807, 9172], [1804, 9199], [1885, 9194]]], [[[1340, 9095], [1291, 9080], [1274, 9059], [1217, 9110], [1182, 9118], [1155, 9145], [1179, 9161], [1198, 9140], [1223, 9141], [1230, 9163], [1188, 9184], [1204, 9198], [1291, 9219], [1302, 9241], [1296, 9210], [1318, 9205], [1321, 9178], [1285, 9158], [1318, 9154], [1331, 9167], [1346, 9123], [1340, 9095]]], [[[596, 9246], [638, 9229], [700, 9230], [736, 9218], [782, 9183], [668, 9135], [638, 9108], [624, 9071], [551, 9049], [522, 9083], [467, 9098], [499, 9159], [531, 9200], [502, 9234], [596, 9246]]], [[[1227, 9273], [1215, 9298], [1242, 9311], [1158, 9302], [1138, 9317], [1171, 9332], [1183, 9360], [1242, 9329], [1202, 9368], [1208, 9378], [1306, 9362], [1313, 9300], [1295, 9274], [1227, 9273]]], [[[938, 9326], [960, 9339], [928, 9351], [976, 9386], [984, 9335], [1027, 9326], [1040, 9336], [1073, 9326], [1073, 9306], [1130, 9283], [1100, 9275], [1068, 9293], [1058, 9276], [987, 9267], [975, 9276], [890, 9242], [830, 9239], [808, 9254], [857, 9271], [887, 9271], [912, 9287], [822, 9276], [820, 9294], [792, 9270], [717, 9284], [764, 9354], [794, 9364], [795, 9380], [808, 9377], [822, 9344], [851, 9349], [896, 9323], [902, 9303], [972, 9302], [974, 9314], [938, 9326]]], [[[1848, 9265], [1825, 9250], [1777, 9240], [1726, 9247], [1603, 9240], [1567, 9252], [1535, 9244], [1473, 9259], [1459, 9285], [1470, 9325], [1440, 9355], [1412, 9348], [1360, 9357], [1331, 9393], [1362, 9399], [1423, 9389], [1442, 9371], [1490, 9375], [1552, 9344], [1528, 9336], [1587, 9303], [1652, 9304], [1719, 9322], [1797, 9319], [1840, 9300], [1841, 9283], [1817, 9274], [1848, 9265]]], [[[933, 9426], [877, 9415], [845, 9427], [833, 9446], [816, 9439], [788, 9455], [811, 9463], [843, 9452], [918, 9464], [949, 9456], [933, 9426]]], [[[1126, 9547], [1165, 9524], [1187, 9528], [1249, 9496], [1240, 9486], [1266, 9450], [1200, 9447], [1205, 9471], [1154, 9471], [1155, 9482], [1104, 9475], [1087, 9490], [1131, 9490], [1115, 9522], [1071, 9525], [1076, 9545], [1126, 9547]]], [[[1511, 9629], [1553, 9627], [1562, 9603], [1579, 9620], [1601, 9618], [1623, 9584], [1617, 9561], [1665, 9561], [1684, 9542], [1637, 9527], [1563, 9469], [1474, 9471], [1406, 9521], [1437, 9534], [1477, 9534], [1456, 9553], [1417, 9540], [1362, 9550], [1334, 9600], [1389, 9593], [1338, 9609], [1354, 9630], [1379, 9632], [1370, 9645], [1389, 9663], [1439, 9666], [1403, 9677], [1436, 9685], [1480, 9670], [1511, 9629]]], [[[518, 8075], [519, 8073], [519, 8072], [518, 8075], [518, 8075], [518, 8075]]]] } }, { \"type\": \"Feature\", \"id\": \"ST\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.55, \"hc-middle-y\": 0.50, \"hc-key\": \"st\", \"hc-a2\": \"ST\", \"name\": \"Sao Tome and Principe\", \"labelrank\": \"6\", \"country-abbrev\": \"S.T.P.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"STP\", \"iso-a2\": \"ST\", \"woe-id\": \"23424966\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4400, 6481], [4396, 6485], [4401, 6491], [4405, 6487], [4400, 6481]]] } }, { \"type\": \"Feature\", \"id\": \"CV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.56, \"hc-middle-y\": 0.50, \"hc-key\": \"cv\", \"hc-a2\": \"CV\", \"name\": \"Cape Verde\", \"labelrank\": \"4\", \"country-abbrev\": \"C.Vd.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"CPV\", \"iso-a2\": \"CV\", \"woe-id\": \"23424794\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3499, 6934], [3506, 6928], [3507, 6922], [3499, 6925], [3499, 6934]]] } }, { \"type\": \"Feature\", \"id\": \"DM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.47, \"hc-key\": \"dm\", \"hc-a2\": \"DM\", \"name\": \"Dominica\", \"labelrank\": \"6\", \"country-abbrev\": \"D'inca\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"DMA\", \"iso-a2\": \"DM\", \"woe-id\": \"23424798\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2382, 6942], [2386, 6936], [2383, 6930], [2380, 6939], [2382, 6942]]] } }, { \"type\": \"Feature\", \"id\": \"NL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.99, \"hc-middle-y\": 0.01, \"hc-key\": \"nl\", \"hc-a2\": \"NL\", \"name\": \"Netherlands\", \"labelrank\": \"5\", \"country-abbrev\": \"Neth.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"NLD\", \"iso-a2\": \"NL\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4369, 8229], [4359, 8225], [4360, 8227], [4372, 8230], [4369, 8229]]], [[[2334, 7016], [2331, 7016], [2331, 7017], [2334, 7016]]], [[[4303, 8146], [4315, 8146], [4329, 8146], [4317, 8140], [4303, 8146]]], [[[4417, 8221], [4412, 8180], [4393, 8164], [4382, 8122], [4353, 8150], [4330, 8146], [4318, 8156], [4355, 8209], [4396, 8234], [4417, 8221]]]] } }, { \"type\": \"Feature\", \"id\": \"JM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.52, \"hc-key\": \"jm\", \"hc-a2\": \"JM\", \"name\": \"Jamaica\", \"labelrank\": \"4\", \"country-abbrev\": \"Jam.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"JAM\", \"iso-a2\": \"JM\", \"woe-id\": \"23424858\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1906, 7029], [1943, 7013], [1913, 7006], [1878, 7023], [1906, 7029]]] } }, { \"type\": \"Feature\", \"id\": \"WS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.54, \"hc-key\": \"ws\", \"hc-a2\": \"WS\", \"name\": \"Samoa\", \"labelrank\": \"4\", \"country-abbrev\": \"Samoa\", \"subregion\": \"Polynesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"WSM\", \"iso-a2\": \"WS\", \"woe-id\": \"23424992\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-909, 6078], [-907, 6069], [-916, 6069], [-924, 6078], [-909, 6078]]] } }, { \"type\": \"Feature\", \"id\": \"OM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.88, \"hc-middle-y\": 0.44, \"hc-key\": \"om\", \"hc-a2\": \"OM\", \"name\": \"Oman\", \"labelrank\": \"4\", \"country-abbrev\": \"Oman\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"OMN\", \"iso-a2\": \"OM\", \"woe-id\": \"23424898\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5874, 7239], [5873, 7238], [5873, 7241], [5876, 7241], [5874, 7239]]], [[[5868, 7265], [5877, 7275], [5874, 7251], [5870, 7253], [5868, 7265]]], [[[5747, 7045], [5836, 7076], [5855, 7137], [5842, 7160], [5860, 7228], [5877, 7231], [5900, 7199], [5948, 7186], [5979, 7145], [5916, 7068], [5920, 7047], [5885, 7033], [5876, 7013], [5849, 7010], [5837, 6985], [5780, 6974], [5769, 6994], [5747, 7045]]]] } }, { \"type\": \"Feature\", \"id\": \"VC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"vc\", \"hc-a2\": \"VC\", \"name\": \"Saint Vincent and the Grenadines\", \"labelrank\": \"6\", \"country-abbrev\": \"St.V.G.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"VCT\", \"iso-a2\": \"VC\", \"woe-id\": \"23424981\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2388, 6865], [2385, 6871], [2389, 6875], [2390, 6870], [2388, 6865]]] } }, { \"type\": \"Feature\", \"id\": \"TR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.34, \"hc-middle-y\": 0.49, \"hc-key\": \"tr\", \"hc-a2\": \"TR\", \"name\": \"Turkey\", \"labelrank\": \"2\", \"country-abbrev\": \"Tur.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"TUR\", \"iso-a2\": \"TR\", \"woe-id\": \"23424969\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4974, 7732], [4969, 7730], [4966, 7731], [4973, 7735], [4974, 7732]]], [[[5035, 7796], [5068, 7769], [5021, 7761], [5011, 7748], [4977, 7752], [4994, 7775], [4985, 7786], [5007, 7799], [5035, 7796]]], [[[5534, 7714], [5510, 7704], [5516, 7656], [5532, 7628], [5472, 7635], [5461, 7627], [5457, 7634], [5384, 7614], [5338, 7620], [5291, 7617], [5270, 7586], [5272, 7620], [5252, 7608], [5229, 7615], [5177, 7590], [5154, 7607], [5115, 7619], [5106, 7597], [5085, 7593], [5044, 7625], [5011, 7635], [5012, 7657], [4983, 7666], [5007, 7687], [4989, 7700], [4986, 7702], [4979, 7707], [4997, 7740], [5069, 7741], [5071, 7770], [5131, 7764], [5193, 7797], [5271, 7787], [5318, 7762], [5374, 7765], [5395, 7758], [5436, 7779], [5474, 7782], [5493, 7765], [5500, 7730], [5533, 7716], [5534, 7714]]]] } }, { \"type\": \"Feature\", \"id\": \"BD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.85, \"hc-middle-y\": 0.61, \"hc-key\": \"bd\", \"hc-a2\": \"BD\", \"name\": \"Bangladesh\", \"labelrank\": \"3\", \"country-abbrev\": \"Bang.\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"BGD\", \"iso-a2\": \"BD\", \"woe-id\": \"23424759\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6942, 7109], [6918, 7163], [6880, 7132], [6847, 7142], [6832, 7189], [6837, 7209], [6816, 7220], [6843, 7237], [6818, 7260], [6829, 7277], [6870, 7262], [6886, 7236], [6935, 7237], [6949, 7229], [6909, 7188], [6922, 7167], [6939, 7192], [6951, 7137], [6953, 7116], [6942, 7109]]] } }, { \"type\": \"Feature\", \"id\": \"LC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.47, \"hc-key\": \"lc\", \"hc-a2\": \"LC\", \"name\": \"Saint Lucia\", \"labelrank\": \"6\", \"country-abbrev\": \"S.L.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"LCA\", \"iso-a2\": \"LC\", \"woe-id\": \"23424951\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2395, 6886], [2391, 6890], [2396, 6897], [2397, 6893], [2395, 6886]]] } }, { \"type\": \"Feature\", \"id\": \"NR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.53, \"hc-middle-y\": 0.50, \"hc-key\": \"nr\", \"hc-a2\": \"NR\", \"name\": \"Nauru\", \"labelrank\": \"6\", \"country-abbrev\": \"Nauru\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"NRU\", \"iso-a2\": \"NR\", \"woe-id\": \"23424912\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9158, 6463], [9157, 6463], [9157, 6464], [9159, 6464], [9158, 6463]]] } }, { \"type\": \"Feature\", \"id\": \"NO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.10, \"hc-middle-y\": 0.93, \"hc-key\": \"no\", \"hc-a2\": \"NO\", \"name\": \"Norway\", \"labelrank\": \"3\", \"country-abbrev\": \"Nor.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"NOR\", \"iso-a2\": \"NO\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4821, 8997], [4815, 8993], [4809, 8996], [4815, 9003], [4821, 8997]]], [[[4797, 8992], [4790, 8995], [4784, 9004], [4802, 8997], [4797, 8992]]], [[[4877, 9011], [4887, 9004], [4870, 9006], [4871, 9011], [4877, 9011]]], [[[4901, 9024], [4906, 9016], [4890, 9006], [4882, 9013], [4901, 9024]]], [[[4911, 9029], [4920, 9024], [4909, 9019], [4905, 9028], [4911, 9029]]], [[[4898, 9036], [4889, 9022], [4861, 9017], [4873, 9029], [4898, 9036]]], [[[4918, 9045], [4919, 9040], [4914, 9042], [4915, 9046], [4918, 9045]]], [[[4966, 9053], [4974, 9045], [4962, 9041], [4955, 9047], [4966, 9053]]], [[[4841, 9496], [4865, 9475], [4829, 9471], [4803, 9490], [4841, 9496]]], [[[4998, 9499], [4989, 9504], [4994, 9510], [5000, 9504], [4998, 9499]]], [[[5066, 9517], [5038, 9511], [5030, 9512], [5047, 9521], [5066, 9517]]], [[[4804, 9531], [4822, 9526], [4810, 9523], [4799, 9526], [4804, 9531]]], [[[4802, 9547], [4789, 9545], [4786, 9549], [4789, 9550], [4802, 9547]]], [[[5202, 9605], [5178, 9599], [5142, 9595], [5139, 9598], [5202, 9605]]], [[[4928, 9617], [4921, 9616], [4921, 9620], [4923, 9621], [4928, 9617]]], [[[4921, 9625], [4925, 9623], [4923, 9622], [4917, 9623], [4921, 9625]]], [[[4797, 9623], [4793, 9624], [4796, 9627], [4801, 9625], [4797, 9623]]], [[[4837, 9638], [4831, 9635], [4828, 9638], [4834, 9639], [4837, 9638]]], [[[4821, 9634], [4821, 9638], [4813, 9643], [4826, 9639], [4821, 9634]]], [[[4748, 8967], [4767, 8968], [4802, 8988], [4813, 8979], [4815, 8980], [4817, 8980], [4818, 8983], [4823, 8988], [4820, 8990], [4826, 8992], [4827, 8992], [4845, 9007], [4847, 9007], [4847, 9006], [4849, 9005], [4850, 9007], [4886, 9002], [4934, 9033], [4973, 9037], [4948, 9018], [4950, 8995], [4996, 9042], [4991, 9010], [5022, 9050], [5094, 9029], [5126, 9006], [5099, 8995], [5057, 9000], [5119, 8981], [5093, 8957], [5063, 8940], [5075, 8962], [5032, 8995], [4976, 8974], [4965, 8932], [4942, 8915], [4914, 8929], [4869, 8923], [4847, 8952], [4816, 8940], [4797, 8905], [4743, 8914], [4735, 8885], [4718, 8892], [4683, 8857], [4691, 8839], [4635, 8792], [4635, 8753], [4609, 8718], [4618, 8690], [4580, 8688], [4560, 8656], [4569, 8610], [4565, 8584], [4586, 8568], [4568, 8551], [4575, 8512], [4556, 8501], [4543, 8462], [4515, 8473], [4456, 8430], [4429, 8420], [4398, 8424], [4359, 8468], [4372, 8509], [4342, 8554], [4363, 8576], [4347, 8589], [4369, 8612], [4411, 8630], [4409, 8639], [4464, 8659], [4435, 8662], [4465, 8681], [4504, 8658], [4544, 8680], [4498, 8667], [4487, 8679], [4537, 8729], [4562, 8742], [4566, 8761], [4607, 8833], [4667, 8874], [4643, 8878], [4692, 8898], [4682, 8907], [4716, 8924], [4703, 8941], [4719, 8966], [4748, 8967], [4769, 8982], [4768, 8999], [4781, 8983], [4748, 8967]], [[5095, 8982], [5091, 8986], [5086, 8978], [5097, 8981], [5095, 8982]]], [[[4948, 9363], [4949, 9366], [4963, 9376], [4948, 9363], [4948, 9363], [4948, 9363]]], [[[4630, 8922], [4662, 8932], [4682, 8955], [4696, 8923], [4668, 8902], [4602, 8890], [4605, 8899], [4657, 8910], [4630, 8922]]], [[[4893, 9411], [4874, 9424], [4825, 9422], [4847, 9452], [4824, 9463], [4886, 9474], [4905, 9449], [4929, 9446], [4893, 9411]]], [[[4669, 9570], [4695, 9593], [4764, 9552], [4766, 9533], [4843, 9513], [4768, 9488], [4744, 9425], [4730, 9424], [4703, 9367], [4631, 9407], [4617, 9428], [4702, 9450], [4611, 9443], [4607, 9461], [4650, 9465], [4673, 9480], [4644, 9505], [4641, 9483], [4590, 9471], [4561, 9497], [4565, 9471], [4533, 9487], [4515, 9516], [4540, 9521], [4522, 9560], [4531, 9569], [4564, 9568], [4613, 9582], [4616, 9559], [4636, 9577], [4658, 9563], [4689, 9517], [4669, 9570]]], [[[4909, 9611], [5000, 9602], [5010, 9580], [4975, 9557], [4918, 9535], [4884, 9538], [4883, 9551], [4822, 9548], [4787, 9564], [4852, 9570], [4854, 9578], [4761, 9571], [4763, 9592], [4732, 9599], [4742, 9610], [4778, 9596], [4809, 9619], [4824, 9604], [4852, 9608], [4868, 9590], [4879, 9624], [4887, 9601], [4909, 9611]]], [[[4948, 9363], [4946, 9359], [4947, 9363], [4948, 9363], [4948, 9363], [4948, 9363]]]] } }, { \"type\": \"Feature\", \"id\": \"KN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.49, \"hc-key\": \"kn\", \"hc-a2\": \"KN\", \"name\": \"Saint Kitts and Nevis\", \"labelrank\": \"6\", \"country-abbrev\": \"St.K.N.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"KNA\", \"iso-a2\": \"KN\", \"woe-id\": \"23424940\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2346, 6991], [2339, 6996], [2340, 6997], [2343, 6995], [2346, 6991]]] } }, { \"type\": \"Feature\", \"id\": \"BH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.50, \"hc-key\": \"bh\", \"hc-a2\": \"BH\", \"name\": \"Bahrain\", \"labelrank\": \"4\", \"country-abbrev\": \"Bahr.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"BHR\", \"iso-a2\": \"BH\", \"woe-id\": \"23424753\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5702, 7271], [5706, 7269], [5705, 7256], [5701, 7263], [5702, 7271]]] } }, { \"type\": \"Feature\", \"id\": \"TO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.34, \"hc-key\": \"to\", \"hc-a2\": \"TO\", \"name\": \"Tonga\", \"labelrank\": \"4\", \"country-abbrev\": \"Tongo\", \"subregion\": \"Polynesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"TON\", \"iso-a2\": \"TO\", \"woe-id\": \"23424964\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[-987, 5842], [-988, 5840], [-999, 5845], [-992, 5847], [-987, 5842]]] } }, { \"type\": \"Feature\", \"id\": \"FI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.63, \"hc-middle-y\": 0.54, \"hc-key\": \"fi\", \"hc-a2\": \"FI\", \"name\": \"Finland\", \"labelrank\": \"3\", \"country-abbrev\": \"Fin.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"FIN\", \"iso-a2\": \"FI\", \"woe-id\": \"23424812\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4816, 8512], [4815, 8507], [4806, 8505], [4810, 8509], [4816, 8512]]], [[[4803, 8510], [4806, 8512], [4803, 8505], [4798, 8508], [4803, 8510]]], [[[4808, 8518], [4799, 8510], [4785, 8518], [4800, 8522], [4808, 8518]]], [[[4844, 8516], [4844, 8514], [4855, 8514], [4842, 8511], [4844, 8516]]], [[[4870, 8506], [4870, 8515], [4882, 8511], [4872, 8501], [4870, 8506]]], [[[4836, 8532], [4837, 8528], [4836, 8523], [4835, 8528], [4836, 8532]]], [[[4835, 8657], [4838, 8652], [4834, 8650], [4830, 8654], [4835, 8657]]], [[[4942, 8741], [4935, 8736], [4933, 8739], [4936, 8741], [4942, 8741]]], [[[4851, 8526], [4845, 8528], [4834, 8596], [4842, 8652], [4868, 8658], [4939, 8731], [4954, 8729], [4955, 8762], [4921, 8778], [4906, 8808], [4916, 8826], [4899, 8860], [4906, 8885], [4816, 8940], [4847, 8952], [4869, 8923], [4914, 8929], [4942, 8915], [4965, 8932], [4976, 8974], [5032, 8995], [5075, 8962], [5063, 8940], [5048, 8914], [5055, 8897], [5095, 8871], [5067, 8828], [5091, 8792], [5082, 8737], [5111, 8691], [5094, 8678], [5141, 8638], [5131, 8620], [5071, 8562], [5029, 8531], [4909, 8505], [4869, 8520], [4871, 8521], [4866, 8521], [4866, 8521], [4854, 8525], [4857, 8523], [4856, 8520], [4851, 8524], [4851, 8526]]]] } }, { \"type\": \"Feature\", \"id\": \"ID\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.38, \"hc-middle-y\": 0.41, \"hc-key\": \"id\", \"hc-a2\": \"ID\", \"name\": \"Indonesia\", \"labelrank\": \"2\", \"country-abbrev\": \"Indo.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"IDN\", \"iso-a2\": \"ID\", \"woe-id\": \"23424846\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[8188, 6311], [8203, 6311], [8186, 6274], [8184, 6299], [8156, 6320], [8188, 6311]]], [[[7394, 6396], [7365, 6387], [7343, 6415], [7351, 6432], [7368, 6393], [7394, 6396]]], [[[7693, 6231], [7736, 6235], [7737, 6224], [7676, 6209], [7642, 6218], [7658, 6236], [7693, 6231]]], [[[8007, 6546], [8003, 6517], [8028, 6486], [8001, 6493], [7995, 6439], [7976, 6470], [7993, 6473], [7985, 6514], [8007, 6546]]], [[[7885, 6203], [7891, 6198], [7897, 6207], [7902, 6208], [7911, 6214], [7912, 6206], [7915, 6198], [7897, 6179], [7868, 6172], [7885, 6203]]], [[[7703, 6601], [7696, 6596], [7697, 6601], [7703, 6601]]], [[[8388, 6402], [8388, 6275], [8388, 6210], [8360, 6240], [8289, 6230], [8299, 6253], [8325, 6262], [8294, 6324], [8238, 6346], [8216, 6347], [8170, 6376], [8148, 6358], [8127, 6400], [8181, 6408], [8142, 6411], [8087, 6439], [8070, 6476], [8099, 6455], [8142, 6468], [8180, 6457], [8185, 6415], [8210, 6380], [8248, 6403], [8246, 6430], [8295, 6435], [8355, 6409], [8388, 6402]]], [[[7779, 6174], [7734, 6196], [7755, 6202], [7771, 6234], [7833, 6224], [7852, 6236], [7936, 6242], [7886, 6226], [7878, 6234], [7818, 6216], [7763, 6218], [7789, 6183], [7779, 6174]]], [[[7419, 6248], [7365, 6260], [7335, 6278], [7351, 6305], [7419, 6294], [7427, 6279], [7483, 6274], [7496, 6290], [7530, 6275], [7624, 6277], [7624, 6218], [7565, 6234], [7548, 6229], [7490, 6237], [7450, 6251], [7419, 6248]]], [[[8007, 6388], [7965, 6365], [7943, 6380], [7942, 6408], [7946, 6387], [7976, 6380], [8002, 6393], [8048, 6397], [8079, 6386], [8086, 6365], [8007, 6388]]], [[[7849, 6311], [7824, 6317], [7851, 6347], [7809, 6341], [7813, 6358], [7778, 6383], [7775, 6316], [7746, 6321], [7754, 6351], [7730, 6401], [7746, 6421], [7766, 6500], [7792, 6519], [7814, 6510], [7882, 6503], [7917, 6531], [7898, 6492], [7774, 6491], [7765, 6473], [7785, 6438], [7815, 6465], [7866, 6460], [7862, 6427], [7846, 6446], [7811, 6422], [7839, 6386], [7855, 6349], [7849, 6311]]], [[[7693, 6601], [7687, 6576], [7709, 6546], [7702, 6535], [7736, 6509], [7698, 6501], [7689, 6463], [7663, 6436], [7664, 6414], [7646, 6373], [7606, 6356], [7594, 6380], [7558, 6385], [7522, 6375], [7519, 6397], [7476, 6390], [7466, 6446], [7452, 6441], [7434, 6503], [7458, 6540], [7485, 6504], [7557, 6525], [7602, 6521], [7631, 6568], [7642, 6608], [7693, 6601]]], [[[7120, 6602], [7164, 6572], [7200, 6534], [7221, 6541], [7283, 6486], [7272, 6457], [7301, 6448], [7311, 6409], [7338, 6408], [7352, 6382], [7345, 6312], [7312, 6304], [7219, 6384], [7196, 6415], [7181, 6455], [7152, 6486], [7124, 6478], [7149, 6426], [7139, 6429], [7121, 6478], [7145, 6496], [7128, 6536], [7092, 6539], [7110, 6508], [7103, 6496], [7087, 6540], [7065, 6548], [7092, 6543], [7100, 6563], [7036, 6621], [7032, 6650], [7065, 6633], [7097, 6634], [7120, 6602]]]] } }, { \"type\": \"Feature\", \"id\": \"MU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.63, \"hc-middle-y\": 0.58, \"hc-key\": \"mu\", \"hc-a2\": \"MU\", \"name\": \"Mauritius\", \"labelrank\": \"5\", \"country-abbrev\": \"Mus.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MUS\", \"iso-a2\": \"MU\", \"woe-id\": \"23424894\", \"continent\": \"Seven seas (open ocean)\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5917, 5878], [5916, 5867], [5907, 5866], [5911, 5880], [5917, 5878]]] } }, { \"type\": \"Feature\", \"id\": \"SE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.40, \"hc-middle-y\": 0.48, \"hc-key\": \"se\", \"hc-a2\": \"SE\", \"name\": \"Sweden\", \"labelrank\": \"3\", \"country-abbrev\": \"Swe.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"SWE\", \"iso-a2\": \"SE\", \"woe-id\": \"23424954\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4749, 8461], [4749, 8461], [4749, 8466], [4753, 8466], [4749, 8461]]], [[[4864, 8758], [4864, 8764], [4868, 8762], [4868, 8758], [4864, 8758]]], [[[4921, 8778], [4853, 8764], [4831, 8722], [4845, 8711], [4821, 8684], [4769, 8651], [4733, 8619], [4712, 8569], [4718, 8540], [4736, 8533], [4770, 8495], [4751, 8469], [4701, 8445], [4691, 8414], [4700, 8372], [4711, 8391], [4741, 8387], [4760, 8415], [4759, 8386], [4710, 8386], [4693, 8344], [4640, 8340], [4625, 8309], [4589, 8309], [4571, 8373], [4546, 8417], [4550, 8417], [4552, 8421], [4545, 8421], [4546, 8418], [4537, 8434], [4543, 8462], [4556, 8501], [4575, 8512], [4568, 8551], [4586, 8568], [4565, 8584], [4569, 8610], [4560, 8656], [4580, 8688], [4618, 8690], [4609, 8718], [4635, 8753], [4635, 8792], [4691, 8839], [4683, 8857], [4718, 8892], [4735, 8885], [4743, 8914], [4797, 8905], [4816, 8940], [4906, 8885], [4899, 8860], [4916, 8826], [4906, 8808], [4921, 8778]], [[4554, 8430], [4543, 8426], [4546, 8423], [4554, 8424], [4554, 8430]]]] } }, { \"type\": \"Feature\", \"id\": \"TT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.44, \"hc-key\": \"tt\", \"hc-a2\": \"TT\", \"name\": \"Trinidad and Tobago\", \"labelrank\": \"5\", \"country-abbrev\": \"Tr.T.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"TTO\", \"iso-a2\": \"TT\", \"woe-id\": \"23424958\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2396, 6799], [2394, 6779], [2380, 6783], [2374, 6796], [2396, 6799]]] } }, { \"type\": \"Feature\", \"id\": \"MY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.90, \"hc-middle-y\": 0.26, \"hc-key\": \"my\", \"hc-a2\": \"MY\", \"name\": \"Malaysia\", \"labelrank\": \"3\", \"country-abbrev\": \"Malay.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"MYS\", \"iso-a2\": \"MY\", \"woe-id\": \"23424901\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7181, 6640], [7180, 6634], [7177, 6634], [7177, 6640], [7181, 6640]]], [[[7703, 6601], [7697, 6601], [7698, 6602], [7693, 6601], [7642, 6608], [7631, 6568], [7602, 6521], [7557, 6525], [7485, 6504], [7458, 6540], [7498, 6525], [7508, 6550], [7510, 6549], [7510, 6554], [7511, 6558], [7558, 6572], [7587, 6614], [7606, 6597], [7616, 6623], [7617, 6624], [7618, 6621], [7627, 6606], [7621, 6623], [7650, 6660], [7685, 6675], [7743, 6632], [7710, 6623], [7722, 6607], [7701, 6603], [7703, 6601]]], [[[7175, 6669], [7204, 6663], [7205, 6645], [7233, 6663], [7274, 6620], [7274, 6565], [7299, 6519], [7272, 6524], [7210, 6563], [7193, 6593], [7175, 6669]]]] } }, { \"type\": \"Feature\", \"id\": \"PA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.22, \"hc-middle-y\": 0.50, \"hc-key\": \"pa\", \"hc-a2\": \"PA\", \"name\": \"Panama\", \"labelrank\": \"4\", \"country-abbrev\": \"Pan.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"PAN\", \"iso-a2\": \"PA\", \"woe-id\": \"23424924\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1892, 6692], [1873, 6732], [1843, 6744], [1816, 6717], [1829, 6699], [1776, 6692], [1778, 6721], [1744, 6716], [1739, 6725], [1740, 6725], [1740, 6725], [1740, 6726], [1740, 6726], [1754, 6762], [1768, 6743], [1798, 6739], [1841, 6763], [1876, 6757], [1908, 6735], [1914, 6713], [1892, 6692]]] } }, { \"type\": \"Feature\", \"id\": \"PW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.38, \"hc-middle-y\": 0.44, \"hc-key\": \"pw\", \"hc-a2\": \"PW\", \"name\": \"Palau\", \"labelrank\": \"6\", \"country-abbrev\": \"Palau\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"PLW\", \"iso-a2\": \"PW\", \"woe-id\": \"23424927\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8196, 6695], [8195, 6699], [8197, 6703], [8200, 6703], [8196, 6695]]] } }, { \"type\": \"Feature\", \"id\": \"TV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.25, \"hc-middle-y\": 0.50, \"hc-key\": \"tv\", \"hc-a2\": \"TV\", \"name\": \"Tuvalu\", \"labelrank\": \"6\", \"country-abbrev\": \"Tuv.\", \"subregion\": \"Polynesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"TUV\", \"iso-a2\": \"TV\", \"woe-id\": \"23424970\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9522, 6227], [9522, 6227], [9522, 6229], [9522, 6227], [9522, 6227]]] } }, { \"type\": \"Feature\", \"id\": \"MH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.60, \"hc-key\": \"mh\", \"hc-a2\": \"MH\", \"name\": \"Marshall Islands\", \"labelrank\": \"6\", \"country-abbrev\": \"M. Is.\", \"subregion\": \"Micronesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"MHL\", \"iso-a2\": \"MH\", \"woe-id\": \"23424932\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9280, 6690], [9285, 6688], [9286, 6687], [9285, 6688], [9280, 6690]]] } }, { \"type\": \"Feature\", \"id\": \"CL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.51, \"hc-middle-y\": 0.90, \"hc-key\": \"cl\", \"hc-a2\": \"CL\", \"name\": \"Chile\", \"labelrank\": \"2\", \"country-abbrev\": \"Chile\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"CHL\", \"iso-a2\": \"CL\", \"woe-id\": \"23424782\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2028, 4732], [2063, 4714], [2042, 4700], [2014, 4729], [2028, 4732]]], [[[1977, 4948], [1993, 4916], [1994, 4867], [1960, 4879], [1981, 4893], [1959, 4908], [1961, 4938], [1977, 4948]]], [[[2022, 5147], [2016, 5111], [1985, 5101], [2001, 5124], [2006, 5163], [2022, 5147]]], [[[2167, 4761], [2167, 4674], [2165, 4674], [2167, 4673], [2167, 4670], [2128, 4674], [2110, 4657], [2088, 4695], [2113, 4723], [2117, 4693], [2157, 4688], [2125, 4702], [2114, 4746], [2144, 4768], [2167, 4761]]], [[[2115, 5932], [2128, 5935], [2141, 5957], [2157, 5913], [2173, 5898], [2163, 5868], [2180, 5842], [2189, 5794], [2210, 5794], [2206, 5757], [2169, 5733], [2177, 5666], [2162, 5659], [2137, 5618], [2109, 5516], [2133, 5456], [2115, 5397], [2115, 5366], [2096, 5352], [2091, 5311], [2101, 5277], [2085, 5269], [2069, 5206], [2075, 5158], [2063, 5125], [2077, 5092], [2066, 5062], [2088, 5042], [2070, 4970], [2051, 4944], [2059, 4928], [2020, 4882], [2032, 4835], [2058, 4839], [2054, 4804], [2070, 4787], [2128, 4786], [2173, 4772], [2152, 4778], [2105, 4757], [2096, 4714], [2032, 4737], [2038, 4753], [2004, 4758], [1996, 4781], [2017, 4777], [2012, 4815], [1976, 4834], [2000, 4847], [1996, 4918], [1986, 4952], [2000, 4987], [1966, 4992], [1995, 5037], [2008, 5015], [2031, 5042], [2026, 5058], [1996, 5060], [2012, 5097], [2020, 5062], [2053, 5159], [2039, 5179], [2015, 5170], [2010, 5197], [2030, 5249], [2018, 5310], [2031, 5329], [2048, 5383], [2060, 5398], [2085, 5489], [2078, 5559], [2088, 5569], [2081, 5601], [2100, 5643], [2113, 5714], [2109, 5785], [2125, 5837], [2115, 5932]]], [[[2209, 4666], [2230, 4654], [2168, 4659], [2214, 4627], [2192, 4628], [2162, 4657], [2133, 4648], [2129, 4663], [2202, 4668], [2207, 4668], [2209, 4666]]]] } }, { \"type\": \"Feature\", \"id\": \"TH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.25, \"hc-middle-y\": 0.49, \"hc-key\": \"th\", \"hc-a2\": \"TH\", \"name\": \"Thailand\", \"labelrank\": \"3\", \"country-abbrev\": \"Thai.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"THA\", \"iso-a2\": \"TH\", \"woe-id\": \"23424960\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7239, 6839], [7241, 6837], [7244, 6834], [7240, 6833], [7239, 6839]]], [[[7233, 6663], [7205, 6645], [7204, 6663], [7175, 6669], [7151, 6704], [7118, 6732], [7134, 6785], [7161, 6829], [7146, 6886], [7119, 6918], [7137, 6959], [7095, 7030], [7113, 7070], [7128, 7066], [7175, 7086], [7186, 7062], [7209, 7061], [7205, 6999], [7233, 7022], [7249, 7010], [7272, 7029], [7290, 7025], [7315, 6996], [7313, 6970], [7338, 6946], [7325, 6904], [7280, 6907], [7241, 6881], [7258, 6824], [7226, 6854], [7201, 6852], [7200, 6878], [7173, 6876], [7172, 6840], [7151, 6793], [7149, 6752], [7167, 6753], [7185, 6690], [7218, 6681], [7233, 6663]]]] } }, { \"type\": \"Feature\", \"id\": \"GD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"gd\", \"hc-a2\": \"GD\", \"name\": \"Grenada\", \"labelrank\": \"6\", \"country-abbrev\": \"Gren.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"GRD\", \"iso-a2\": \"GD\", \"woe-id\": \"23424826\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2375, 6835], [2372, 6835], [2372, 6839], [2376, 6841], [2375, 6835]]] } }, { \"type\": \"Feature\", \"id\": \"EE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.35, \"hc-middle-y\": 0.41, \"hc-key\": \"ee\", \"hc-a2\": \"EE\", \"name\": \"Estonia\", \"labelrank\": \"6\", \"country-abbrev\": \"Est.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"EST\", \"iso-a2\": \"EE\", \"woe-id\": \"23424805\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4876, 8444], [4887, 8435], [4863, 8425], [4852, 8441], [4876, 8444]]], [[[4897, 8446], [4893, 8442], [4888, 8445], [4892, 8448], [4897, 8446]]], [[[4893, 8464], [4897, 8464], [4898, 8461], [4891, 8461], [4893, 8464]]], [[[4878, 8463], [4888, 8455], [4872, 8449], [4858, 8459], [4878, 8463]]], [[[5026, 8462], [5004, 8453], [5024, 8419], [5021, 8411], [5016, 8399], [4990, 8398], [4954, 8422], [4925, 8413], [4902, 8443], [4901, 8472], [4975, 8490], [5035, 8483], [5038, 8482], [5040, 8478], [5038, 8477], [5035, 8477], [5035, 8477], [5037, 8476], [5037, 8476], [5038, 8476], [5037, 8476], [5034, 8476], [5030, 8469], [5026, 8462]]]] } }, { \"type\": \"Feature\", \"id\": \"AG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.48, \"hc-key\": \"ag\", \"hc-a2\": \"AG\", \"name\": \"Antigua and Barbuda\", \"labelrank\": \"6\", \"country-abbrev\": \"Ant.B.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"ATG\", \"iso-a2\": \"AG\", \"woe-id\": \"23424737\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2371, 6989], [2373, 6986], [2369, 6985], [2367, 6988], [2371, 6989]]] } }, { \"type\": \"Feature\", \"id\": \"TW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.41, \"hc-key\": \"tw\", \"hc-a2\": \"TW\", \"name\": \"Taiwan\", \"labelrank\": \"3\", \"country-abbrev\": \"Taiwan\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"TWN\", \"iso-a2\": \"TW\", \"woe-id\": \"23424971\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7752, 7185], [7768, 7185], [7797, 7233], [7821, 7235], [7807, 7173], [7790, 7136], [7752, 7185]]] } }, { \"type\": \"Feature\", \"id\": \"BB\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.31, \"hc-middle-y\": 0.56, \"hc-key\": \"bb\", \"hc-a2\": \"BB\", \"name\": \"Barbados\", \"labelrank\": \"5\", \"country-abbrev\": \"Barb.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"BRB\", \"iso-a2\": \"BB\", \"woe-id\": \"23424754\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2438, 6866], [2434, 6868], [2435, 6874], [2440, 6869], [2438, 6866]]] } }, { \"type\": \"Feature\", \"id\": \"IT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.79, \"hc-middle-y\": 0.71, \"hc-key\": \"it\", \"hc-a2\": \"IT\", \"name\": \"Italy\", \"labelrank\": \"2\", \"country-abbrev\": \"Italy\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ITA\", \"iso-a2\": \"IT\", \"woe-id\": \"23424853\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4571, 7654], [4668, 7666], [4655, 7649], [4652, 7611], [4634, 7616], [4571, 7654]]], [[[4484, 7768], [4496, 7744], [4488, 7697], [4454, 7690], [4456, 7736], [4448, 7757], [4484, 7768]]], [[[4427, 7861], [4400, 7909], [4412, 7939], [4444, 7951], [4466, 7944], [4500, 7955], [4514, 7974], [4566, 7982], [4572, 7967], [4611, 7961], [4601, 7952], [4611, 7927], [4596, 7933], [4565, 7916], [4572, 7876], [4608, 7851], [4622, 7818], [4654, 7794], [4680, 7795], [4677, 7778], [4738, 7749], [4753, 7731], [4710, 7744], [4694, 7715], [4713, 7705], [4681, 7655], [4685, 7684], [4668, 7729], [4611, 7770], [4591, 7769], [4536, 7815], [4504, 7869], [4464, 7884], [4427, 7861]], [[4574, 7793], [4574, 7793], [4574, 7793], [4574, 7793], [4574, 7793]], [[4574, 7865], [4574, 7868], [4573, 7867], [4572, 7866], [4574, 7865]]]] } }, { \"type\": \"Feature\", \"id\": \"MT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.53, \"hc-key\": \"mt\", \"hc-a2\": \"MT\", \"name\": \"Malta\", \"labelrank\": \"5\", \"country-abbrev\": \"Malta\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"MLT\", \"iso-a2\": \"MT\", \"woe-id\": \"23424897\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4628, 7589], [4635, 7586], [4635, 7582], [4631, 7584], [4628, 7589]]] } }, { \"type\": \"Feature\", \"id\": \"VU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.60, \"hc-middle-y\": 0.53, \"hc-key\": \"vu\", \"hc-a2\": \"VU\", \"name\": \"Vanuatu\", \"labelrank\": \"4\", \"country-abbrev\": \"Van.\", \"subregion\": \"Melanesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"VUT\", \"iso-a2\": \"VU\", \"woe-id\": \"23424907\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9172, 6054], [9194, 6034], [9205, 5976], [9178, 5988], [9154, 6029], [9172, 6054]]] } }, { \"type\": \"Feature\", \"id\": \"SG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.57, \"hc-key\": \"sg\", \"hc-a2\": \"SG\", \"name\": \"Singapore\", \"labelrank\": \"6\", \"country-abbrev\": \"Sing.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"SGP\", \"iso-a2\": \"SG\", \"woe-id\": \"23424948\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7286, 6521], [7290, 6519], [7286, 6516], [7280, 6517], [7286, 6521]]] } }, { \"type\": \"Feature\", \"id\": \"CY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.51, \"hc-key\": \"cy\", \"hc-a2\": \"CY\", \"name\": \"Cyprus\", \"labelrank\": \"5\", \"country-abbrev\": \"Cyp.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"CYP\", \"iso-a2\": \"CY\", \"woe-id\": \"-90\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5205, 7555], [5205, 7556], [5206, 7556], [5205, 7555]]], [[[5214, 7557], [5216, 7554], [5210, 7554], [5207, 7557], [5210, 7557], [5213, 7557], [5214, 7557]]], [[[5206, 7555], [5206, 7555], [5207, 7555], [5207, 7554], [5206, 7555]]], [[[5204, 7554], [5201, 7549], [5184, 7543], [5178, 7545], [5176, 7544], [5162, 7557], [5171, 7561], [5172, 7560], [5173, 7562], [5174, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5196, 7561], [5204, 7555], [5204, 7554]]]] } }, { \"type\": \"Feature\", \"id\": \"LK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.62, \"hc-middle-y\": 0.91, \"hc-key\": \"lk\", \"hc-a2\": \"LK\", \"name\": \"Sri Lanka\", \"labelrank\": \"3\", \"country-abbrev\": \"Sri L.\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"LKA\", \"iso-a2\": \"LK\", \"woe-id\": \"23424778\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6576, 6765], [6600, 6755], [6632, 6703], [6631, 6674], [6596, 6654], [6581, 6660], [6572, 6717], [6584, 6759], [6576, 6765]]] } }, { \"type\": \"Feature\", \"id\": \"KM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.41, \"hc-middle-y\": 0.51, \"hc-key\": \"km\", \"hc-a2\": \"KM\", \"name\": \"Comoros\", \"labelrank\": \"6\", \"country-abbrev\": \"Com.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"COM\", \"iso-a2\": \"KM\", \"woe-id\": \"23424786\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5494, 6125], [5487, 6131], [5488, 6142], [5492, 6141], [5494, 6125]]] } }, { \"type\": \"Feature\", \"id\": \"FJ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.44, \"hc-middle-y\": 0.33, \"hc-key\": \"fj\", \"hc-a2\": \"FJ\", \"name\": \"Fiji\", \"labelrank\": \"6\", \"country-abbrev\": \"Fiji\", \"subregion\": \"Melanesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"FJI\", \"iso-a2\": \"FJ\", \"woe-id\": \"23424813\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[9460, 5963], [9494, 5962], [9495, 5978], [9543, 5996], [9494, 5959], [9507, 5951], [9500, 5915], [9490, 5934], [9467, 5939], [9460, 5963]]] } }, { \"type\": \"Feature\", \"id\": \"RU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.56, \"hc-key\": \"ru\", \"hc-a2\": \"RU\", \"name\": \"Russia\", \"labelrank\": \"2\", \"country-abbrev\": \"Rus.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"RUS\", \"iso-a2\": \"RU\", \"woe-id\": \"23424936\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[8620, 7917], [8587, 7905], [8565, 7884], [8519, 7862], [8540, 7887], [8614, 7923], [8620, 7917]]], [[[5691, 8936], [5646, 8924], [5637, 8953], [5666, 8965], [5693, 8952], [5691, 8936]]], [[[5965, 9010], [5999, 8987], [5972, 8976], [5942, 8995], [5965, 9010]]], [[[6315, 9176], [6331, 9169], [6278, 9157], [6280, 9178], [6315, 9176]]], [[[7568, 9234], [7551, 9218], [7512, 9233], [7528, 9245], [7568, 9234]]], [[[5900, 9603], [5857, 9597], [5866, 9613], [5939, 9622], [5950, 9582], [5900, 9603]]], [[[5825, 9623], [5819, 9605], [5766, 9602], [5774, 9618], [5819, 9609], [5825, 9623]]], [[[5870, 9665], [5945, 9662], [5893, 9635], [5861, 9633], [5807, 9645], [5870, 9665]]], [[[6124, 9673], [6147, 9654], [6077, 9637], [6060, 9648], [6104, 9658], [6124, 9673]]], [[[5922, 9709], [5937, 9692], [5916, 9668], [5861, 9672], [5922, 9709]]], [[[5391, 7846], [5361, 7874], [5289, 7912], [5317, 7918], [5327, 7959], [5370, 7979], [5338, 7983], [5356, 8011], [5384, 8010], [5382, 8045], [5395, 8064], [5367, 8087], [5315, 8109], [5262, 8106], [5245, 8140], [5218, 8142], [5225, 8161], [5207, 8185], [5147, 8175], [5131, 8212], [5175, 8229], [5146, 8243], [5121, 8317], [5039, 8340], [5024, 8370], [5016, 8399], [5021, 8411], [5024, 8419], [5030, 8439], [5026, 8462], [5030, 8469], [5033, 8474], [5037, 8476], [5037, 8476], [5035, 8477], [5035, 8477], [5035, 8477], [5037, 8476], [5040, 8478], [5038, 8482], [5035, 8483], [5037, 8497], [5090, 8514], [5029, 8531], [5071, 8562], [5131, 8620], [5141, 8638], [5094, 8678], [5111, 8691], [5082, 8737], [5091, 8792], [5067, 8828], [5095, 8871], [5055, 8897], [5048, 8914], [5063, 8940], [5093, 8957], [5119, 8981], [5155, 8989], [5187, 8976], [5154, 8968], [5271, 8947], [5422, 8870], [5431, 8846], [5404, 8806], [5372, 8793], [5330, 8791], [5199, 8822], [5161, 8842], [5242, 8773], [5227, 8755], [5241, 8731], [5264, 8746], [5302, 8746], [5378, 8716], [5404, 8728], [5386, 8767], [5431, 8789], [5468, 8824], [5515, 8780], [5524, 8820], [5504, 8845], [5517, 8900], [5490, 8918], [5567, 8909], [5591, 8879], [5550, 8873], [5538, 8852], [5564, 8831], [5620, 8836], [5629, 8869], [5652, 8873], [5723, 8912], [5790, 8934], [5806, 8904], [5827, 8896], [5866, 8921], [5905, 8916], [5951, 8938], [5975, 8904], [6011, 8945], [5989, 8968], [6007, 8983], [6107, 8967], [6153, 8943], [6199, 8929], [6230, 8904], [6255, 8935], [6236, 8937], [6223, 8964], [6186, 8969], [6202, 9029], [6176, 9027], [6190, 9061], [6236, 9090], [6251, 9138], [6269, 9149], [6328, 9151], [6366, 9139], [6367, 9115], [6336, 9074], [6361, 9051], [6354, 9006], [6358, 8935], [6389, 8913], [6375, 8873], [6358, 8867], [6328, 8819], [6292, 8803], [6343, 8798], [6385, 8827], [6422, 8871], [6414, 8922], [6471, 8938], [6499, 8913], [6493, 8875], [6522, 8899], [6509, 8932], [6445, 8952], [6393, 8949], [6386, 8977], [6409, 9019], [6371, 9068], [6386, 9090], [6428, 9105], [6421, 9150], [6448, 9187], [6481, 9183], [6445, 9141], [6451, 9113], [6436, 9067], [6512, 9052], [6527, 9059], [6469, 9075], [6459, 9094], [6487, 9102], [6506, 9090], [6515, 9116], [6553, 9161], [6560, 9121], [6630, 9083], [6675, 9084], [6646, 9060], [6663, 9044], [6673, 9007], [6690, 9016], [6671, 9058], [6685, 9079], [6643, 9115], [6599, 9130], [6588, 9167], [6594, 9189], [6788, 9206], [6780, 9224], [6737, 9257], [6785, 9249], [6777, 9269], [6809, 9274], [6873, 9307], [6980, 9323], [6962, 9336], [7011, 9336], [7047, 9351], [7033, 9373], [7059, 9393], [7066, 9353], [7049, 9341], [7067, 9325], [7108, 9332], [7138, 9364], [7197, 9366], [7207, 9400], [7268, 9436], [7313, 9439], [7346, 9430], [7326, 9407], [7393, 9388], [7362, 9364], [7404, 9365], [7407, 9378], [7502, 9378], [7543, 9370], [7546, 9346], [7568, 9345], [7578, 9308], [7544, 9323], [7575, 9289], [7467, 9233], [7411, 9192], [7384, 9191], [7360, 9167], [7401, 9165], [7495, 9195], [7457, 9196], [7469, 9214], [7539, 9196], [7561, 9206], [7571, 9185], [7629, 9196], [7719, 9189], [7716, 9172], [7772, 9155], [7853, 9150], [7870, 9168], [7862, 9188], [7901, 9208], [7905, 9196], [7955, 9179], [7974, 9187], [8045, 9157], [8030, 9104], [7998, 9123], [8055, 9053], [8088, 9032], [8108, 9038], [8137, 9093], [8170, 9068], [8195, 9065], [8239, 9079], [8270, 9074], [8322, 9080], [8360, 9070], [8335, 9109], [8345, 9127], [8405, 9143], [8519, 9131], [8564, 9117], [8534, 9111], [8541, 9090], [8572, 9118], [8644, 9108], [8657, 9095], [8626, 9083], [8700, 9063], [8721, 9038], [8764, 9037], [8832, 9050], [8908, 9043], [8943, 9027], [8955, 9004], [8943, 8985], [8984, 8961], [9072, 8979], [9096, 8968], [9158, 8964], [9197, 8992], [9232, 8984], [9225, 8968], [9192, 8975], [9201, 8950], [9238, 8927], [9278, 8941], [9267, 8997], [9413, 8983], [9467, 8971], [9580, 8925], [9584, 8914], [9685, 8870], [9711, 8813], [9723, 8834], [9791, 8834], [9851, 8793], [9826, 8768], [9778, 8763], [9764, 8722], [9776, 8709], [9742, 8703], [9702, 8728], [9668, 8738], [9667, 8757], [9635, 8767], [9589, 8762], [9555, 8796], [9567, 8768], [9556, 8744], [9493, 8721], [9439, 8731], [9486, 8700], [9495, 8707], [9534, 8629], [9519, 8610], [9488, 8621], [9448, 8619], [9352, 8576], [9308, 8545], [9266, 8526], [9261, 8505], [9227, 8532], [9158, 8520], [9133, 8499], [9142, 8528], [9095, 8497], [9060, 8508], [9046, 8484], [9064, 8458], [9090, 8456], [9056, 8438], [9043, 8461], [9011, 8423], [9051, 8406], [9035, 8366], [9052, 8342], [9016, 8339], [9005, 8318], [9016, 8287], [8954, 8259], [8941, 8221], [8912, 8207], [8886, 8153], [8827, 8100], [8811, 8101], [8856, 8131], [8837, 8208], [8820, 8304], [8835, 8366], [8877, 8410], [8923, 8437], [8948, 8468], [9008, 8515], [9010, 8525], [9072, 8567], [9075, 8609], [9107, 8615], [9089, 8628], [9049, 8621], [9040, 8587], [8957, 8532], [8946, 8548], [8962, 8594], [8877, 8587], [8802, 8523], [8776, 8485], [8810, 8470], [8755, 8473], [8696, 8456], [8678, 8483], [8643, 8496], [8619, 8473], [8474, 8481], [8435, 8472], [8385, 8435], [8373, 8412], [8319, 8375], [8287, 8339], [8217, 8288], [8256, 8276], [8261, 8291], [8303, 8293], [8279, 8254], [8297, 8235], [8321, 8264], [8353, 8263], [8401, 8217], [8372, 8113], [8375, 8076], [8364, 8034], [8337, 8008], [8302, 7950], [8237, 7883], [8214, 7850], [8156, 7821], [8116, 7844], [8083, 7807], [8081, 7811], [8078, 7815], [8091, 7827], [8099, 7870], [8090, 7899], [8121, 7913], [8132, 7887], [8146, 7907], [8178, 7951], [8185, 7988], [8204, 8005], [8192, 8031], [8135, 8005], [8093, 8004], [8086, 8027], [8043, 8071], [8005, 8075], [7935, 8210], [7862, 8234], [7790, 8222], [7766, 8201], [7788, 8176], [7768, 8158], [7740, 8107], [7742, 8093], [7699, 8074], [7667, 8086], [7628, 8089], [7596, 8104], [7559, 8077], [7490, 8060], [7425, 8067], [7407, 8090], [7330, 8111], [7280, 8098], [7239, 8117], [7237, 8144], [7139, 8176], [7106, 8132], [7121, 8113], [7093, 8083], [7011, 8094], [7001, 8115], [6945, 8127], [6810, 8061], [6801, 8059], [6795, 8058], [6774, 8077], [6734, 8077], [6680, 8131], [6621, 8121], [6598, 8144], [6577, 8124], [6515, 8222], [6475, 8250], [6479, 8269], [6407, 8235], [6385, 8249], [6316, 8256], [6306, 8305], [6230, 8300], [6227, 8291], [6139, 8266], [6014, 8247], [6020, 8222], [6045, 8216], [6005, 8198], [6015, 8184], [5989, 8167], [6028, 8148], [6025, 8123], [5983, 8125], [5978, 8114], [5943, 8133], [5881, 8134], [5856, 8113], [5821, 8126], [5787, 8152], [5705, 8157], [5648, 8115], [5641, 8085], [5615, 8110], [5596, 8086], [5600, 8062], [5583, 8032], [5602, 8009], [5630, 8008], [5665, 7954], [5617, 7931], [5591, 7892], [5617, 7860], [5612, 7833], [5646, 7791], [5621, 7768], [5582, 7793], [5534, 7823], [5508, 7816], [5475, 7838], [5391, 7846]]], [[[9599, 9071], [9621, 9058], [9607, 9047], [9546, 9044], [9510, 9034], [9513, 9057], [9553, 9077], [9599, 9071]]], [[[8377, 9210], [8419, 9208], [8460, 9187], [8453, 9166], [8373, 9183], [8377, 9210]]], [[[6937, 9577], [6908, 9593], [6985, 9585], [6953, 9568], [6937, 9577]]], [[[5596, 9641], [5637, 9647], [5572, 9620], [5542, 9634], [5596, 9641]]], [[[5995, 9655], [6034, 9667], [6052, 9644], [6016, 9618], [5975, 9619], [5961, 9635], [5995, 9655]]], [[[4790, 8269], [4810, 8280], [4786, 8270], [4786, 8270], [4795, 8288], [4825, 8304], [4827, 8304], [4814, 8290], [4835, 8303], [4881, 8288], [4880, 8266], [4878, 8266], [4790, 8269]]], [[[7022, 9596], [7001, 9593], [6984, 9590], [6920, 9610], [6957, 9625], [6965, 9659], [7046, 9679], [7111, 9638], [7088, 9634], [7088, 9606], [7033, 9597], [7100, 9602], [7123, 9582], [7148, 9593], [7170, 9569], [7154, 9511], [7105, 9510], [7077, 9522], [7024, 9525], [6986, 9559], [7022, 9596]]], [[[8455, 8069], [8434, 8017], [8459, 7961], [8432, 7965], [8421, 7938], [8413, 7964], [8424, 8015], [8417, 8049], [8426, 8138], [8409, 8161], [8411, 8226], [8442, 8239], [8434, 8264], [8456, 8217], [8461, 8152], [8486, 8064], [8455, 8069]]], [[[5879, 9169], [5847, 9116], [5869, 9059], [5914, 9030], [5900, 9017], [5849, 9031], [5841, 9020], [5786, 9037], [5794, 9055], [5774, 9065], [5778, 9046], [5733, 9076], [5731, 9096], [5759, 9104], [5780, 9161], [5834, 9180], [5879, 9169]]], [[[8571, 9292], [8608, 9297], [8629, 9288], [8681, 9280], [8673, 9266], [8601, 9260], [8539, 9286], [8548, 9307], [8571, 9292]]], [[[8399, 9343], [8434, 9324], [8476, 9322], [8518, 9303], [8477, 9274], [8433, 9294], [8437, 9278], [8468, 9268], [8429, 9262], [8413, 9272], [8329, 9252], [8296, 9263], [8266, 9294], [8241, 9299], [8224, 9294], [8230, 9324], [8269, 9309], [8282, 9329], [8326, 9346], [8388, 9309], [8399, 9343]]], [[[6210, 9395], [6246, 9386], [6250, 9367], [6197, 9339], [6025, 9292], [5959, 9239], [5931, 9247], [5933, 9224], [5888, 9170], [5837, 9181], [5814, 9174], [5796, 9199], [5830, 9212], [5852, 9252], [5897, 9296], [5931, 9307], [5947, 9326], [6017, 9337], [6017, 9349], [6055, 9344], [6104, 9352], [6210, 9395]]], [[[7197, 9509], [7203, 9532], [7240, 9552], [7265, 9544], [7257, 9526], [7285, 9533], [7322, 9512], [7352, 9475], [7326, 9488], [7282, 9474], [7207, 9470], [7173, 9455], [7150, 9460], [7197, 9509]]], [[[5588, 9611], [5677, 9634], [5658, 9643], [5699, 9660], [5738, 9636], [5680, 9624], [5695, 9590], [5674, 9601], [5588, 9611]]]] } }, { \"type\": \"Feature\", \"id\": \"VA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.61, \"hc-middle-y\": 0.44, \"hc-key\": \"va\", \"hc-a2\": \"VA\", \"name\": \"Vatican\", \"labelrank\": \"6\", \"country-abbrev\": \"Vat.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"VAT\", \"iso-a2\": \"VA\", \"woe-id\": \"23424986\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4574, 7793], [4574, 7793], [4574, 7793], [4574, 7793], [4574, 7793]]] } }, { \"type\": \"Feature\", \"id\": \"SM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.42, \"hc-key\": \"sm\", \"hc-a2\": \"SM\", \"name\": \"San Marino\", \"labelrank\": \"6\", \"country-abbrev\": \"S.M.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"SMR\", \"iso-a2\": \"SM\", \"woe-id\": \"23424947\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4574, 7865], [4572, 7866], [4573, 7867], [4574, 7868], [4574, 7865]]] } }, { \"type\": \"Feature\", \"id\": \"KZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.46, \"hc-key\": \"kz\", \"hc-a2\": \"KZ\", \"name\": \"Kazakhstan\", \"labelrank\": \"3\", \"country-abbrev\": \"Kaz.\", \"subregion\": \"Central Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"KAZ\", \"iso-a2\": \"KZ\", \"woe-id\": \"-90\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5991, 7941], [5960, 7930], [5968, 7910], [5947, 7922], [5952, 7928], [5943, 7925], [5865, 7905], [5865, 7773], [5851, 7770], [5812, 7808], [5792, 7800], [5792, 7800], [5792, 7800], [5792, 7800], [5780, 7795], [5780, 7795], [5780, 7795], [5780, 7795], [5760, 7788], [5768, 7823], [5745, 7826], [5697, 7892], [5729, 7917], [5763, 7920], [5779, 7942], [5779, 7975], [5750, 7972], [5724, 7983], [5665, 7954], [5630, 8008], [5602, 8009], [5583, 8032], [5600, 8062], [5596, 8086], [5615, 8110], [5641, 8085], [5648, 8115], [5705, 8157], [5787, 8152], [5821, 8126], [5856, 8113], [5881, 8134], [5943, 8133], [5978, 8114], [5983, 8125], [6025, 8123], [6028, 8148], [5989, 8167], [6015, 8184], [6005, 8198], [6045, 8216], [6020, 8222], [6014, 8247], [6139, 8266], [6227, 8291], [6230, 8300], [6306, 8305], [6316, 8256], [6385, 8249], [6407, 8235], [6479, 8269], [6475, 8250], [6515, 8222], [6577, 8124], [6598, 8144], [6621, 8121], [6680, 8131], [6734, 8077], [6774, 8077], [6795, 8058], [6750, 8032], [6741, 7981], [6719, 7972], [6668, 7986], [6646, 7924], [6581, 7906], [6602, 7838], [6584, 7803], [6531, 7828], [6435, 7827], [6405, 7842], [6385, 7812], [6336, 7826], [6309, 7805], [6253, 7774], [6240, 7747], [6220, 7768], [6183, 7768], [6178, 7796], [6163, 7797], [6157, 7828], [6131, 7858], [6045, 7850], [6015, 7882], [5986, 7899], [5977, 7930], [5996, 7939], [5991, 7941]], [[5995, 7942], [5997, 7942], [5997, 7940], [6021, 7950], [5995, 7942]]], [[[5693, 7900], [5687, 7903], [5689, 7907], [5698, 7908], [5693, 7900]]]] } }, { \"type\": \"Feature\", \"id\": \"AZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.83, \"hc-middle-y\": 0.51, \"hc-key\": \"az\", \"hc-a2\": \"AZ\", \"name\": \"Azerbaijan\", \"labelrank\": \"5\", \"country-abbrev\": \"Aze.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"AZE\", \"iso-a2\": \"AZ\", \"woe-id\": \"23424741\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5540, 7763], [5539, 7762], [5538, 7764], [5540, 7764], [5540, 7763]]], [[[5546, 7760], [5545, 7760], [5545, 7761], [5545, 7761], [5546, 7760]]], [[[5554, 7747], [5554, 7749], [5556, 7749], [5555, 7747], [5554, 7747]]], [[[5534, 7714], [5533, 7716], [5563, 7710], [5573, 7687], [5552, 7692], [5534, 7714]]], [[[5582, 7793], [5621, 7768], [5646, 7791], [5676, 7748], [5654, 7672], [5629, 7685], [5627, 7716], [5584, 7687], [5558, 7727], [5568, 7734], [5539, 7771], [5584, 7763], [5582, 7793]]]] } }, { \"type\": \"Feature\", \"id\": \"TJ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.28, \"hc-middle-y\": 0.56, \"hc-key\": \"tj\", \"hc-a2\": \"TJ\", \"name\": \"Tajikistan\", \"labelrank\": \"4\", \"country-abbrev\": \"Tjk.\", \"subregion\": \"Central Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"TJK\", \"iso-a2\": \"TJ\", \"woe-id\": \"23424961\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[6300, 7759], [6300, 7759], [6298, 7762], [6299, 7761], [6300, 7759]]], [[[6300, 7721], [6302, 7720], [6299, 7718], [6296, 7722], [6300, 7721]]], [[[6389, 7707], [6395, 7677], [6423, 7675], [6426, 7631], [6379, 7639], [6329, 7613], [6329, 7653], [6299, 7669], [6285, 7641], [6259, 7626], [6215, 7629], [6232, 7665], [6225, 7691], [6203, 7699], [6235, 7710], [6264, 7754], [6295, 7762], [6310, 7734], [6280, 7734], [6261, 7709], [6325, 7713], [6348, 7698], [6389, 7707]]]] } }, { \"type\": \"Feature\", \"id\": \"LS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.45, \"hc-key\": \"ls\", \"hc-a2\": \"LS\", \"name\": \"Lesotho\", \"labelrank\": \"6\", \"country-abbrev\": \"Les.\", \"subregion\": \"Southern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"LSO\", \"iso-a2\": \"LS\", \"woe-id\": \"23424880\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5040, 5608], [5054, 5613], [5078, 5588], [5037, 5545], [5006, 5579], [5040, 5608]]] } }, { \"type\": \"Feature\", \"id\": \"UZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.53, \"hc-key\": \"uz\", \"hc-a2\": \"UZ\", \"name\": \"Uzbekistan\", \"labelrank\": \"3\", \"country-abbrev\": \"Uzb.\", \"subregion\": \"Central Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"UZB\", \"iso-a2\": \"UZ\", \"woe-id\": \"23424980\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[6333, 7723], [6332, 7723], [6331, 7724], [6334, 7726], [6333, 7723]]], [[[6316, 7728], [6317, 7722], [6312, 7722], [6310, 7729], [6316, 7728]]], [[[5968, 7910], [5961, 7895], [5982, 7876], [5986, 7899], [6015, 7882], [6045, 7850], [6131, 7858], [6157, 7828], [6163, 7797], [6178, 7796], [6183, 7768], [6220, 7768], [6240, 7747], [6253, 7774], [6309, 7805], [6286, 7782], [6323, 7766], [6333, 7777], [6374, 7754], [6331, 7731], [6310, 7734], [6295, 7762], [6264, 7754], [6235, 7710], [6203, 7699], [6225, 7691], [6232, 7665], [6215, 7629], [6200, 7629], [6178, 7635], [6179, 7658], [6151, 7665], [6057, 7726], [6043, 7761], [5987, 7775], [5981, 7807], [5943, 7825], [5915, 7802], [5908, 7809], [5898, 7794], [5896, 7770], [5865, 7773], [5865, 7905], [5943, 7925], [5934, 7884], [5947, 7922], [5968, 7910]], [[6300, 7759], [6299, 7761], [6298, 7762], [6300, 7759], [6300, 7759]]]] } }, { \"type\": \"Feature\", \"id\": \"MA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.60, \"hc-middle-y\": 0.21, \"hc-key\": \"ma\", \"hc-a2\": \"MA\", \"name\": \"Morocco\", \"labelrank\": \"3\", \"country-abbrev\": \"Mor.\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"MAR\", \"iso-a2\": \"MA\", \"woe-id\": \"23424893\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4117, 7564], [4118, 7565], [4119, 7560], [4138, 7558], [4151, 7547], [4154, 7497], [4173, 7473], [4167, 7459], [4129, 7460], [4095, 7444], [4096, 7414], [4033, 7378], [3977, 7371], [3946, 7348], [3946, 7316], [3943, 7298], [3915, 7290], [3866, 7291], [3847, 7264], [3835, 7226], [3788, 7182], [3782, 7148], [3764, 7121], [3699, 7120], [3740, 7201], [3762, 7222], [3774, 7267], [3800, 7285], [3820, 7324], [3863, 7337], [3890, 7358], [3919, 7404], [3912, 7436], [3929, 7475], [3951, 7498], [4002, 7523], [4028, 7582], [4044, 7586], [4044, 7585], [4045, 7584], [4074, 7560], [4116, 7566], [4117, 7566], [4117, 7564]]] } }, { \"type\": \"Feature\", \"id\": \"CO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.54, \"hc-key\": \"co\", \"hc-a2\": \"CO\", \"name\": \"Colombia\", \"labelrank\": \"2\", \"country-abbrev\": \"Col.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"COL\", \"iso-a2\": \"CO\", \"woe-id\": \"23424787\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1865, 6521], [1868, 6543], [1894, 6559], [1916, 6592], [1909, 6611], [1909, 6673], [1892, 6692], [1914, 6713], [1908, 6735], [1920, 6731], [1960, 6758], [1963, 6791], [2005, 6815], [2029, 6813], [2082, 6847], [2087, 6830], [2068, 6824], [2040, 6787], [2037, 6753], [2056, 6726], [2064, 6688], [2123, 6685], [2143, 6659], [2201, 6662], [2190, 6612], [2207, 6580], [2191, 6564], [2210, 6549], [2219, 6515], [2206, 6540], [2181, 6529], [2131, 6529], [2125, 6474], [2143, 6437], [2128, 6354], [2105, 6367], [2125, 6399], [2096, 6414], [2056, 6406], [2032, 6413], [2019, 6442], [1970, 6476], [1940, 6492], [1905, 6498], [1865, 6521]]] } }, { \"type\": \"Feature\", \"id\": \"TL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.65, \"hc-middle-y\": 0.36, \"hc-key\": \"tl\", \"hc-a2\": \"TL\", \"name\": \"East Timor\", \"labelrank\": \"5\", \"country-abbrev\": \"T.L.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"TLS\", \"iso-a2\": \"TL\", \"woe-id\": \"23424968\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7885, 6203], [7890, 6206], [7897, 6207], [7891, 6198], [7885, 6203]]], [[[7911, 6214], [7918, 6224], [7972, 6233], [7957, 6214], [7915, 6198], [7912, 6206], [7911, 6214]]]] } }, { \"type\": \"Feature\", \"id\": \"TZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"tz\", \"hc-a2\": \"TZ\", \"name\": \"United Republic of Tanzania\", \"labelrank\": \"3\", \"country-abbrev\": \"Tanz.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"TZA\", \"iso-a2\": \"TZ\", \"woe-id\": \"23424973\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5242, 6136], [5241, 6138], [5240, 6141], [5240, 6141], [5236, 6143], [5235, 6145], [5235, 6145], [5234, 6146], [5227, 6185], [5222, 6192], [5219, 6195], [5219, 6195], [5216, 6197], [5215, 6197], [5215, 6198], [5211, 6196], [5210, 6191], [5195, 6195], [5181, 6201], [5153, 6211], [5129, 6225], [5093, 6304], [5084, 6347], [5118, 6383], [5111, 6408], [5119, 6432], [5108, 6447], [5119, 6449], [5147, 6449], [5147, 6448], [5148, 6449], [5149, 6449], [5151, 6407], [5189, 6405], [5215, 6448], [5321, 6389], [5325, 6371], [5367, 6341], [5387, 6324], [5371, 6310], [5378, 6289], [5372, 6221], [5404, 6169], [5316, 6132], [5242, 6136]]] } }, { \"type\": \"Feature\", \"id\": \"AR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.27, \"hc-key\": \"ar\", \"hc-a2\": \"AR\", \"name\": \"Argentina\", \"labelrank\": \"2\", \"country-abbrev\": \"Arg.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"ARG\", \"iso-a2\": \"AR\", \"woe-id\": \"23424747\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2167, 4673], [2169, 4670], [2167, 4670], [2167, 4673]]], [[[2584, 5708], [2604, 5706], [2606, 5658], [2549, 5623], [2494, 5561], [2477, 5505], [2477, 5487], [2466, 5426], [2509, 5387], [2501, 5373], [2522, 5338], [2495, 5295], [2451, 5277], [2398, 5267], [2362, 5269], [2354, 5201], [2310, 5191], [2278, 5207], [2273, 5163], [2287, 5146], [2312, 5158], [2316, 5134], [2292, 5143], [2292, 5126], [2265, 5101], [2257, 5052], [2239, 5053], [2206, 5030], [2197, 5010], [2222, 4978], [2246, 4976], [2246, 4939], [2199, 4902], [2189, 4865], [2160, 4852], [2151, 4826], [2173, 4772], [2128, 4786], [2070, 4787], [2054, 4804], [2058, 4839], [2032, 4835], [2020, 4882], [2059, 4928], [2051, 4944], [2070, 4970], [2088, 5042], [2066, 5062], [2077, 5092], [2063, 5125], [2075, 5158], [2069, 5206], [2085, 5269], [2101, 5277], [2091, 5311], [2096, 5352], [2115, 5366], [2115, 5397], [2133, 5456], [2109, 5516], [2137, 5618], [2162, 5659], [2177, 5666], [2169, 5733], [2206, 5757], [2210, 5794], [2238, 5826], [2287, 5813], [2295, 5792], [2307, 5819], [2345, 5812], [2394, 5763], [2422, 5757], [2496, 5712], [2465, 5653], [2549, 5649], [2578, 5674], [2584, 5708]]], [[[2167, 4674], [2167, 4761], [2173, 4734], [2207, 4704], [2250, 4679], [2287, 4669], [2229, 4663], [2209, 4666], [2202, 4668], [2167, 4674]]]] } }, { \"type\": \"Feature\", \"id\": \"SA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.53, \"hc-key\": \"sa\", \"hc-a2\": \"SA\", \"name\": \"Saudi Arabia\", \"labelrank\": \"2\", \"country-abbrev\": \"Saud.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"SAU\", \"iso-a2\": \"SA\", \"woe-id\": \"23424938\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5641, 7344], [5655, 7313], [5692, 7284], [5692, 7255], [5712, 7224], [5717, 7218], [5724, 7220], [5726, 7210], [5734, 7208], [5764, 7167], [5842, 7160], [5855, 7137], [5836, 7076], [5747, 7045], [5662, 7034], [5633, 7020], [5611, 6987], [5544, 6998], [5485, 6995], [5474, 6966], [5427, 7036], [5419, 7061], [5381, 7090], [5364, 7117], [5364, 7155], [5345, 7193], [5318, 7209], [5309, 7237], [5249, 7328], [5230, 7330], [5241, 7370], [5274, 7365], [5331, 7407], [5301, 7439], [5366, 7460], [5404, 7453], [5453, 7426], [5530, 7365], [5585, 7362], [5612, 7358], [5641, 7344]]] } }, { \"type\": \"Feature\", \"id\": \"PK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.34, \"hc-middle-y\": 0.64, \"hc-key\": \"pk\", \"hc-a2\": \"PK\", \"name\": \"Pakistan\", \"labelrank\": \"2\", \"country-abbrev\": \"Pak.\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"PAK\", \"iso-a2\": \"PK\", \"woe-id\": \"23424922\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6416, 7624], [6459, 7605], [6482, 7577], [6490, 7559], [6453, 7539], [6410, 7548], [6393, 7534], [6400, 7495], [6438, 7461], [6415, 7446], [6416, 7427], [6381, 7388], [6368, 7360], [6337, 7325], [6295, 7328], [6265, 7289], [6313, 7222], [6280, 7205], [6247, 7208], [6227, 7195], [6203, 7202], [6173, 7246], [6088, 7238], [6032, 7238], [6039, 7270], [6076, 7283], [6067, 7334], [6041, 7344], [6010, 7386], [6058, 7372], [6106, 7371], [6168, 7385], [6173, 7421], [6226, 7450], [6261, 7454], [6268, 7491], [6290, 7499], [6281, 7523], [6313, 7524], [6330, 7562], [6316, 7590], [6357, 7617], [6416, 7624]]] } }, { \"type\": \"Feature\", \"id\": \"YE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.75, \"hc-key\": \"ye\", \"hc-a2\": \"YE\", \"name\": \"Yemen\", \"labelrank\": \"3\", \"country-abbrev\": \"Yem.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"YEM\", \"iso-a2\": \"YE\", \"woe-id\": \"23425002\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5747, 7045], [5769, 6994], [5780, 6974], [5754, 6943], [5675, 6916], [5649, 6895], [5629, 6896], [5590, 6877], [5564, 6875], [5508, 6852], [5494, 6859], [5472, 6941], [5474, 6966], [5485, 6995], [5544, 6998], [5611, 6987], [5633, 7020], [5662, 7034], [5747, 7045]]] } }, { \"type\": \"Feature\", \"id\": \"AE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.59, \"hc-middle-y\": 0.65, \"hc-key\": \"ae\", \"hc-a2\": \"AE\", \"name\": \"United Arab Emirates\", \"labelrank\": \"4\", \"country-abbrev\": \"U.A.E.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"ARE\", \"iso-a2\": \"AE\", \"woe-id\": \"23424738\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5874, 7251], [5877, 7248], [5877, 7231], [5860, 7228], [5842, 7160], [5764, 7167], [5734, 7208], [5810, 7205], [5868, 7265], [5870, 7253], [5874, 7251]], [[5874, 7239], [5876, 7241], [5873, 7241], [5873, 7238], [5874, 7239]]] } }, { \"type\": \"Feature\", \"id\": \"KE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.87, \"hc-middle-y\": 0.70, \"hc-key\": \"ke\", \"hc-a2\": \"KE\", \"name\": \"Kenya\", \"labelrank\": \"2\", \"country-abbrev\": \"Ken.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"KEN\", \"iso-a2\": \"KE\", \"woe-id\": \"23424863\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5367, 6341], [5325, 6371], [5321, 6389], [5215, 6448], [5220, 6471], [5213, 6486], [5242, 6527], [5240, 6552], [5212, 6603], [5255, 6627], [5270, 6615], [5297, 6609], [5335, 6585], [5377, 6579], [5414, 6605], [5447, 6596], [5420, 6562], [5420, 6453], [5437, 6429], [5396, 6397], [5367, 6341]]] } }, { \"type\": \"Feature\", \"id\": \"PE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.69, \"hc-middle-y\": 0.71, \"hc-key\": \"pe\", \"hc-a2\": \"PE\", \"name\": \"Peru\", \"labelrank\": \"2\", \"country-abbrev\": \"Peru\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"PER\", \"iso-a2\": \"PE\", \"woe-id\": \"23424919\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1970, 6476], [2019, 6442], [2032, 6413], [2056, 6406], [2096, 6414], [2125, 6399], [2105, 6367], [2128, 6354], [2103, 6356], [2040, 6327], [2034, 6290], [2007, 6256], [2061, 6183], [2091, 6185], [2111, 6200], [2108, 6153], [2139, 6155], [2166, 6108], [2153, 6073], [2160, 6058], [2145, 6017], [2126, 6008], [2153, 5996], [2155, 5997], [2157, 5996], [2153, 5988], [2155, 5986], [2137, 5964], [2141, 5957], [2128, 5935], [2115, 5932], [2082, 5964], [1973, 6022], [1940, 6061], [1942, 6083], [1900, 6144], [1860, 6236], [1831, 6278], [1797, 6299], [1793, 6354], [1820, 6379], [1815, 6358], [1858, 6331], [1879, 6379], [1928, 6403], [1961, 6433], [1970, 6476]]] } }, { \"type\": \"Feature\", \"id\": \"DO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.38, \"hc-key\": \"do\", \"hc-a2\": \"DO\", \"name\": \"Dominican Republic\", \"labelrank\": \"5\", \"country-abbrev\": \"Dom. Rep.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"DOM\", \"iso-a2\": \"DO\", \"woe-id\": \"23424800\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2070, 7030], [2070, 7030], [2069, 7031], [2069, 7031], [2067, 7033], [2076, 7038], [2075, 7067], [2097, 7074], [2128, 7066], [2138, 7048], [2175, 7035], [2159, 7028], [2106, 7028], [2085, 7003], [2074, 7016], [2076, 7025], [2070, 7030]]] } }, { \"type\": \"Feature\", \"id\": \"HT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.82, \"hc-middle-y\": 0.96, \"hc-key\": \"ht\", \"hc-a2\": \"HT\", \"name\": \"Haiti\", \"labelrank\": \"5\", \"country-abbrev\": \"Haiti\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"HTI\", \"iso-a2\": \"HT\", \"woe-id\": \"23424839\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2070, 7030], [2069, 7031], [2069, 7031], [2069, 7031], [2070, 7030]]], [[[2075, 7067], [2076, 7038], [2067, 7033], [2068, 7030], [2070, 7030], [2076, 7025], [2074, 7016], [2028, 7023], [2011, 7016], [2000, 7036], [2046, 7028], [2046, 7059], [2025, 7070], [2075, 7067]]]] } }, { \"type\": \"Feature\", \"id\": \"PG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.14, \"hc-middle-y\": 0.50, \"hc-key\": \"pg\", \"hc-a2\": \"PG\", \"name\": \"Papua New Guinea\", \"labelrank\": \"2\", \"country-abbrev\": \"P.N.G.\", \"subregion\": \"Melanesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"PNG\", \"iso-a2\": \"PG\", \"woe-id\": \"23424926\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[8388, 6210], [8388, 6275], [8388, 6402], [8478, 6367], [8493, 6366], [8531, 6335], [8530, 6317], [8580, 6303], [8592, 6281], [8565, 6279], [8572, 6258], [8600, 6241], [8632, 6198], [8684, 6195], [8676, 6166], [8595, 6178], [8568, 6199], [8539, 6240], [8470, 6255], [8460, 6214], [8437, 6203], [8388, 6210]]], [[[8654, 6406], [8646, 6432], [8662, 6408], [8716, 6383], [8749, 6353], [8741, 6336], [8723, 6373], [8654, 6406]]], [[[8645, 6292], [8598, 6309], [8685, 6319], [8703, 6332], [8701, 6355], [8727, 6351], [8719, 6320], [8669, 6294], [8645, 6292]]]] } }, { \"type\": \"Feature\", \"id\": \"AO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.67, \"hc-key\": \"ao\", \"hc-a2\": \"AO\", \"name\": \"Angola\", \"labelrank\": \"3\", \"country-abbrev\": \"Ang.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"AGO\", \"iso-a2\": \"AO\", \"woe-id\": \"23424745\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4566, 6309], [4567, 6317], [4560, 6331], [4583, 6349], [4592, 6342], [4573, 6330], [4566, 6309]]], [[[4898, 5953], [4821, 5941], [4761, 5950], [4752, 5961], [4618, 5960], [4595, 5974], [4553, 5965], [4553, 6009], [4575, 6081], [4609, 6116], [4613, 6163], [4590, 6210], [4601, 6232], [4568, 6298], [4595, 6306], [4697, 6304], [4708, 6263], [4726, 6239], [4778, 6242], [4783, 6272], [4850, 6264], [4851, 6201], [4862, 6185], [4864, 6146], [4915, 6157], [4916, 6093], [4856, 6093], [4856, 5998], [4898, 5953]]]] } }, { \"type\": \"Feature\", \"id\": \"KH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.84, \"hc-middle-y\": 0.49, \"hc-key\": \"kh\", \"hc-a2\": \"KH\", \"name\": \"Cambodia\", \"labelrank\": \"3\", \"country-abbrev\": \"Camb.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"KHM\", \"iso-a2\": \"KH\", \"woe-id\": \"23424776\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7395, 6915], [7395, 6844], [7342, 6805], [7304, 6787], [7279, 6789], [7258, 6824], [7241, 6881], [7280, 6907], [7325, 6904], [7374, 6904], [7395, 6915]]] } }, { \"type\": \"Feature\", \"id\": \"VN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.59, \"hc-middle-y\": 0.89, \"hc-key\": \"vn\", \"hc-a2\": \"VN\", \"name\": \"Vietnam\", \"labelrank\": \"2\", \"country-abbrev\": \"Viet.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"VNM\", \"iso-a2\": \"VN\", \"woe-id\": \"23424984\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7304, 6787], [7342, 6805], [7395, 6844], [7395, 6915], [7399, 6932], [7365, 6984], [7311, 7039], [7286, 7055], [7319, 7079], [7292, 7106], [7264, 7103], [7260, 7125], [7234, 7150], [7245, 7162], [7289, 7154], [7329, 7180], [7372, 7161], [7366, 7149], [7409, 7122], [7377, 7105], [7350, 7076], [7338, 7046], [7368, 6999], [7432, 6936], [7452, 6861], [7439, 6815], [7387, 6786], [7371, 6790], [7364, 6761], [7313, 6739], [7314, 6781], [7304, 6787]]] } }, { \"type\": \"Feature\", \"id\": \"MZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.83, \"hc-middle-y\": 0.28, \"hc-key\": \"mz\", \"hc-a2\": \"MZ\", \"name\": \"Mozambique\", \"labelrank\": \"3\", \"country-abbrev\": \"Moz.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MOZ\", \"iso-a2\": \"MZ\", \"woe-id\": \"23424902\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5238, 6078], [5234, 6118], [5242, 6136], [5316, 6132], [5404, 6169], [5416, 6039], [5388, 5991], [5305, 5946], [5239, 5885], [5233, 5868], [5258, 5816], [5246, 5739], [5205, 5723], [5169, 5696], [5180, 5668], [5164, 5667], [5157, 5668], [5155, 5685], [5152, 5696], [5153, 5744], [5133, 5807], [5166, 5841], [5184, 5880], [5176, 5898], [5185, 5932], [5182, 5982], [5106, 6014], [5101, 6034], [5189, 6063], [5202, 6045], [5223, 6052], [5220, 6006], [5247, 5987], [5266, 6002], [5268, 6044], [5238, 6078]]] } }, { \"type\": \"Feature\", \"id\": \"CR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.55, \"hc-middle-y\": 0.31, \"hc-key\": \"cr\", \"hc-a2\": \"CR\", \"name\": \"Costa Rica\", \"labelrank\": \"5\", \"country-abbrev\": \"C.R.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"CRI\", \"iso-a2\": \"CR\", \"woe-id\": \"23424791\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[1722, 6802], [1727, 6789], [1754, 6762], [1740, 6726], [1740, 6726], [1736, 6734], [1656, 6785], [1661, 6807], [1701, 6804], [1722, 6802]]], [[[1744, 6716], [1739, 6725], [1740, 6725], [1740, 6725], [1744, 6716]]]] } }, { \"type\": \"Feature\", \"id\": \"BJ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.49, \"hc-key\": \"bj\", \"hc-a2\": \"BJ\", \"name\": \"Benin\", \"labelrank\": \"5\", \"country-abbrev\": \"Benin\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"BEN\", \"iso-a2\": \"BJ\", \"woe-id\": \"23424764\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4311, 6825], [4318, 6792], [4286, 6746], [4284, 6667], [4260, 6664], [4252, 6662], [4252, 6746], [4231, 6804], [4247, 6818], [4275, 6831], [4288, 6846], [4311, 6825]]] } }, { \"type\": \"Feature\", \"id\": \"NG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.36, \"hc-middle-y\": 0.33, \"hc-key\": \"ng\", \"hc-a2\": \"NG\", \"name\": \"Nigeria\", \"labelrank\": \"2\", \"country-abbrev\": \"Nigeria\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"NGA\", \"iso-a2\": \"NG\", \"woe-id\": \"23424908\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4284, 6667], [4286, 6746], [4318, 6792], [4311, 6825], [4326, 6878], [4368, 6891], [4410, 6864], [4436, 6874], [4490, 6859], [4504, 6872], [4543, 6875], [4574, 6866], [4608, 6885], [4621, 6866], [4639, 6839], [4567, 6725], [4540, 6669], [4518, 6689], [4466, 6651], [4459, 6621], [4388, 6605], [4370, 6615], [4335, 6666], [4284, 6667]]] } }, { \"type\": \"Feature\", \"id\": \"IR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.58, \"hc-middle-y\": 0.51, \"hc-key\": \"ir\", \"hc-a2\": \"IR\", \"name\": \"Iran\", \"labelrank\": \"2\", \"country-abbrev\": \"Iran\", \"subregion\": \"Southern Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"IRN\", \"iso-a2\": \"IR\", \"woe-id\": \"23424851\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5532, 7628], [5516, 7656], [5510, 7704], [5534, 7714], [5552, 7692], [5573, 7687], [5580, 7689], [5584, 7687], [5627, 7716], [5629, 7685], [5654, 7672], [5659, 7648], [5694, 7636], [5720, 7614], [5744, 7609], [5807, 7617], [5804, 7634], [5849, 7660], [5902, 7666], [5906, 7656], [5949, 7646], [5995, 7610], [6020, 7608], [6022, 7576], [6001, 7491], [6009, 7439], [6035, 7435], [6038, 7418], [6010, 7386], [6041, 7344], [6067, 7334], [6076, 7283], [6039, 7270], [6032, 7238], [5982, 7242], [5905, 7256], [5896, 7290], [5876, 7301], [5830, 7279], [5729, 7324], [5690, 7397], [5657, 7404], [5644, 7390], [5619, 7423], [5623, 7448], [5611, 7469], [5577, 7487], [5551, 7521], [5579, 7582], [5549, 7589], [5532, 7628]]] } }, { \"type\": \"Feature\", \"id\": \"SV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.55, \"hc-key\": \"sv\", \"hc-a2\": \"SV\", \"name\": \"El Salvador\", \"labelrank\": \"6\", \"country-abbrev\": \"El. S.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"SLV\", \"iso-a2\": \"SV\", \"woe-id\": \"23424807\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1598, 6876], [1569, 6871], [1530, 6886], [1530, 6889], [1552, 6907], [1601, 6889], [1598, 6876]]] } }, { \"type\": \"Feature\", \"id\": \"SL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.48, \"hc-key\": \"sl\", \"hc-a2\": \"SL\", \"name\": \"Sierra Leone\", \"labelrank\": \"4\", \"country-abbrev\": \"S.L.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SLE\", \"iso-a2\": \"SL\", \"woe-id\": \"23424946\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3863, 6683], [3820, 6702], [3809, 6746], [3833, 6770], [3870, 6774], [3899, 6729], [3889, 6708], [3863, 6683]]] } }, { \"type\": \"Feature\", \"id\": \"GW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.55, \"hc-middle-y\": 0.49, \"hc-key\": \"gw\", \"hc-a2\": \"GW\", \"name\": \"Guinea Bissau\", \"labelrank\": \"6\", \"country-abbrev\": \"GnB.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GNB\", \"iso-a2\": \"GW\", \"woe-id\": \"23424929\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3758, 6803], [3732, 6811], [3708, 6844], [3753, 6854], [3797, 6854], [3797, 6825], [3767, 6819], [3758, 6803]]] } }, { \"type\": \"Feature\", \"id\": \"HR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.35, \"hc-middle-y\": 0.59, \"hc-key\": \"hr\", \"hc-a2\": \"HR\", \"name\": \"Croatia\", \"labelrank\": \"6\", \"country-abbrev\": \"Cro.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"HRV\", \"iso-a2\": \"HR\", \"woe-id\": \"23424843\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4753, 7811], [4732, 7826], [4728, 7828], [4734, 7826], [4751, 7816], [4751, 7814], [4753, 7811]]], [[[4607, 7923], [4659, 7921], [4668, 7949], [4694, 7960], [4719, 7940], [4765, 7939], [4769, 7910], [4768, 7900], [4706, 7915], [4672, 7911], [4685, 7876], [4726, 7830], [4699, 7837], [4645, 7875], [4645, 7908], [4619, 7898], [4607, 7923]]]] } }, { \"type\": \"Feature\", \"id\": \"BZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.53, \"hc-middle-y\": 0.50, \"hc-key\": \"bz\", \"hc-a2\": \"BZ\", \"name\": \"Belize\", \"labelrank\": \"6\", \"country-abbrev\": \"Belize\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"BLZ\", \"iso-a2\": \"BZ\", \"woe-id\": \"23424760\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1558, 7009], [1567, 7012], [1583, 7030], [1586, 6984], [1565, 6951], [1556, 6951], [1558, 7009]]] } }, { \"type\": \"Feature\", \"id\": \"ZA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.36, \"hc-middle-y\": 0.70, \"hc-key\": \"za\", \"hc-a2\": \"ZA\", \"name\": \"South Africa\", \"labelrank\": \"2\", \"country-abbrev\": \"S.Af.\", \"subregion\": \"Southern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"ZAF\", \"iso-a2\": \"ZA\", \"woe-id\": \"23424942\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5157, 5668], [5164, 5667], [5180, 5668], [5165, 5613], [5129, 5581], [5106, 5539], [5061, 5492], [5008, 5451], [4942, 5430], [4874, 5436], [4854, 5424], [4787, 5410], [4753, 5441], [4733, 5474], [4746, 5480], [4744, 5511], [4717, 5555], [4693, 5613], [4711, 5630], [4720, 5608], [4771, 5600], [4797, 5617], [4797, 5734], [4822, 5690], [4818, 5666], [4847, 5667], [4878, 5695], [4887, 5716], [4941, 5700], [4963, 5706], [4972, 5734], [5000, 5749], [5006, 5769], [5041, 5799], [5075, 5814], [5104, 5809], [5133, 5807], [5153, 5744], [5152, 5696], [5137, 5702], [5118, 5682], [5128, 5656], [5157, 5668]], [[5040, 5608], [5006, 5579], [5037, 5545], [5078, 5588], [5054, 5613], [5040, 5608]]] } }, { \"type\": \"Feature\", \"id\": \"CF\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.47, \"hc-middle-y\": 0.46, \"hc-key\": \"cf\", \"hc-a2\": \"CF\", \"name\": \"Central African Republic\", \"labelrank\": \"4\", \"country-abbrev\": \"C.A.R.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"CAF\", \"iso-a2\": \"CF\", \"woe-id\": \"23424792\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4882, 6802], [4906, 6770], [4901, 6738], [4921, 6735], [4956, 6696], [4987, 6675], [4988, 6658], [5018, 6628], [4963, 6637], [4872, 6602], [4815, 6609], [4789, 6630], [4754, 6606], [4757, 6581], [4722, 6588], [4696, 6581], [4685, 6545], [4682, 6562], [4654, 6590], [4631, 6657], [4663, 6701], [4702, 6702], [4756, 6716], [4771, 6745], [4810, 6749], [4870, 6804], [4882, 6802]]] } }, { \"type\": \"Feature\", \"id\": \"SD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.38, \"hc-key\": \"sd\", \"hc-a2\": \"SD\", \"name\": \"Sudan\", \"labelrank\": \"3\", \"country-abbrev\": \"Sudan\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SDN\", \"iso-a2\": \"SD\", \"woe-id\": \"-90\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4921, 6735], [4901, 6738], [4906, 6770], [4882, 6802], [4863, 6856], [4859, 6887], [4873, 6898], [4889, 6945], [4916, 6946], [4916, 7061], [4916, 7076], [4945, 7076], [4945, 7138], [5131, 7138], [5299, 7138], [5310, 7102], [5318, 7037], [5350, 7015], [5302, 6987], [5285, 6928], [5288, 6902], [5276, 6855], [5263, 6854], [5238, 6796], [5230, 6801], [5215, 6758], [5189, 6800], [5190, 6840], [5156, 6834], [5166, 6806], [5131, 6768], [5095, 6783], [5060, 6754], [4992, 6760], [4970, 6787], [4948, 6783], [4921, 6735]]] } }, { \"type\": \"Feature\", \"id\": \"CD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.58, \"hc-middle-y\": 0.42, \"hc-key\": \"cd\", \"hc-a2\": \"CD\", \"name\": \"Democratic Republic of the Congo\", \"labelrank\": \"2\", \"country-abbrev\": \"D.R.C.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"COD\", \"iso-a2\": \"CD\", \"woe-id\": \"23424780\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5071, 6380], [5067, 6329], [5079, 6281], [5111, 6236], [5061, 6228], [5045, 6210], [5050, 6201], [5056, 6189], [5046, 6140], [5066, 6112], [5088, 6119], [5088, 6081], [5070, 6080], [5011, 6136], [4996, 6123], [4956, 6134], [4955, 6147], [4925, 6142], [4915, 6157], [4864, 6146], [4862, 6185], [4851, 6201], [4850, 6264], [4783, 6272], [4778, 6242], [4726, 6239], [4708, 6263], [4697, 6304], [4595, 6306], [4573, 6300], [4566, 6309], [4573, 6330], [4592, 6342], [4631, 6353], [4644, 6337], [4685, 6381], [4686, 6416], [4731, 6463], [4740, 6542], [4757, 6581], [4754, 6606], [4789, 6630], [4815, 6609], [4872, 6602], [4963, 6637], [5018, 6628], [5046, 6605], [5088, 6613], [5119, 6582], [5115, 6551], [5132, 6543], [5109, 6523], [5108, 6515], [5093, 6503], [5085, 6476], [5074, 6464], [5084, 6465], [5081, 6452], [5082, 6438], [5075, 6434], [5071, 6429], [5063, 6421], [5061, 6406], [5061, 6400], [5065, 6398], [5072, 6389], [5071, 6380]]] } }, { \"type\": \"Feature\", \"id\": \"KW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.61, \"hc-middle-y\": 0.40, \"hc-key\": \"kw\", \"hc-a2\": \"KW\", \"name\": \"Kuwait\", \"labelrank\": \"6\", \"country-abbrev\": \"Kwt.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"KWT\", \"iso-a2\": \"KW\", \"woe-id\": \"23424870\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5641, 7344], [5612, 7358], [5585, 7362], [5602, 7390], [5627, 7391], [5631, 7370], [5641, 7344]]] } }, { \"type\": \"Feature\", \"id\": \"DE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.34, \"hc-key\": \"de\", \"hc-a2\": \"DE\", \"name\": \"Germany\", \"labelrank\": \"2\", \"country-abbrev\": \"Ger.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"DEU\", \"iso-a2\": \"DE\", \"woe-id\": \"23424829\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4477, 8004], [4477, 8003], [4477, 8003], [4477, 8004]]], [[[4461, 8288], [4466, 8289], [4484, 8285], [4544, 8248], [4575, 8271], [4609, 8275], [4620, 8254], [4626, 8249], [4625, 8248], [4625, 8247], [4621, 8251], [4627, 8239], [4623, 8205], [4639, 8194], [4644, 8126], [4575, 8108], [4571, 8083], [4614, 8045], [4582, 8021], [4591, 7997], [4565, 8005], [4530, 7993], [4492, 7999], [4473, 8009], [4477, 8004], [4455, 8001], [4429, 8001], [4447, 8053], [4392, 8072], [4397, 8085], [4386, 8097], [4393, 8105], [4382, 8122], [4393, 8164], [4412, 8180], [4417, 8221], [4422, 8240], [4458, 8233], [4471, 8247], [4461, 8288]]]] } }, { \"type\": \"Feature\", \"id\": \"BE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.40, \"hc-key\": \"be\", \"hc-a2\": \"BE\", \"name\": \"Belgium\", \"labelrank\": \"2\", \"country-abbrev\": \"Belg.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"BEL\", \"iso-a2\": \"BE\", \"woe-id\": \"23424757\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4382, 8122], [4393, 8105], [4386, 8097], [4374, 8088], [4376, 8075], [4327, 8092], [4279, 8135], [4297, 8145], [4303, 8146], [4317, 8140], [4329, 8146], [4331, 8144], [4330, 8146], [4353, 8150], [4382, 8122]]] } }, { \"type\": \"Feature\", \"id\": \"IE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.48, \"hc-key\": \"ie\", \"hc-a2\": \"IE\", \"name\": \"Ireland\", \"labelrank\": \"3\", \"country-abbrev\": \"Ire.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"IRL\", \"iso-a2\": \"IE\", \"woe-id\": \"23424803\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3989, 8295], [3961, 8270], [3987, 8256], [4018, 8256], [4026, 8209], [4015, 8179], [3979, 8174], [3946, 8154], [3913, 8149], [3895, 8167], [3939, 8222], [3907, 8226], [3912, 8265], [3948, 8262], [3958, 8299], [3989, 8295]]] } }, { \"type\": \"Feature\", \"id\": \"KP\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.32, \"hc-middle-y\": 0.63, \"hc-key\": \"kp\", \"hc-a2\": \"KP\", \"name\": \"North Korea\", \"labelrank\": \"3\", \"country-abbrev\": \"N.K.\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"PRK\", \"iso-a2\": \"KP\", \"woe-id\": \"23424865\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8083, 7807], [8051, 7781], [8053, 7755], [7988, 7717], [7986, 7697], [8013, 7678], [7978, 7667], [7963, 7651], [7931, 7658], [7924, 7646], [7907, 7675], [7927, 7702], [7895, 7730], [7943, 7758], [7962, 7785], [8007, 7774], [8004, 7796], [8053, 7812], [8057, 7831], [8078, 7815], [8081, 7811], [8083, 7807]]] } }, { \"type\": \"Feature\", \"id\": \"KR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.54, \"hc-middle-y\": 0.50, \"hc-key\": \"kr\", \"hc-a2\": \"KR\", \"name\": \"South Korea\", \"labelrank\": \"2\", \"country-abbrev\": \"S.K.\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"KOR\", \"iso-a2\": \"KR\", \"woe-id\": \"23424868\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7963, 7651], [7978, 7667], [8013, 7678], [8042, 7632], [8046, 7573], [8021, 7546], [8004, 7553], [7987, 7536], [7955, 7542], [7963, 7651]]] } }, { \"type\": \"Feature\", \"id\": \"GY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.26, \"hc-middle-y\": 0.07, \"hc-key\": \"gy\", \"hc-a2\": \"GY\", \"name\": \"Guyana\", \"labelrank\": \"4\", \"country-abbrev\": \"Guy.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"GUY\", \"iso-a2\": \"GY\", \"woe-id\": \"23424836\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2423, 6732], [2450, 6715], [2507, 6658], [2505, 6641], [2481, 6602], [2528, 6536], [2509, 6538], [2459, 6514], [2431, 6534], [2423, 6558], [2437, 6595], [2424, 6629], [2401, 6632], [2382, 6653], [2387, 6672], [2415, 6689], [2408, 6709], [2423, 6732]]] } }, { \"type\": \"Feature\", \"id\": \"HN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.71, \"hc-middle-y\": 0.09, \"hc-key\": \"hn\", \"hc-a2\": \"HN\", \"name\": \"Honduras\", \"labelrank\": \"5\", \"country-abbrev\": \"Hond.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"HND\", \"iso-a2\": \"HN\", \"woe-id\": \"23424841\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1586, 6946], [1654, 6955], [1702, 6949], [1737, 6924], [1688, 6919], [1660, 6893], [1630, 6887], [1613, 6864], [1607, 6873], [1598, 6876], [1601, 6889], [1552, 6907], [1558, 6926], [1586, 6946]]] } }, { \"type\": \"Feature\", \"id\": \"MM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.17, \"hc-middle-y\": 0.49, \"hc-key\": \"mm\", \"hc-a2\": \"MM\", \"name\": \"Myanmar\", \"labelrank\": \"3\", \"country-abbrev\": \"Myan.\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"MMR\", \"iso-a2\": \"MM\", \"woe-id\": \"23424763\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6942, 7109], [6953, 7116], [6951, 7137], [6969, 7150], [6973, 7200], [6996, 7195], [7023, 7255], [7024, 7278], [7074, 7306], [7092, 7333], [7098, 7343], [7132, 7313], [7133, 7260], [7103, 7234], [7101, 7195], [7130, 7203], [7138, 7175], [7157, 7171], [7146, 7143], [7170, 7139], [7177, 7120], [7206, 7124], [7193, 7117], [7175, 7086], [7128, 7066], [7113, 7070], [7095, 7030], [7137, 6959], [7119, 6918], [7146, 6886], [7161, 6829], [7134, 6785], [7129, 6870], [7106, 6921], [7102, 6963], [7088, 6985], [7036, 6946], [7000, 6955], [7012, 7001], [6993, 7058], [6965, 7077], [6942, 7109]]] } }, { \"type\": \"Feature\", \"id\": \"GA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.36, \"hc-middle-y\": 0.65, \"hc-key\": \"ga\", \"hc-a2\": \"GA\", \"name\": \"Gabon\", \"labelrank\": \"4\", \"country-abbrev\": \"Gabon\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GAB\", \"iso-a2\": \"GA\", \"woe-id\": \"23424822\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4495, 6508], [4540, 6508], [4540, 6543], [4541, 6547], [4599, 6542], [4597, 6515], [4633, 6506], [4614, 6473], [4634, 6461], [4622, 6405], [4573, 6423], [4547, 6410], [4555, 6369], [4534, 6363], [4479, 6425], [4462, 6461], [4479, 6467], [4480, 6495], [4495, 6508]]] } }, { \"type\": \"Feature\", \"id\": \"GQ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.53, \"hc-middle-y\": 0.55, \"hc-key\": \"gq\", \"hc-a2\": \"GQ\", \"name\": \"Equatorial Guinea\", \"labelrank\": \"4\", \"country-abbrev\": \"Eq. G.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GNQ\", \"iso-a2\": \"GQ\", \"woe-id\": \"23424804\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4540, 6543], [4540, 6508], [4495, 6508], [4481, 6514], [4495, 6548], [4500, 6543], [4540, 6543]]] } }, { \"type\": \"Feature\", \"id\": \"NI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.84, \"hc-middle-y\": 0.50, \"hc-key\": \"ni\", \"hc-a2\": \"NI\", \"name\": \"Nicaragua\", \"labelrank\": \"5\", \"country-abbrev\": \"Nic.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"NIC\", \"iso-a2\": \"NI\", \"woe-id\": \"23424915\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1661, 6807], [1603, 6860], [1613, 6864], [1630, 6887], [1660, 6893], [1688, 6919], [1737, 6924], [1715, 6816], [1722, 6802], [1701, 6804], [1661, 6807]]] } }, { \"type\": \"Feature\", \"id\": \"LV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.05, \"hc-middle-y\": 0.36, \"hc-key\": \"lv\", \"hc-a2\": \"LV\", \"name\": \"Latvia\", \"labelrank\": \"5\", \"country-abbrev\": \"Lat.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"LVA\", \"iso-a2\": \"LV\", \"woe-id\": \"23424874\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5016, 8399], [5024, 8370], [5039, 8340], [5023, 8325], [4993, 8320], [4942, 8353], [4929, 8345], [4860, 8352], [4829, 8337], [4829, 8370], [4849, 8401], [4875, 8408], [4907, 8375], [4927, 8386], [4925, 8413], [4954, 8422], [4990, 8398], [5016, 8399]]] } }, { \"type\": \"Feature\", \"id\": \"UG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.16, \"hc-middle-y\": 0.56, \"hc-key\": \"ug\", \"hc-a2\": \"UG\", \"name\": \"Uganda\", \"labelrank\": \"3\", \"country-abbrev\": \"Uga.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"UGA\", \"iso-a2\": \"UG\", \"woe-id\": \"23424974\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5148, 6449], [5148, 6450], [5149, 6449], [5148, 6449]]], [[[5082, 6438], [5081, 6452], [5084, 6465], [5091, 6474], [5085, 6476], [5093, 6503], [5108, 6515], [5136, 6535], [5132, 6543], [5115, 6551], [5119, 6582], [5198, 6589], [5212, 6603], [5240, 6552], [5242, 6527], [5213, 6486], [5171, 6483], [5147, 6449], [5119, 6449], [5108, 6447], [5092, 6435], [5082, 6438]]]] } }, { \"type\": \"Feature\", \"id\": \"MW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.16, \"hc-middle-y\": 0.29, \"hc-key\": \"mw\", \"hc-a2\": \"MW\", \"name\": \"Malawi\", \"labelrank\": \"6\", \"country-abbrev\": \"Mal.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MWI\", \"iso-a2\": \"MW\", \"woe-id\": \"23424889\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5240, 6141], [5240, 6141], [5240, 6141], [5240, 6141]]], [[[5235, 6145], [5235, 6146], [5234, 6146], [5235, 6145], [5235, 6145]]], [[[5222, 6192], [5219, 6195], [5219, 6195], [5222, 6192]]], [[[5216, 6197], [5215, 6198], [5215, 6197], [5216, 6197]]], [[[5181, 6201], [5195, 6195], [5210, 6191], [5223, 6133], [5222, 6082], [5238, 6078], [5268, 6044], [5266, 6002], [5247, 5987], [5220, 6006], [5223, 6052], [5202, 6045], [5189, 6063], [5178, 6072], [5194, 6107], [5190, 6157], [5203, 6166], [5181, 6201]]]] } }, { \"type\": \"Feature\", \"id\": \"AM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.10, \"hc-middle-y\": 0.12, \"hc-key\": \"am\", \"hc-a2\": \"AM\", \"name\": \"Armenia\", \"labelrank\": \"6\", \"country-abbrev\": \"Arm.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ARM\", \"iso-a2\": \"AM\", \"woe-id\": \"23424743\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5584, 7687], [5580, 7689], [5573, 7687], [5563, 7710], [5533, 7716], [5500, 7730], [5493, 7765], [5515, 7769], [5539, 7771], [5568, 7734], [5558, 7727], [5584, 7687]], [[5540, 7763], [5540, 7764], [5538, 7764], [5539, 7762], [5540, 7763]], [[5546, 7760], [5545, 7761], [5545, 7761], [5545, 7760], [5546, 7760]], [[5554, 7747], [5555, 7747], [5556, 7749], [5554, 7749], [5554, 7747]]] } }, { \"type\": \"Feature\", \"id\": \"SX\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.76, \"hc-middle-y\": 0.53, \"hc-key\": \"sx\", \"hc-a2\": \"SX\", \"name\": \"Somaliland\", \"labelrank\": \"5\", \"country-abbrev\": \"Solnd.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"-99\", \"iso-a2\": \"SX\", \"woe-id\": \"-99\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5487, 6819], [5518, 6788], [5562, 6801], [5582, 6795], [5611, 6810], [5656, 6812], [5656, 6758], [5628, 6715], [5598, 6715], [5510, 6744], [5470, 6793], [5478, 6804], [5487, 6819]]] } }, { \"type\": \"Feature\", \"id\": \"TM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.40, \"hc-middle-y\": 0.42, \"hc-key\": \"tm\", \"hc-a2\": \"TM\", \"name\": \"Turkmenistan\", \"labelrank\": \"4\", \"country-abbrev\": \"Turkm.\", \"subregion\": \"Central Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"TKM\", \"iso-a2\": \"TM\", \"woe-id\": \"23424972\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5898, 7794], [5921, 7785], [5915, 7802], [5943, 7825], [5981, 7807], [5987, 7775], [6043, 7761], [6057, 7726], [6151, 7665], [6179, 7658], [6178, 7635], [6156, 7642], [6126, 7626], [6117, 7598], [6052, 7560], [6022, 7576], [6020, 7608], [5995, 7610], [5949, 7646], [5906, 7656], [5902, 7666], [5849, 7660], [5804, 7634], [5806, 7688], [5794, 7724], [5769, 7728], [5775, 7760], [5798, 7748], [5828, 7765], [5803, 7799], [5792, 7800], [5792, 7800], [5812, 7808], [5851, 7770], [5865, 7773], [5896, 7770], [5898, 7794]]], [[[5780, 7795], [5782, 7800], [5792, 7800], [5792, 7800], [5780, 7795], [5780, 7795], [5780, 7795]]], [[[5780, 7795], [5771, 7775], [5760, 7788], [5780, 7795], [5780, 7795], [5780, 7795]]]] } }, { \"type\": \"Feature\", \"id\": \"ZM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.36, \"hc-middle-y\": 0.58, \"hc-key\": \"zm\", \"hc-a2\": \"ZM\", \"name\": \"Zambia\", \"labelrank\": \"3\", \"country-abbrev\": \"Zambia\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"ZMB\", \"iso-a2\": \"ZM\", \"woe-id\": \"23425003\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5050, 6201], [5069, 6222], [5061, 6228], [5111, 6236], [5125, 6219], [5129, 6225], [5153, 6211], [5181, 6201], [5203, 6166], [5190, 6157], [5194, 6107], [5178, 6072], [5189, 6063], [5101, 6034], [5106, 6014], [5060, 6001], [5058, 5987], [5038, 5977], [5022, 5969], [5006, 5944], [4996, 5940], [4954, 5949], [4923, 5958], [4898, 5953], [4856, 5998], [4856, 6093], [4916, 6093], [4915, 6157], [4925, 6142], [4955, 6147], [4956, 6134], [4996, 6123], [5011, 6136], [5070, 6080], [5088, 6081], [5088, 6119], [5066, 6112], [5046, 6140], [5056, 6189], [5050, 6201]]] } }, { \"type\": \"Feature\", \"id\": \"NC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.56, \"hc-middle-y\": 0.71, \"hc-key\": \"nc\", \"hc-a2\": \"NC\", \"name\": \"Northern Cyprus\", \"labelrank\": \"6\", \"country-abbrev\": \"N. Cy.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"-99\", \"iso-a2\": \"NC\", \"woe-id\": \"-90\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5210, 7558], [5206, 7556], [5203, 7556], [5196, 7562], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5231, 7579], [5213, 7557], [5210, 7558]]], [[[5171, 7561], [5173, 7562], [5172, 7561], [5171, 7561]]]] } }, { \"type\": \"Feature\", \"id\": \"MR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.61, \"hc-middle-y\": 0.63, \"hc-key\": \"mr\", \"hc-a2\": \"MR\", \"name\": \"Mauritania\", \"labelrank\": \"3\", \"country-abbrev\": \"Mrt.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MRT\", \"iso-a2\": \"MR\", \"woe-id\": \"23424896\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3946, 7304], [4040, 7245], [4061, 7231], [4008, 7231], [4040, 6939], [3886, 6937], [3856, 6941], [3840, 6917], [3779, 6974], [3719, 6968], [3713, 6949], [3728, 7014], [3714, 7058], [3723, 7083], [3698, 7100], [3701, 7117], [3818, 7117], [3818, 7170], [3847, 7183], [3847, 7263], [3946, 7263], [3946, 7304]]] } }, { \"type\": \"Feature\", \"id\": \"DZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.63, \"hc-middle-y\": 0.50, \"hc-key\": \"dz\", \"hc-a2\": \"DZ\", \"name\": \"Algeria\", \"labelrank\": \"3\", \"country-abbrev\": \"Alg.\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"DZA\", \"iso-a2\": \"DZ\", \"woe-id\": \"23424740\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4061, 7231], [4040, 7245], [3946, 7304], [3946, 7316], [3946, 7348], [3977, 7371], [4033, 7378], [4096, 7414], [4095, 7444], [4129, 7460], [4167, 7459], [4173, 7473], [4154, 7497], [4151, 7547], [4138, 7558], [4235, 7605], [4291, 7616], [4346, 7619], [4359, 7611], [4423, 7626], [4459, 7621], [4452, 7604], [4448, 7543], [4426, 7518], [4451, 7473], [4472, 7458], [4486, 7398], [4496, 7363], [4496, 7279], [4483, 7267], [4502, 7227], [4546, 7209], [4559, 7185], [4426, 7103], [4376, 7059], [4329, 7050], [4296, 7050], [4299, 7070], [4260, 7083], [4238, 7110], [4061, 7231]]] } }, { \"type\": \"Feature\", \"id\": \"LT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.27, \"hc-middle-y\": 0.06, \"hc-key\": \"lt\", \"hc-a2\": \"LT\", \"name\": \"Lithuania\", \"labelrank\": \"5\", \"country-abbrev\": \"Lith.\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"LTU\", \"iso-a2\": \"LT\", \"woe-id\": \"23424875\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4835, 8303], [4832, 8321], [4829, 8337], [4860, 8352], [4929, 8345], [4942, 8353], [4993, 8320], [4998, 8305], [4972, 8290], [4960, 8264], [4927, 8247], [4901, 8249], [4900, 8258], [4880, 8266], [4881, 8288], [4835, 8303]]], [[[4825, 8304], [4830, 8313], [4827, 8304], [4825, 8304]]]] } }, { \"type\": \"Feature\", \"id\": \"ET\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.58, \"hc-key\": \"et\", \"hc-a2\": \"ET\", \"name\": \"Ethiopia\", \"labelrank\": \"2\", \"country-abbrev\": \"Eth.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"ETH\", \"iso-a2\": \"ET\", \"woe-id\": \"23424808\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5444, 6813], [5441, 6810], [5444, 6807], [5449, 6802], [5478, 6804], [5470, 6793], [5510, 6744], [5598, 6715], [5628, 6715], [5538, 6624], [5509, 6625], [5447, 6596], [5414, 6605], [5377, 6579], [5335, 6585], [5297, 6609], [5270, 6615], [5235, 6675], [5205, 6705], [5185, 6709], [5190, 6729], [5211, 6728], [5215, 6758], [5230, 6801], [5238, 6796], [5263, 6854], [5276, 6855], [5288, 6902], [5328, 6921], [5416, 6897], [5462, 6848], [5443, 6820], [5444, 6813]]] } }, { \"type\": \"Feature\", \"id\": \"ER\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.29, \"hc-middle-y\": 0.05, \"hc-key\": \"er\", \"hc-a2\": \"ER\", \"name\": \"Eritrea\", \"labelrank\": \"4\", \"country-abbrev\": \"Erit.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"ERI\", \"iso-a2\": \"ER\", \"woe-id\": \"23424806\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5462, 6848], [5416, 6897], [5328, 6921], [5288, 6902], [5285, 6928], [5302, 6987], [5350, 7015], [5382, 6928], [5426, 6913], [5484, 6855], [5471, 6845], [5462, 6848]]] } }, { \"type\": \"Feature\", \"id\": \"GH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.13, \"hc-middle-y\": 0.77, \"hc-key\": \"gh\", \"hc-a2\": \"GH\", \"name\": \"Ghana\", \"labelrank\": \"3\", \"country-abbrev\": \"Ghana\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GHA\", \"iso-a2\": \"GH\", \"woe-id\": \"23424824\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4239, 6659], [4142, 6618], [4111, 6629], [4112, 6629], [4116, 6629], [4120, 6631], [4108, 6681], [4130, 6721], [4124, 6759], [4122, 6804], [4199, 6808], [4215, 6781], [4219, 6681], [4239, 6659]]] } }, { \"type\": \"Feature\", \"id\": \"SI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.57, \"hc-key\": \"si\", \"hc-a2\": \"SI\", \"name\": \"Slovenia\", \"labelrank\": \"6\", \"country-abbrev\": \"Slo.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"SVN\", \"iso-a2\": \"SI\", \"woe-id\": \"23424945\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4607, 7923], [4607, 7925], [4611, 7927], [4601, 7952], [4611, 7961], [4635, 7956], [4682, 7974], [4687, 7974], [4694, 7960], [4668, 7949], [4659, 7921], [4607, 7923]]] } }, { \"type\": \"Feature\", \"id\": \"GT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.44, \"hc-middle-y\": 0.87, \"hc-key\": \"gt\", \"hc-a2\": \"GT\", \"name\": \"Guatemala\", \"labelrank\": \"3\", \"country-abbrev\": \"Guat.\", \"subregion\": \"Central America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"GTM\", \"iso-a2\": \"GT\", \"woe-id\": \"23424834\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1565, 6951], [1574, 6947], [1586, 6946], [1558, 6926], [1552, 6907], [1530, 6889], [1530, 6886], [1494, 6893], [1466, 6911], [1482, 6956], [1522, 6966], [1491, 6992], [1504, 7009], [1558, 7009], [1556, 6951], [1565, 6951]]] } }, { \"type\": \"Feature\", \"id\": \"BA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.48, \"hc-key\": \"ba\", \"hc-a2\": \"BA\", \"name\": \"Bosnia and Herzegovina\", \"labelrank\": \"5\", \"country-abbrev\": \"B.H.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"BIH\", \"iso-a2\": \"BA\", \"woe-id\": \"23424761\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4728, 7828], [4725, 7830], [4726, 7830], [4685, 7876], [4672, 7911], [4706, 7915], [4768, 7900], [4779, 7901], [4774, 7851], [4752, 7832], [4751, 7816], [4734, 7826], [4728, 7828]]] } }, { \"type\": \"Feature\", \"id\": \"JO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.85, \"hc-key\": \"jo\", \"hc-a2\": \"JO\", \"name\": \"Jordan\", \"labelrank\": \"4\", \"country-abbrev\": \"Jord.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"JOR\", \"iso-a2\": \"JO\", \"woe-id\": \"23424860\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5255, 7426], [5258, 7429], [5255, 7431], [5254, 7432], [5255, 7434], [5259, 7434], [5259, 7448], [5259, 7477], [5265, 7480], [5296, 7466], [5355, 7501], [5363, 7472], [5366, 7460], [5301, 7439], [5331, 7407], [5274, 7365], [5241, 7370], [5243, 7376], [5241, 7377], [5247, 7405], [5255, 7426]]] } }, { \"type\": \"Feature\", \"id\": \"SY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.25, \"hc-middle-y\": 0.54, \"hc-key\": \"sy\", \"hc-a2\": \"SY\", \"name\": \"Syria\", \"labelrank\": \"3\", \"country-abbrev\": \"Syria\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"SYR\", \"iso-a2\": \"SY\", \"woe-id\": \"23424956\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5355, 7501], [5296, 7466], [5265, 7480], [5269, 7487], [5267, 7502], [5290, 7529], [5271, 7544], [5270, 7569], [5270, 7586], [5291, 7617], [5338, 7620], [5384, 7614], [5457, 7634], [5461, 7627], [5432, 7606], [5427, 7548], [5412, 7533], [5355, 7501]]] } }, { \"type\": \"Feature\", \"id\": \"MC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.67, \"hc-key\": \"mc\", \"hc-a2\": \"MC\", \"name\": \"Monaco\", \"labelrank\": \"6\", \"country-abbrev\": \"Mco.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"MCO\", \"iso-a2\": \"MC\", \"woe-id\": \"23424892\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4425, 7859], [4424, 7858], [4423, 7858], [4424, 7860], [4425, 7859]]] } }, { \"type\": \"Feature\", \"id\": \"AL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.49, \"hc-key\": \"al\", \"hc-a2\": \"AL\", \"name\": \"Albania\", \"labelrank\": \"6\", \"country-abbrev\": \"Alb.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ALB\", \"iso-a2\": \"AL\", \"woe-id\": \"23424742\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4826, 7757], [4826, 7757], [4825, 7758], [4826, 7757]]], [[[4779, 7800], [4779, 7805], [4780, 7808], [4789, 7820], [4799, 7816], [4812, 7804], [4814, 7792], [4811, 7781], [4816, 7764], [4817, 7758], [4819, 7758], [4822, 7758], [4825, 7758], [4825, 7757], [4826, 7756], [4826, 7756], [4824, 7753], [4826, 7754], [4826, 7753], [4828, 7750], [4827, 7750], [4828, 7750], [4809, 7720], [4798, 7715], [4777, 7749], [4779, 7791], [4778, 7795], [4779, 7800]]], [[[4779, 7807], [4779, 7807], [4779, 7806], [4779, 7807]]]] } }, { \"type\": \"Feature\", \"id\": \"UY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.81, \"hc-middle-y\": 0.63, \"hc-key\": \"uy\", \"hc-a2\": \"UY\", \"name\": \"Uruguay\", \"labelrank\": \"4\", \"country-abbrev\": \"Ury.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"URY\", \"iso-a2\": \"UY\", \"woe-id\": \"23424979\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2626, 5480], [2612, 5465], [2615, 5450], [2615, 5447], [2620, 5444], [2608, 5422], [2573, 5404], [2537, 5404], [2487, 5420], [2471, 5437], [2477, 5487], [2477, 5505], [2494, 5561], [2517, 5563], [2542, 5531], [2554, 5539], [2626, 5480]]] } }, { \"type\": \"Feature\", \"id\": \"CNM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.11, \"hc-key\": \"cnm\", \"hc-a2\": \"CN\", \"name\": \"Cyprus No Mans Area\", \"labelrank\": \"9\", \"country-abbrev\": null, \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"-99\", \"iso-a2\": null, \"woe-id\": \"-99\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[5213, 7557], [5214, 7557], [5213, 7557], [5210, 7557], [5210, 7558], [5213, 7557]]], [[[5171, 7561], [5171, 7561], [5172, 7561], [5173, 7562], [5173, 7562], [5172, 7560], [5171, 7561]]], [[[5175, 7561], [5174, 7561], [5175, 7561], [5175, 7561], [5175, 7561], [5175, 7561]]], [[[5203, 7556], [5205, 7555], [5204, 7555], [5196, 7561], [5175, 7561], [5175, 7561], [5196, 7562], [5203, 7556]]]] } }, { \"type\": \"Feature\", \"id\": \"MN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.53, \"hc-key\": \"mn\", \"hc-a2\": \"MN\", \"name\": \"Mongolia\", \"labelrank\": \"3\", \"country-abbrev\": \"Mong.\", \"subregion\": \"Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"MNG\", \"iso-a2\": \"MN\", \"woe-id\": \"23424887\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7691, 8008], [7702, 8011], [7698, 8015], [7722, 8015], [7762, 7975], [7756, 7963], [7714, 7968], [7664, 7953], [7637, 7921], [7603, 7919], [7575, 7895], [7528, 7908], [7511, 7885], [7526, 7857], [7453, 7813], [7372, 7807], [7326, 7787], [7282, 7788], [7232, 7803], [7220, 7815], [7064, 7822], [7034, 7879], [6979, 7903], [6901, 7912], [6906, 7963], [6885, 8003], [6847, 8016], [6814, 8039], [6810, 8061], [6945, 8127], [7001, 8115], [7011, 8094], [7093, 8083], [7121, 8113], [7106, 8132], [7139, 8176], [7237, 8144], [7239, 8117], [7280, 8098], [7330, 8111], [7407, 8090], [7425, 8067], [7490, 8060], [7559, 8077], [7596, 8104], [7628, 8089], [7667, 8086], [7632, 8021], [7642, 8005], [7691, 8008]]] } }, { \"type\": \"Feature\", \"id\": \"RW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.56, \"hc-key\": \"rw\", \"hc-a2\": \"RW\", \"name\": \"Rwanda\", \"labelrank\": \"3\", \"country-abbrev\": \"Rwa.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"RWA\", \"iso-a2\": \"RW\", \"woe-id\": \"23424937\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5065, 6398], [5061, 6400], [5061, 6406], [5075, 6419], [5071, 6429], [5075, 6434], [5082, 6438], [5092, 6435], [5108, 6447], [5119, 6432], [5111, 6408], [5091, 6400], [5065, 6398]]] } }, { \"type\": \"Feature\", \"id\": \"SO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.74, \"hc-key\": \"so\", \"hc-a2\": \"SO\", \"name\": \"Somalia\", \"labelrank\": \"6\", \"country-abbrev\": \"Som.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SOM\", \"iso-a2\": \"SO\", \"woe-id\": \"-90\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5447, 6596], [5509, 6625], [5538, 6624], [5628, 6715], [5656, 6758], [5656, 6812], [5726, 6829], [5713, 6758], [5627, 6610], [5570, 6551], [5494, 6497], [5437, 6429], [5420, 6453], [5420, 6562], [5447, 6596]]] } }, { \"type\": \"Feature\", \"id\": \"BO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.59, \"hc-key\": \"bo\", \"hc-a2\": \"BO\", \"name\": \"Bolivia\", \"labelrank\": \"3\", \"country-abbrev\": \"Bolivia\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"BOL\", \"iso-a2\": \"BO\", \"woe-id\": \"23424762\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[2153, 5996], [2153, 6001], [2157, 5996], [2155, 5997], [2153, 5996]]], [[[2141, 5957], [2137, 5964], [2155, 5986], [2169, 5993], [2145, 6017], [2160, 6058], [2153, 6073], [2166, 6108], [2139, 6155], [2177, 6154], [2226, 6186], [2262, 6192], [2263, 6149], [2293, 6110], [2332, 6104], [2369, 6077], [2409, 6069], [2419, 5995], [2469, 5993], [2471, 5965], [2496, 5937], [2478, 5876], [2450, 5903], [2371, 5892], [2356, 5864], [2345, 5812], [2307, 5819], [2295, 5792], [2287, 5813], [2238, 5826], [2210, 5794], [2189, 5794], [2180, 5842], [2163, 5868], [2173, 5898], [2157, 5913], [2141, 5957]]]] } }, { \"type\": \"Feature\", \"id\": \"CM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.81, \"hc-key\": \"cm\", \"hc-a2\": \"CM\", \"name\": \"Cameroon\", \"labelrank\": \"3\", \"country-abbrev\": \"Cam.\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"CMR\", \"iso-a2\": \"CM\", \"woe-id\": \"23424785\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4599, 6542], [4541, 6547], [4540, 6543], [4500, 6543], [4495, 6548], [4490, 6593], [4459, 6621], [4466, 6651], [4518, 6689], [4540, 6669], [4567, 6725], [4639, 6839], [4621, 6866], [4629, 6866], [4627, 6861], [4634, 6863], [4653, 6820], [4651, 6798], [4669, 6774], [4625, 6774], [4618, 6764], [4655, 6729], [4663, 6701], [4631, 6657], [4654, 6590], [4682, 6562], [4685, 6545], [4684, 6530], [4636, 6544], [4599, 6542]]], [[[4631, 6866], [4631, 6866], [4630, 6866], [4631, 6866]]]] } }, { \"type\": \"Feature\", \"id\": \"CG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.15, \"hc-middle-y\": 0.78, \"hc-key\": \"cg\", \"hc-a2\": \"CG\", \"name\": \"Republic of Congo\", \"labelrank\": \"4\", \"country-abbrev\": \"Rep. Congo\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"COG\", \"iso-a2\": \"CG\", \"woe-id\": \"23424779\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4599, 6542], [4636, 6544], [4684, 6530], [4685, 6545], [4696, 6581], [4722, 6588], [4757, 6581], [4740, 6542], [4731, 6463], [4686, 6416], [4685, 6381], [4644, 6337], [4631, 6353], [4592, 6342], [4583, 6349], [4560, 6331], [4554, 6344], [4534, 6363], [4555, 6369], [4547, 6410], [4573, 6423], [4622, 6405], [4634, 6461], [4614, 6473], [4633, 6506], [4597, 6515], [4599, 6542]]] } }, { \"type\": \"Feature\", \"id\": \"EH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.41, \"hc-middle-y\": 0.71, \"hc-key\": \"eh\", \"hc-a2\": \"EH\", \"name\": \"Western Sahara\", \"labelrank\": \"7\", \"country-abbrev\": \"W. Sah.\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"ESH\", \"iso-a2\": \"EH\", \"woe-id\": \"23424990\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3698, 7100], [3696, 7103], [3699, 7120], [3764, 7121], [3782, 7148], [3788, 7182], [3835, 7226], [3847, 7264], [3866, 7291], [3915, 7290], [3943, 7298], [3946, 7316], [3946, 7304], [3946, 7263], [3847, 7263], [3847, 7183], [3818, 7170], [3818, 7117], [3701, 7117], [3698, 7100]]] } }, { \"type\": \"Feature\", \"id\": \"RS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.42, \"hc-middle-y\": 0.52, \"hc-key\": \"rs\", \"hc-a2\": \"RS\", \"name\": \"Republic of Serbia\", \"labelrank\": \"5\", \"country-abbrev\": \"Serb.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"SRB\", \"iso-a2\": \"RS\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4774, 7851], [4779, 7901], [4768, 7900], [4769, 7910], [4765, 7939], [4784, 7948], [4805, 7946], [4842, 7910], [4839, 7897], [4877, 7877], [4867, 7861], [4885, 7836], [4867, 7808], [4855, 7808], [4844, 7805], [4850, 7820], [4820, 7842], [4808, 7826], [4786, 7839], [4774, 7851]]] } }, { \"type\": \"Feature\", \"id\": \"ME\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.42, \"hc-middle-y\": 0.47, \"hc-key\": \"me\", \"hc-a2\": \"ME\", \"name\": \"Montenegro\", \"labelrank\": \"6\", \"country-abbrev\": \"Mont.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"MNE\", \"iso-a2\": \"ME\", \"woe-id\": \"20069817\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4774, 7851], [4786, 7839], [4808, 7826], [4798, 7822], [4799, 7816], [4789, 7820], [4780, 7808], [4779, 7807], [4779, 7806], [4772, 7806], [4779, 7800], [4778, 7795], [4779, 7791], [4761, 7806], [4753, 7811], [4751, 7814], [4751, 7816], [4752, 7832], [4774, 7851]]] } }, { \"type\": \"Feature\", \"id\": \"TG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.76, \"hc-middle-y\": 0.81, \"hc-key\": \"tg\", \"hc-a2\": \"TG\", \"name\": \"Togo\", \"labelrank\": \"6\", \"country-abbrev\": \"Togo\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"TGO\", \"iso-a2\": \"TG\", \"woe-id\": \"23424965\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4231, 6804], [4252, 6746], [4252, 6662], [4246, 6661], [4239, 6659], [4219, 6681], [4215, 6781], [4199, 6808], [4218, 6804], [4231, 6804]]] } }, { \"type\": \"Feature\", \"id\": \"LA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.88, \"hc-middle-y\": 0.79, \"hc-key\": \"la\", \"hc-a2\": \"LA\", \"name\": \"Laos\", \"labelrank\": \"4\", \"country-abbrev\": \"Laos\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"LAO\", \"iso-a2\": \"LA\", \"woe-id\": \"23424872\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[7395, 6915], [7374, 6904], [7325, 6904], [7338, 6946], [7313, 6970], [7315, 6996], [7290, 7025], [7272, 7029], [7249, 7010], [7233, 7022], [7205, 6999], [7209, 7061], [7186, 7062], [7175, 7086], [7193, 7117], [7206, 7124], [7222, 7111], [7217, 7146], [7234, 7150], [7260, 7125], [7264, 7103], [7292, 7106], [7319, 7079], [7286, 7055], [7311, 7039], [7365, 6984], [7399, 6932], [7395, 6915]]] } }, { \"type\": \"Feature\", \"id\": \"AF\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.37, \"hc-middle-y\": 0.52, \"hc-key\": \"af\", \"hc-a2\": \"AF\", \"name\": \"Afghanistan\", \"labelrank\": \"3\", \"country-abbrev\": \"Afg.\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"AFG\", \"iso-a2\": \"AF\", \"woe-id\": \"23424739\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6426, 7631], [6411, 7627], [6416, 7624], [6357, 7617], [6316, 7590], [6330, 7562], [6313, 7524], [6281, 7523], [6290, 7499], [6268, 7491], [6261, 7454], [6226, 7450], [6173, 7421], [6168, 7385], [6106, 7371], [6058, 7372], [6010, 7386], [6038, 7418], [6035, 7435], [6009, 7439], [6001, 7491], [6022, 7576], [6052, 7560], [6117, 7598], [6126, 7626], [6156, 7642], [6178, 7635], [6200, 7629], [6215, 7629], [6259, 7626], [6285, 7641], [6299, 7669], [6329, 7653], [6329, 7613], [6379, 7639], [6426, 7631]]] } }, { \"type\": \"Feature\", \"id\": \"UA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.70, \"hc-middle-y\": 0.46, \"hc-key\": \"ua\", \"hc-a2\": \"UA\", \"name\": \"Ukraine\", \"labelrank\": \"3\", \"country-abbrev\": \"Ukr.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"UKR\", \"iso-a2\": \"UA\", \"woe-id\": \"23424976\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4861, 8032], [4866, 8042], [4873, 8057], [4876, 8075], [4919, 8114], [4905, 8152], [4928, 8166], [4969, 8168], [5013, 8155], [5074, 8146], [5110, 8154], [5122, 8174], [5147, 8175], [5207, 8185], [5225, 8161], [5218, 8142], [5245, 8140], [5262, 8106], [5315, 8109], [5367, 8087], [5395, 8064], [5382, 8045], [5384, 8010], [5356, 8011], [5338, 7983], [5269, 7966], [5237, 7948], [5260, 7909], [5212, 7882], [5179, 7928], [5206, 7939], [5146, 7950], [5163, 7959], [5129, 7965], [5089, 7927], [5084, 7913], [5059, 7914], [5041, 7922], [5063, 7958], [5097, 7955], [5068, 7999], [5072, 8011], [5028, 8033], [4994, 8026], [4954, 8013], [4883, 8014], [4875, 8020], [4861, 8032]], [[5098, 7955], [5107, 7945], [5109, 7947], [5100, 7956], [5098, 7955]], [[5213, 7945], [5242, 7929], [5237, 7943], [5218, 7952], [5213, 7945]]] } }, { \"type\": \"Feature\", \"id\": \"SK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.21, \"hc-middle-y\": 0.52, \"hc-key\": \"sk\", \"hc-a2\": \"SK\", \"name\": \"Slovakia\", \"labelrank\": \"6\", \"country-abbrev\": \"Svk.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"SVK\", \"iso-a2\": \"SK\", \"woe-id\": \"23424877\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4873, 8057], [4866, 8042], [4861, 8032], [4812, 8036], [4795, 8021], [4733, 8007], [4713, 8017], [4704, 8030], [4707, 8039], [4741, 8058], [4763, 8074], [4852, 8069], [4873, 8057]]] } }, { \"type\": \"Feature\", \"id\": \"JK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.40, \"hc-middle-y\": 0.63, \"hc-key\": \"jk\", \"hc-a2\": \"JK\", \"name\": \"Siachen Glacier\", \"labelrank\": \"5\", \"country-abbrev\": \"Siachen\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"-99\", \"iso-a2\": \"JK\", \"woe-id\": \"23424928\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6513, 7572], [6490, 7559], [6482, 7577], [6500, 7571], [6513, 7572]]] } }, { \"type\": \"Feature\", \"id\": \"BG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.76, \"hc-middle-y\": 0.51, \"hc-key\": \"bg\", \"hc-a2\": \"BG\", \"name\": \"Bulgaria\", \"labelrank\": \"4\", \"country-abbrev\": \"Bulg.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"BGR\", \"iso-a2\": \"BG\", \"woe-id\": \"23424771\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5052, 7859], [5026, 7812], [5035, 7796], [5007, 7799], [4985, 7786], [4953, 7770], [4931, 7781], [4884, 7773], [4887, 7787], [4867, 7808], [4885, 7836], [4867, 7861], [4877, 7877], [4896, 7864], [4957, 7856], [5006, 7875], [5052, 7859]]] } }, { \"type\": \"Feature\", \"id\": \"QA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.36, \"hc-middle-y\": 0.46, \"hc-key\": \"qa\", \"hc-a2\": \"QA\", \"name\": \"Qatar\", \"labelrank\": \"5\", \"country-abbrev\": \"Qatar\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"QAT\", \"iso-a2\": \"QA\", \"woe-id\": \"23424930\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5712, 7224], [5710, 7247], [5735, 7259], [5724, 7220], [5717, 7218], [5712, 7224]]] } }, { \"type\": \"Feature\", \"id\": \"LI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.61, \"hc-middle-y\": 0.53, \"hc-key\": \"li\", \"hc-a2\": \"LI\", \"name\": \"Liechtenstein\", \"labelrank\": \"6\", \"country-abbrev\": \"Liech.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"LIE\", \"iso-a2\": \"LI\", \"woe-id\": \"23424879\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4487, 7989], [4489, 7983], [4488, 7981], [4485, 7981], [4487, 7989]]] } }, { \"type\": \"Feature\", \"id\": \"AT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.62, \"hc-key\": \"at\", \"hc-a2\": \"AT\", \"name\": \"Austria\", \"labelrank\": \"4\", \"country-abbrev\": \"Aust.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"AUT\", \"iso-a2\": \"AT\", \"woe-id\": \"23424750\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4488, 7981], [4489, 7983], [4487, 7989], [4490, 7994], [4488, 7998], [4491, 7997], [4492, 7999], [4530, 7993], [4565, 8005], [4591, 7997], [4582, 8021], [4614, 8045], [4640, 8039], [4648, 8053], [4707, 8039], [4704, 8030], [4713, 8017], [4696, 8007], [4682, 7974], [4635, 7956], [4611, 7961], [4572, 7967], [4566, 7982], [4514, 7974], [4504, 7973], [4488, 7981]]] } }, { \"type\": \"Feature\", \"id\": \"SZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.51, \"hc-middle-y\": 0.45, \"hc-key\": \"sz\", \"hc-a2\": \"SZ\", \"name\": \"Swaziland\", \"labelrank\": \"4\", \"country-abbrev\": \"Swz.\", \"subregion\": \"Southern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SWZ\", \"iso-a2\": \"SZ\", \"woe-id\": \"23424993\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5152, 5696], [5155, 5685], [5157, 5668], [5128, 5656], [5118, 5682], [5137, 5702], [5152, 5696]]] } }, { \"type\": \"Feature\", \"id\": \"HU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.27, \"hc-middle-y\": 0.61, \"hc-key\": \"hu\", \"hc-a2\": \"HU\", \"name\": \"Hungary\", \"labelrank\": \"5\", \"country-abbrev\": \"Hun.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"HUN\", \"iso-a2\": \"HU\", \"woe-id\": \"23424844\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4861, 8032], [4875, 8020], [4883, 8014], [4857, 7997], [4831, 7952], [4805, 7946], [4784, 7948], [4765, 7939], [4719, 7940], [4694, 7960], [4687, 7974], [4682, 7974], [4696, 8007], [4713, 8017], [4733, 8007], [4795, 8021], [4812, 8036], [4861, 8032]]] } }, { \"type\": \"Feature\", \"id\": \"RO\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.67, \"hc-middle-y\": 0.50, \"hc-key\": \"ro\", \"hc-a2\": \"RO\", \"name\": \"Romania\", \"labelrank\": \"3\", \"country-abbrev\": \"Rom.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ROU\", \"iso-a2\": \"RO\", \"woe-id\": \"23424933\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4877, 7877], [4839, 7897], [4842, 7910], [4805, 7946], [4831, 7952], [4857, 7997], [4883, 8014], [4954, 8013], [4994, 8026], [5005, 8023], [5042, 7965], [5041, 7922], [5059, 7914], [5084, 7913], [5054, 7880], [5052, 7859], [5006, 7875], [4957, 7856], [4896, 7864], [4877, 7877]]] } }, { \"type\": \"Feature\", \"id\": \"NE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.64, \"hc-middle-y\": 0.53, \"hc-key\": \"ne\", \"hc-a2\": \"NE\", \"name\": \"Niger\", \"labelrank\": \"3\", \"country-abbrev\": \"Niger\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"NER\", \"iso-a2\": \"NE\", \"woe-id\": \"23424906\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4311, 6825], [4288, 6846], [4275, 6831], [4269, 6852], [4233, 6865], [4210, 6922], [4243, 6933], [4308, 6935], [4328, 6967], [4329, 7050], [4376, 7059], [4426, 7103], [4559, 7185], [4604, 7175], [4626, 7157], [4649, 7169], [4655, 7122], [4678, 7087], [4671, 7073], [4663, 6982], [4603, 6906], [4608, 6885], [4574, 6866], [4543, 6875], [4504, 6872], [4490, 6859], [4436, 6874], [4410, 6864], [4368, 6891], [4326, 6878], [4311, 6825]]] } }, { \"type\": \"Feature\", \"id\": \"LU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.60, \"hc-key\": \"lu\", \"hc-a2\": \"LU\", \"name\": \"Luxembourg\", \"labelrank\": \"6\", \"country-abbrev\": \"Lux.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"LUX\", \"iso-a2\": \"LU\", \"woe-id\": \"23424881\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4392, 8072], [4381, 8071], [4376, 8075], [4374, 8088], [4386, 8097], [4397, 8085], [4392, 8072]]] } }, { \"type\": \"Feature\", \"id\": \"AD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.58, \"hc-middle-y\": 0.28, \"hc-key\": \"ad\", \"hc-a2\": \"AD\", \"name\": \"Andorra\", \"labelrank\": \"6\", \"country-abbrev\": \"And.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"AND\", \"iso-a2\": \"AD\", \"woe-id\": \"23424744\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4246, 7818], [4255, 7818], [4255, 7814], [4249, 7812], [4246, 7818]]] } }, { \"type\": \"Feature\", \"id\": \"CI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.48, \"hc-key\": \"ci\", \"hc-a2\": \"CI\", \"name\": \"Ivory Coast\", \"labelrank\": \"3\", \"country-abbrev\": \"I.C.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"CIV\", \"iso-a2\": \"CI\", \"woe-id\": \"23424854\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4124, 6759], [4130, 6721], [4108, 6681], [4120, 6631], [4030, 6627], [3980, 6607], [3982, 6650], [3948, 6670], [3952, 6702], [3971, 6757], [3967, 6779], [4019, 6782], [4040, 6787], [4065, 6765], [4109, 6772], [4124, 6759]]], [[[4111, 6629], [4107, 6630], [4112, 6629], [4111, 6629]]]] } }, { \"type\": \"Feature\", \"id\": \"LR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.96, \"hc-middle-y\": 0.75, \"hc-key\": \"lr\", \"hc-a2\": \"LR\", \"name\": \"Liberia\", \"labelrank\": \"4\", \"country-abbrev\": \"Liberia\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"LBR\", \"iso-a2\": \"LR\", \"woe-id\": \"23424876\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3952, 6702], [3948, 6670], [3982, 6650], [3980, 6607], [3929, 6631], [3863, 6683], [3889, 6708], [3899, 6729], [3922, 6725], [3933, 6691], [3952, 6702]]] } }, { \"type\": \"Feature\", \"id\": \"BN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.32, \"hc-middle-y\": 0.34, \"hc-key\": \"bn\", \"hc-a2\": \"BN\", \"name\": \"Brunei\", \"labelrank\": \"6\", \"country-abbrev\": \"Brunei\", \"subregion\": \"South-Eastern Asia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"BRN\", \"iso-a2\": \"BN\", \"woe-id\": \"23424773\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[7618, 6621], [7621, 6622], [7621, 6623], [7627, 6606], [7618, 6621]]], [[[7587, 6614], [7603, 6617], [7616, 6623], [7606, 6597], [7587, 6614]]]] } }, { \"type\": \"Feature\", \"id\": \"IQ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.46, \"hc-middle-y\": 0.44, \"hc-key\": \"iq\", \"hc-a2\": \"IQ\", \"name\": \"Iraq\", \"labelrank\": \"3\", \"country-abbrev\": \"Iraq\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"IRQ\", \"iso-a2\": \"IQ\", \"woe-id\": \"23424855\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5644, 7390], [5632, 7392], [5627, 7391], [5602, 7390], [5585, 7362], [5530, 7365], [5453, 7426], [5404, 7453], [5366, 7460], [5363, 7472], [5355, 7501], [5412, 7533], [5427, 7548], [5432, 7606], [5461, 7627], [5472, 7635], [5532, 7628], [5549, 7589], [5579, 7582], [5551, 7521], [5577, 7487], [5611, 7469], [5623, 7448], [5619, 7423], [5644, 7390]]] } }, { \"type\": \"Feature\", \"id\": \"GE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.99, \"hc-middle-y\": 0.82, \"hc-key\": \"ge\", \"hc-a2\": \"GE\", \"name\": \"Georgia\", \"labelrank\": \"5\", \"country-abbrev\": \"Geo.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"GEO\", \"iso-a2\": \"GE\", \"woe-id\": \"23424823\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5539, 7771], [5515, 7769], [5493, 7765], [5474, 7782], [5436, 7779], [5436, 7819], [5391, 7846], [5475, 7838], [5508, 7816], [5534, 7823], [5582, 7793], [5584, 7763], [5539, 7771]]] } }, { \"type\": \"Feature\", \"id\": \"GM\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.51, \"hc-middle-y\": 0.51, \"hc-key\": \"gm\", \"hc-a2\": \"GM\", \"name\": \"Gambia\", \"labelrank\": \"6\", \"country-abbrev\": \"Gambia\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GMB\", \"iso-a2\": \"GM\", \"woe-id\": \"23424821\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3707, 6866], [3705, 6874], [3713, 6882], [3762, 6888], [3734, 6869], [3707, 6866]]] } }, { \"type\": \"Feature\", \"id\": \"CH\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.12, \"hc-middle-y\": 0.55, \"hc-key\": \"ch\", \"hc-a2\": \"CH\", \"name\": \"Switzerland\", \"labelrank\": \"4\", \"country-abbrev\": \"Switz.\", \"subregion\": \"Western Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"CHE\", \"iso-a2\": \"CH\", \"woe-id\": \"23424957\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4477, 8004], [4477, 8004], [4477, 8003], [4477, 8003], [4486, 7997], [4488, 7998], [4490, 7994], [4487, 7989], [4485, 7981], [4488, 7981], [4504, 7973], [4514, 7974], [4500, 7955], [4466, 7944], [4444, 7951], [4412, 7939], [4405, 7947], [4405, 7957], [4400, 7961], [4393, 7956], [4389, 7952], [4386, 7963], [4429, 8001], [4455, 8001], [4477, 8004]]] } }, { \"type\": \"Feature\", \"id\": \"TD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.47, \"hc-middle-y\": 0.63, \"hc-key\": \"td\", \"hc-a2\": \"TD\", \"name\": \"Chad\", \"labelrank\": \"3\", \"country-abbrev\": \"Chad\", \"subregion\": \"Middle Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"TCD\", \"iso-a2\": \"TD\", \"woe-id\": \"23424777\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4634, 6863], [4642, 6866], [4631, 6866], [4630, 6866], [4628, 6868], [4629, 6866], [4621, 6866], [4608, 6885], [4603, 6906], [4663, 6982], [4671, 7073], [4678, 7087], [4655, 7122], [4649, 7169], [4678, 7183], [4916, 7061], [4916, 6946], [4889, 6945], [4873, 6898], [4859, 6887], [4863, 6856], [4882, 6802], [4870, 6804], [4810, 6749], [4771, 6745], [4756, 6716], [4702, 6702], [4663, 6701], [4655, 6729], [4618, 6764], [4625, 6774], [4669, 6774], [4651, 6798], [4653, 6820], [4634, 6863]]] } }, { \"type\": \"Feature\", \"id\": \"KV\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.52, \"hc-key\": \"kv\", \"hc-a2\": \"KV\", \"name\": \"Kosovo\", \"labelrank\": \"6\", \"country-abbrev\": \"Kos.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"-99\", \"iso-a2\": \"KV\", \"woe-id\": \"-90\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4814, 7792], [4812, 7804], [4799, 7816], [4798, 7822], [4808, 7826], [4820, 7842], [4850, 7820], [4844, 7805], [4830, 7804], [4814, 7792]]] } }, { \"type\": \"Feature\", \"id\": \"LB\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.39, \"hc-middle-y\": 0.57, \"hc-key\": \"lb\", \"hc-a2\": \"LB\", \"name\": \"Lebanon\", \"labelrank\": \"5\", \"country-abbrev\": \"Leb.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"LBN\", \"iso-a2\": \"LB\", \"woe-id\": \"23424873\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5246, 7492], [5260, 7519], [5271, 7544], [5290, 7529], [5267, 7502], [5257, 7492], [5246, 7492]]] } }, { \"type\": \"Feature\", \"id\": \"DJ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.56, \"hc-middle-y\": 0.55, \"hc-key\": \"dj\", \"hc-a2\": \"DJ\", \"name\": \"Djibouti\", \"labelrank\": \"5\", \"country-abbrev\": \"Dji.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"DJI\", \"iso-a2\": \"DJ\", \"woe-id\": \"23424797\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5478, 6804], [5449, 6802], [5444, 6807], [5447, 6810], [5444, 6813], [5443, 6820], [5462, 6848], [5471, 6845], [5484, 6855], [5490, 6834], [5487, 6819], [5478, 6804]]] } }, { \"type\": \"Feature\", \"id\": \"BI\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.57, \"hc-middle-y\": 0.47, \"hc-key\": \"bi\", \"hc-a2\": \"BI\", \"name\": \"Burundi\", \"labelrank\": \"6\", \"country-abbrev\": \"Bur.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"BDI\", \"iso-a2\": \"BI\", \"woe-id\": \"23424774\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5084, 6347], [5076, 6364], [5071, 6380], [5072, 6389], [5065, 6398], [5091, 6400], [5111, 6408], [5118, 6383], [5084, 6347]]] } }, { \"type\": \"Feature\", \"id\": \"SR\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.91, \"hc-middle-y\": 0.09, \"hc-key\": \"sr\", \"hc-a2\": \"SR\", \"name\": \"Suriname\", \"labelrank\": \"4\", \"country-abbrev\": \"Sur.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"SUR\", \"iso-a2\": \"SR\", \"woe-id\": \"23424913\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2583, 6547], [2543, 6553], [2528, 6536], [2481, 6602], [2505, 6641], [2514, 6656], [2601, 6651], [2596, 6636], [2587, 6623], [2601, 6581], [2583, 6547]]] } }, { \"type\": \"Feature\", \"id\": \"IL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.68, \"hc-middle-y\": 0.10, \"hc-key\": \"il\", \"hc-a2\": \"IL\", \"name\": \"Israel\", \"labelrank\": \"4\", \"country-abbrev\": \"Isr.\", \"subregion\": \"Western Asia\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"ISR\", \"iso-a2\": \"IL\", \"woe-id\": \"23424852\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5219, 7433], [5238, 7465], [5246, 7492], [5257, 7492], [5267, 7502], [5269, 7487], [5265, 7480], [5259, 7477], [5259, 7448], [5254, 7440], [5255, 7434], [5254, 7432], [5255, 7431], [5253, 7429], [5255, 7426], [5247, 7405], [5241, 7377], [5240, 7374], [5239, 7374], [5237, 7382], [5219, 7433]]] } }, { \"type\": \"Feature\", \"id\": \"ML\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.59, \"hc-middle-y\": 0.38, \"hc-key\": \"ml\", \"hc-a2\": \"ML\", \"name\": \"Mali\", \"labelrank\": \"3\", \"country-abbrev\": \"Mali\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MLI\", \"iso-a2\": \"ML\", \"woe-id\": \"23424891\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4040, 6787], [4019, 6782], [3967, 6779], [3955, 6815], [3931, 6848], [3886, 6831], [3866, 6846], [3845, 6885], [3840, 6917], [3856, 6941], [3886, 6937], [4040, 6939], [4008, 7231], [4061, 7231], [4238, 7110], [4260, 7083], [4299, 7070], [4296, 7050], [4329, 7050], [4328, 6967], [4308, 6935], [4243, 6933], [4210, 6922], [4183, 6927], [4141, 6899], [4120, 6895], [4099, 6869], [4083, 6876], [4069, 6839], [4051, 6832], [4040, 6787]]] } }, { \"type\": \"Feature\", \"id\": \"SN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.20, \"hc-middle-y\": 0.55, \"hc-key\": \"sn\", \"hc-a2\": \"SN\", \"name\": \"Senegal\", \"labelrank\": \"3\", \"country-abbrev\": \"Sen.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SEN\", \"iso-a2\": \"SN\", \"woe-id\": \"23424943\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3708, 6844], [3705, 6859], [3707, 6866], [3734, 6869], [3762, 6888], [3713, 6882], [3695, 6922], [3713, 6949], [3719, 6968], [3779, 6974], [3840, 6917], [3845, 6885], [3866, 6846], [3837, 6843], [3797, 6854], [3753, 6854], [3708, 6844]]] } }, { \"type\": \"Feature\", \"id\": \"GN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.24, \"hc-middle-y\": 0.51, \"hc-key\": \"gn\", \"hc-a2\": \"GN\", \"name\": \"Guinea\", \"labelrank\": \"3\", \"country-abbrev\": \"Gin.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"GIN\", \"iso-a2\": \"GN\", \"woe-id\": \"23424835\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3866, 6846], [3886, 6831], [3931, 6848], [3955, 6815], [3967, 6779], [3971, 6757], [3952, 6702], [3933, 6691], [3922, 6725], [3899, 6729], [3870, 6774], [3833, 6770], [3809, 6746], [3793, 6770], [3758, 6803], [3767, 6819], [3797, 6825], [3797, 6854], [3837, 6843], [3866, 6846]]] } }, { \"type\": \"Feature\", \"id\": \"ZW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.81, \"hc-middle-y\": 0.42, \"hc-key\": \"zw\", \"hc-a2\": \"ZW\", \"name\": \"Zimbabwe\", \"labelrank\": \"3\", \"country-abbrev\": \"Zimb.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"ZWE\", \"iso-a2\": \"ZW\", \"woe-id\": \"23425004\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4954, 5949], [4996, 5940], [5006, 5944], [5038, 5977], [5038, 5977], [5058, 5987], [5060, 6001], [5106, 6014], [5182, 5982], [5185, 5932], [5176, 5898], [5184, 5880], [5166, 5841], [5133, 5807], [5104, 5809], [5075, 5814], [5036, 5833], [5026, 5865], [4979, 5896], [4954, 5949]]] } }, { \"type\": \"Feature\", \"id\": \"PL\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.48, \"hc-key\": \"pl\", \"hc-a2\": \"PL\", \"name\": \"Poland\", \"labelrank\": \"3\", \"country-abbrev\": \"Pol.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"POL\", \"iso-a2\": \"PL\", \"woe-id\": \"23424923\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4786, 8270], [4779, 8263], [4790, 8269], [4878, 8266], [4880, 8266], [4900, 8258], [4901, 8249], [4912, 8198], [4891, 8183], [4905, 8152], [4919, 8114], [4876, 8075], [4873, 8057], [4852, 8069], [4763, 8074], [4755, 8089], [4691, 8116], [4644, 8126], [4639, 8194], [4623, 8205], [4627, 8239], [4638, 8245], [4625, 8247], [4625, 8248], [4626, 8249], [4683, 8263], [4696, 8274], [4748, 8286], [4756, 8269], [4786, 8270], [4786, 8270]]] } }, { \"type\": \"Feature\", \"id\": \"MK\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.44, \"hc-key\": \"mk\", \"hc-a2\": \"MK\", \"name\": \"Macedonia\", \"labelrank\": \"6\", \"country-abbrev\": \"Mkd.\", \"subregion\": \"Southern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"MKD\", \"iso-a2\": \"MK\", \"woe-id\": \"23424890\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[4826, 7756], [4826, 7756], [4826, 7756], [4826, 7756]]], [[[4867, 7808], [4887, 7787], [4884, 7773], [4854, 7765], [4831, 7756], [4826, 7762], [4826, 7757], [4825, 7758], [4825, 7758], [4822, 7758], [4819, 7758], [4822, 7765], [4816, 7764], [4811, 7781], [4814, 7792], [4830, 7804], [4844, 7805], [4855, 7808], [4867, 7808]]]] } }, { \"type\": \"Feature\", \"id\": \"PY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.35, \"hc-middle-y\": 0.36, \"hc-key\": \"py\", \"hc-a2\": \"PY\", \"name\": \"Paraguay\", \"labelrank\": \"4\", \"country-abbrev\": \"Para.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"PRY\", \"iso-a2\": \"PY\", \"woe-id\": \"23424917\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2594, 5755], [2590, 5743], [2583, 5712], [2584, 5709], [2584, 5708], [2578, 5674], [2549, 5649], [2465, 5653], [2496, 5712], [2422, 5757], [2394, 5763], [2345, 5812], [2356, 5864], [2371, 5892], [2450, 5903], [2478, 5876], [2488, 5852], [2483, 5817], [2530, 5817], [2553, 5800], [2559, 5759], [2594, 5755]]] } }, { \"type\": \"Feature\", \"id\": \"BY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"by\", \"hc-a2\": \"BY\", \"name\": \"Belarus\", \"labelrank\": \"4\", \"country-abbrev\": \"Bela.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"BLR\", \"iso-a2\": \"BY\", \"woe-id\": \"23424765\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4905, 8152], [4891, 8183], [4912, 8198], [4901, 8249], [4927, 8247], [4960, 8264], [4972, 8290], [4998, 8305], [4993, 8320], [5023, 8325], [5039, 8340], [5121, 8317], [5146, 8243], [5175, 8229], [5131, 8212], [5147, 8175], [5122, 8174], [5110, 8154], [5074, 8146], [5013, 8155], [4969, 8168], [4928, 8166], [4905, 8152]]] } }, { \"type\": \"Feature\", \"id\": \"CZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.56, \"hc-key\": \"cz\", \"hc-a2\": \"CZ\", \"name\": \"Czech Republic\", \"labelrank\": \"5\", \"country-abbrev\": \"Cz. Rep.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"CZE\", \"iso-a2\": \"CZ\", \"woe-id\": \"23424810\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4763, 8074], [4741, 8058], [4707, 8039], [4648, 8053], [4640, 8039], [4614, 8045], [4571, 8083], [4575, 8108], [4644, 8126], [4691, 8116], [4755, 8089], [4763, 8074]]] } }, { \"type\": \"Feature\", \"id\": \"BF\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.54, \"hc-key\": \"bf\", \"hc-a2\": \"BF\", \"name\": \"Burkina Faso\", \"labelrank\": \"3\", \"country-abbrev\": \"B.F.\", \"subregion\": \"Western Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"BFA\", \"iso-a2\": \"BF\", \"woe-id\": \"23424978\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4231, 6804], [4218, 6804], [4199, 6808], [4122, 6804], [4124, 6759], [4109, 6772], [4065, 6765], [4040, 6787], [4051, 6832], [4069, 6839], [4083, 6876], [4099, 6869], [4120, 6895], [4141, 6899], [4183, 6927], [4210, 6922], [4233, 6865], [4269, 6852], [4275, 6831], [4247, 6818], [4231, 6804]]] } }, { \"type\": \"Feature\", \"id\": \"NA\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.33, \"hc-middle-y\": 0.37, \"hc-key\": \"na\", \"hc-a2\": \"NA\", \"name\": \"Namibia\", \"labelrank\": \"3\", \"country-abbrev\": \"Nam.\", \"subregion\": \"Southern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"NAM\", \"iso-a2\": \"NA\", \"woe-id\": \"23424987\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4898, 5953], [4923, 5958], [4954, 5949], [4904, 5928], [4895, 5942], [4826, 5933], [4827, 5821], [4797, 5819], [4797, 5734], [4797, 5617], [4771, 5600], [4720, 5608], [4711, 5630], [4693, 5613], [4658, 5652], [4637, 5740], [4631, 5811], [4602, 5855], [4577, 5909], [4561, 5927], [4553, 5965], [4595, 5974], [4618, 5960], [4752, 5961], [4761, 5950], [4821, 5941], [4898, 5953]]] } }, { \"type\": \"Feature\", \"id\": \"LY\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.51, \"hc-middle-y\": 0.38, \"hc-key\": \"ly\", \"hc-a2\": \"LY\", \"name\": \"Libya\", \"labelrank\": \"3\", \"country-abbrev\": \"Libya\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"LBY\", \"iso-a2\": \"LY\", \"woe-id\": \"23424882\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4649, 7169], [4626, 7157], [4604, 7175], [4559, 7185], [4546, 7209], [4502, 7227], [4483, 7267], [4496, 7279], [4496, 7363], [4486, 7398], [4509, 7421], [4504, 7437], [4547, 7471], [4545, 7495], [4570, 7483], [4600, 7486], [4655, 7469], [4680, 7432], [4719, 7426], [4770, 7399], [4790, 7407], [4795, 7448], [4814, 7474], [4846, 7487], [4890, 7477], [4889, 7467], [4945, 7455], [4950, 7445], [4937, 7397], [4945, 7364], [4945, 7138], [4945, 7076], [4916, 7076], [4916, 7061], [4678, 7183], [4649, 7169]]] } }, { \"type\": \"Feature\", \"id\": \"TN\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.53, \"hc-middle-y\": 0.03, \"hc-key\": \"tn\", \"hc-a2\": \"TN\", \"name\": \"Tunisia\", \"labelrank\": \"3\", \"country-abbrev\": \"Tun.\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"TUN\", \"iso-a2\": \"TN\", \"woe-id\": \"23424967\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4545, 7495], [4547, 7471], [4504, 7437], [4509, 7421], [4486, 7398], [4472, 7458], [4451, 7473], [4426, 7518], [4448, 7543], [4452, 7604], [4459, 7621], [4493, 7635], [4535, 7563], [4505, 7533], [4511, 7512], [4532, 7515], [4545, 7495]]] } }, { \"type\": \"Feature\", \"id\": \"BT\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.48, \"hc-key\": \"bt\", \"hc-a2\": \"BT\", \"name\": \"Bhutan\", \"labelrank\": \"5\", \"country-abbrev\": \"Bhutan\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"BTN\", \"iso-a2\": \"BT\", \"woe-id\": \"23424770\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6842, 7305], [6882, 7338], [6923, 7319], [6937, 7293], [6869, 7285], [6842, 7305]]] } }, { \"type\": \"Feature\", \"id\": \"MD\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.42, \"hc-key\": \"md\", \"hc-a2\": \"MD\", \"name\": \"Moldova\", \"labelrank\": \"6\", \"country-abbrev\": \"Mda.\", \"subregion\": \"Eastern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"MDA\", \"iso-a2\": \"MD\", \"woe-id\": \"23424885\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5041, 7922], [5042, 7965], [5005, 8023], [4994, 8026], [5028, 8033], [5072, 8011], [5068, 7999], [5097, 7955], [5063, 7958], [5041, 7922]]] } }, { \"type\": \"Feature\", \"id\": \"SS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.58, \"hc-key\": \"ss\", \"hc-a2\": \"SS\", \"name\": \"South Sudan\", \"labelrank\": \"3\", \"country-abbrev\": \"S. Sud.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"SSD\", \"iso-a2\": \"SS\", \"woe-id\": \"-99\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5212, 6603], [5198, 6589], [5119, 6582], [5088, 6613], [5046, 6605], [5018, 6628], [4988, 6658], [4987, 6675], [4956, 6696], [4921, 6735], [4948, 6783], [4970, 6787], [4992, 6760], [5060, 6754], [5095, 6783], [5131, 6768], [5166, 6806], [5156, 6834], [5190, 6840], [5189, 6800], [5215, 6758], [5211, 6728], [5190, 6729], [5185, 6709], [5205, 6705], [5235, 6675], [5270, 6615], [5255, 6627], [5212, 6603]]] } }, { \"type\": \"Feature\", \"id\": \"BW\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.49, \"hc-middle-y\": 0.60, \"hc-key\": \"bw\", \"hc-a2\": \"BW\", \"name\": \"Botswana\", \"labelrank\": \"4\", \"country-abbrev\": \"Bwa.\", \"subregion\": \"Southern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"BWA\", \"iso-a2\": \"BW\", \"woe-id\": \"23424755\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[4954, 5949], [4979, 5896], [5026, 5865], [5036, 5833], [5075, 5814], [5041, 5799], [5006, 5769], [5000, 5749], [4972, 5734], [4963, 5706], [4941, 5700], [4887, 5716], [4878, 5695], [4847, 5667], [4818, 5666], [4822, 5690], [4797, 5734], [4797, 5819], [4827, 5821], [4826, 5933], [4895, 5942], [4904, 5928], [4954, 5949]]] } }, { \"type\": \"Feature\", \"id\": \"BS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.80, \"hc-middle-y\": 0.92, \"hc-key\": \"bs\", \"hc-a2\": \"BS\", \"name\": \"The Bahamas\", \"labelrank\": \"4\", \"country-abbrev\": \"Bhs.\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"BHS\", \"iso-a2\": \"BS\", \"woe-id\": \"23424758\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[1956, 7219], [1937, 7241], [1937, 7241], [1937, 7241], [1944, 7236], [1956, 7219], [1956, 7219]]], [[[1956, 7219], [1970, 7205], [1976, 7173], [2045, 7149], [1983, 7165], [1949, 7190], [1966, 7207], [1956, 7219], [1956, 7219]]], [[[1937, 7241], [1911, 7260], [1890, 7236], [1901, 7192], [1881, 7221], [1883, 7237], [1912, 7268], [1937, 7241], [1937, 7241], [1937, 7241]]]] } }, { \"type\": \"Feature\", \"id\": \"NZ\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.25, \"hc-middle-y\": 0.81, \"hc-key\": \"nz\", \"hc-a2\": \"NZ\", \"name\": \"New Zealand\", \"labelrank\": \"2\", \"country-abbrev\": \"N.Z.\", \"subregion\": \"Australia and New Zealand\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"NZL\", \"iso-a2\": \"NZ\", \"woe-id\": \"23424916\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[9238, 4994], [9198, 4996], [9194, 4975], [9181, 5009], [9153, 5008], [9145, 5023], [9159, 5047], [9201, 5088], [9241, 5104], [9282, 5140], [9311, 5200], [9330, 5213], [9341, 5185], [9362, 5199], [9374, 5165], [9321, 5099], [9289, 5079], [9268, 5027], [9238, 4994]]], [[[9429, 5191], [9404, 5174], [9386, 5186], [9404, 5221], [9361, 5252], [9385, 5272], [9393, 5308], [9378, 5347], [9341, 5395], [9364, 5402], [9402, 5361], [9422, 5343], [9427, 5313], [9470, 5301], [9503, 5310], [9483, 5263], [9469, 5264], [9429, 5191]]]] } }, { \"type\": \"Feature\", \"id\": \"CU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.67, \"hc-middle-y\": 0.64, \"hc-key\": \"cu\", \"hc-a2\": \"CU\", \"name\": \"Cuba\", \"labelrank\": \"3\", \"country-abbrev\": \"Cuba\", \"subregion\": \"Caribbean\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"CUB\", \"iso-a2\": \"CU\", \"woe-id\": \"23424793\", \"continent\": \"North America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1916, 7091], [1870, 7097], [1853, 7124], [1817, 7140], [1776, 7144], [1774, 7159], [1748, 7160], [1696, 7131], [1700, 7149], [1734, 7169], [1770, 7175], [1828, 7171], [1852, 7150], [1867, 7154], [1879, 7155], [1933, 7113], [1986, 7095], [2000, 7078], [1898, 7071], [1916, 7091]]] } }, { \"type\": \"Feature\", \"id\": \"EC\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.16, \"hc-middle-y\": 0.37, \"hc-key\": \"ec\", \"hc-a2\": \"EC\", \"name\": \"Ecuador\", \"labelrank\": \"3\", \"country-abbrev\": \"Ecu.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"ECU\", \"iso-a2\": \"EC\", \"woe-id\": \"23424801\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[1820, 6379], [1837, 6400], [1803, 6410], [1803, 6447], [1828, 6480], [1827, 6500], [1865, 6521], [1905, 6498], [1940, 6492], [1970, 6476], [1961, 6433], [1928, 6403], [1879, 6379], [1858, 6331], [1815, 6358], [1820, 6379]]] } }, { \"type\": \"Feature\", \"id\": \"AU\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.53, \"hc-middle-y\": 0.39, \"hc-key\": \"au\", \"hc-a2\": \"AU\", \"name\": \"Australia\", \"labelrank\": \"2\", \"country-abbrev\": \"Auz.\", \"subregion\": \"Australia and New Zealand\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"AUS\", \"iso-a2\": \"AU\", \"woe-id\": \"-90\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"MultiPolygon\", \"coordinates\": [[[[8563, 5105], [8537, 5105], [8515, 5139], [8497, 5193], [8499, 5215], [8479, 5229], [8543, 5191], [8602, 5210], [8604, 5168], [8595, 5117], [8581, 5130], [8563, 5105]]], [[[8541, 5953], [8550, 5909], [8629, 5866], [8644, 5812], [8680, 5798], [8682, 5771], [8712, 5753], [8733, 5720], [8756, 5726], [8746, 5701], [8761, 5650], [8762, 5603], [8731, 5487], [8709, 5472], [8660, 5372], [8655, 5318], [8605, 5306], [8551, 5275], [8505, 5283], [8507, 5304], [8464, 5271], [8430, 5288], [8379, 5298], [8351, 5328], [8347, 5368], [8329, 5384], [8261, 5366], [8280, 5383], [8270, 5405], [8300, 5464], [8283, 5464], [8229, 5404], [8216, 5439], [8189, 5463], [8185, 5486], [8128, 5500], [8096, 5519], [8032, 5512], [7981, 5492], [7949, 5494], [7887, 5463], [7870, 5437], [7765, 5438], [7718, 5405], [7680, 5400], [7646, 5408], [7616, 5433], [7637, 5459], [7637, 5513], [7616, 5560], [7616, 5583], [7592, 5627], [7587, 5653], [7556, 5702], [7573, 5710], [7590, 5680], [7592, 5701], [7570, 5741], [7577, 5802], [7645, 5849], [7698, 5861], [7793, 5892], [7834, 5938], [7830, 5965], [7853, 5985], [7871, 5957], [7872, 5998], [7896, 5993], [7897, 6026], [7916, 6045], [7961, 6056], [7971, 6072], [8008, 6042], [8052, 6031], [8043, 6051], [8090, 6125], [8063, 6129], [8073, 6147], [8104, 6146], [8105, 6115], [8141, 6119], [8139, 6152], [8156, 6132], [8212, 6115], [8254, 6129], [8267, 6115], [8237, 6071], [8224, 6036], [8256, 6011], [8329, 5976], [8359, 5951], [8384, 5959], [8408, 6030], [8406, 6107], [8417, 6122], [8422, 6177], [8436, 6161], [8463, 6071], [8476, 6048], [8492, 6058], [8517, 6035], [8519, 5993], [8541, 5953]]]] } }, { \"type\": \"Feature\", \"id\": \"VE\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.33, \"hc-key\": \"ve\", \"hc-a2\": \"VE\", \"name\": \"Venezuela\", \"labelrank\": \"3\", \"country-abbrev\": \"Ven.\", \"subregion\": \"South America\", \"region-wb\": \"Latin America & Caribbean\", \"iso-a3\": \"VEN\", \"iso-a2\": \"VE\", \"woe-id\": \"23424982\", \"continent\": \"South America\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[2087, 6830], [2070, 6823], [2080, 6796], [2064, 6769], [2082, 6746], [2096, 6767], [2080, 6799], [2122, 6818], [2160, 6818], [2188, 6788], [2237, 6794], [2282, 6777], [2307, 6793], [2343, 6797], [2357, 6776], [2400, 6756], [2397, 6742], [2423, 6732], [2408, 6709], [2415, 6689], [2387, 6672], [2382, 6653], [2401, 6632], [2377, 6604], [2286, 6596], [2303, 6552], [2324, 6550], [2301, 6525], [2258, 6498], [2219, 6515], [2210, 6549], [2191, 6564], [2207, 6580], [2190, 6612], [2201, 6662], [2143, 6659], [2123, 6685], [2064, 6688], [2056, 6726], [2037, 6753], [2040, 6787], [2068, 6824], [2087, 6830]]] } }, { \"type\": \"Feature\", \"id\": \"SB\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.13, \"hc-middle-y\": 0.24, \"hc-key\": \"sb\", \"hc-a2\": \"SB\", \"name\": \"Solomon Islands\", \"labelrank\": \"3\", \"country-abbrev\": \"S. Is.\", \"subregion\": \"Melanesia\", \"region-wb\": \"East Asia & Pacific\", \"iso-a3\": \"SLB\", \"iso-a2\": \"SB\", \"woe-id\": \"23424766\", \"continent\": \"Oceania\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[8977, 6187], [8947, 6189], [8947, 6226], [8902, 6255], [8881, 6242], [8899, 6222], [8858, 6239], [8861, 6266], [8912, 6255], [8947, 6233], [8955, 6212], [8982, 6224], [8977, 6187]]] } }, { \"type\": \"Feature\", \"id\": \"MG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.45, \"hc-middle-y\": 0.48, \"hc-key\": \"mg\", \"hc-a2\": \"MG\", \"name\": \"Madagascar\", \"labelrank\": \"3\", \"country-abbrev\": \"Mad.\", \"subregion\": \"Eastern Africa\", \"region-wb\": \"Sub-Saharan Africa\", \"iso-a3\": \"MDG\", \"iso-a2\": \"MG\", \"woe-id\": \"23424883\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5683, 5987], [5616, 5762], [5601, 5727], [5544, 5707], [5511, 5726], [5503, 5774], [5487, 5812], [5495, 5841], [5524, 5882], [5508, 5959], [5523, 5997], [5558, 6004], [5613, 6031], [5635, 6081], [5650, 6080], [5665, 6125], [5686, 6092], [5702, 6020], [5677, 6017], [5683, 5987]]] } }, { \"type\": \"Feature\", \"id\": \"IS\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.50, \"hc-key\": \"is\", \"hc-a2\": \"IS\", \"name\": \"Iceland\", \"labelrank\": \"3\", \"country-abbrev\": \"Iceland\", \"subregion\": \"Northern Europe\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"ISL\", \"iso-a2\": \"IS\", \"woe-id\": \"23424845\", \"continent\": \"Europe\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[3490, 8732], [3556, 8739], [3551, 8757], [3516, 8766], [3476, 8762], [3500, 8775], [3508, 8796], [3538, 8790], [3534, 8809], [3571, 8786], [3566, 8765], [3584, 8755], [3607, 8792], [3661, 8795], [3682, 8785], [3715, 8796], [3713, 8811], [3768, 8789], [3763, 8773], [3795, 8763], [3803, 8741], [3772, 8709], [3677, 8676], [3648, 8661], [3605, 8668], [3575, 8684], [3530, 8682], [3560, 8708], [3538, 8728], [3490, 8732]]] } }, { \"type\": \"Feature\", \"id\": \"EG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.50, \"hc-middle-y\": 0.66, \"hc-key\": \"eg\", \"hc-a2\": \"EG\", \"name\": \"Egypt\", \"labelrank\": \"2\", \"country-abbrev\": \"Egypt\", \"subregion\": \"Northern Africa\", \"region-wb\": \"Middle East & North Africa\", \"iso-a3\": \"EGY\", \"iso-a2\": \"EG\", \"woe-id\": \"23424802\", \"continent\": \"Africa\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[5239, 7374], [5220, 7318], [5190, 7345], [5169, 7390], [5172, 7358], [5201, 7320], [5213, 7282], [5258, 7199], [5263, 7167], [5299, 7138], [5131, 7138], [4945, 7138], [4945, 7364], [4937, 7397], [4950, 7445], [5015, 7435], [5065, 7418], [5105, 7440], [5140, 7438], [5157, 7425], [5219, 7433], [5237, 7382], [5239, 7374]]] } }, { \"type\": \"Feature\", \"id\": \"KG\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.48, \"hc-middle-y\": 0.43, \"hc-key\": \"kg\", \"hc-a2\": \"KG\", \"name\": \"Kyrgyzstan\", \"labelrank\": \"4\", \"country-abbrev\": \"Kgz.\", \"subregion\": \"Central Asia\", \"region-wb\": \"Europe & Central Asia\", \"iso-a3\": \"KGZ\", \"iso-a2\": \"KG\", \"woe-id\": \"23424864\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6389, 7707], [6348, 7698], [6325, 7713], [6261, 7709], [6280, 7734], [6310, 7734], [6331, 7731], [6374, 7754], [6333, 7777], [6323, 7766], [6286, 7782], [6309, 7805], [6336, 7826], [6385, 7812], [6405, 7842], [6435, 7827], [6531, 7828], [6584, 7803], [6529, 7774], [6521, 7763], [6482, 7759], [6450, 7736], [6446, 7748], [6399, 7728], [6389, 7707]], [[6300, 7721], [6296, 7722], [6299, 7718], [6302, 7720], [6300, 7721]], [[6333, 7723], [6334, 7726], [6331, 7724], [6332, 7723], [6333, 7723]], [[6316, 7728], [6310, 7729], [6312, 7722], [6317, 7722], [6316, 7728]]] } }, { \"type\": \"Feature\", \"id\": \"NP\", \"properties\": { \"hc-group\": \"admin0\", \"hc-middle-x\": 0.52, \"hc-middle-y\": 0.54, \"hc-key\": \"np\", \"hc-a2\": \"NP\", \"name\": \"Nepal\", \"labelrank\": \"3\", \"country-abbrev\": \"Nepal\", \"subregion\": \"Southern Asia\", \"region-wb\": \"South Asia\", \"iso-a3\": \"NPL\", \"iso-a2\": \"NP\", \"woe-id\": \"23424911\", \"continent\": \"Asia\" }, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[[6819, 7322], [6820, 7286], [6795, 7274], [6751, 7281], [6714, 7305], [6660, 7310], [6579, 7353], [6589, 7383], [6608, 7397], [6640, 7401], [6683, 7364], [6699, 7367], [6729, 7336], [6756, 7323], [6773, 7330], [6819, 7322]]] } }]\r\n};","import Vue from 'vue';\r\nimport './highcharts.proj4.js';\r\nimport HighchartsVue from 'highcharts-vue';\r\nimport Highcharts from 'highcharts';\r\nimport HighchartsMapModule from 'highcharts/modules/map';\r\nimport HighchartsCustomWorld from './highcharts.custom.world.js';\r\nimport fillFactory from 'highcharts-pattern-fill/pattern-fill-v2.js';\r\n\r\nfillFactory(Highcharts);\r\nHighchartsMapModule(Highcharts);\r\nHighcharts.maps[\"custom/world\"] = HighchartsCustomWorld;\r\nVue.use(HighchartsVue);\r\n","import Api from \"@/lib/ApiV2\";\r\n\r\nexport const formatCurrency = (val: number, code: string) => {\r\n if (val === null || isNaN(val)) {\r\n return val;\r\n }\r\n\r\n return code\r\n ? val.toLocaleString(undefined, {\r\n style: \"currency\",\r\n currency: code\r\n })\r\n : val.toLocaleString();\r\n};\r\n\r\nexport class CurrencyService {\r\n private currencies: any[];\r\n\r\n public async getAllCurrencies(): Promise {\r\n if (this.currencies) return this.currencies;\r\n return (this.currencies = await Api.http\r\n .get(\"/api/metadata/currencies\")\r\n .then(c => c.data));\r\n }\r\n\r\n public async getAllCurrencyCodes(): Promise {\r\n return this.getAllCurrencies().then(r => r.map(c => c.code));\r\n }\r\n\r\n public async getCurrencySymbol(code: string): Promise {\r\n const all = await this.getAllCurrencies();\r\n \r\n const symbolIndex = all.findIndex(c => c.code === code);\r\n return symbolIndex !== -1 ? all[symbolIndex].symbol : null;\r\n }\r\n}\r\n\r\nexport default new CurrencyService();\r\n","import Vue from \"vue\";\r\nimport { formatCurrency } from '@/lib/Currencies';\r\nVue.filter(\"currency\", formatCurrency);\r\n","import Vue from 'vue';\r\nimport dayjs from 'dayjs';\r\nimport calendar from 'dayjs/plugin/calendar';\r\ndayjs.extend(calendar);\r\n\r\nVue.filter('calendarFormatFromUtc', function (value: Date | string) {\r\n return dayjs(value).local().calendar(null, {\r\n sameElse: 'DD/MM/YYYY'\r\n });\r\n});\r\n\r\nVue.filter('calendarFormat', function (value: Date | string) {\r\n return dayjs(value).calendar(null, {\r\n sameElse: 'DD/MM/YYYY'\r\n });\r\n});\r\n\r\nVue.filter('dateFormat', function (value: Date, format: string) {\r\n return dayjs(value).format(format);\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('img',{staticStyle:{\"margin\":\"16px auto auto auto\"},attrs:{\"src\":_vm.logoImageSrc,\"width\":_vm.width,\"aria-label\":\"Application logo\",\"title\":\"Application logo\",\"role\":\"presentation\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppLogoImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppLogoImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppLogoImage.vue?vue&type=template&id=14c4fa10&\"\nimport script from \"./AppLogoImage.vue?vue&type=script&lang=js&\"\nexport * from \"./AppLogoImage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.handleClick}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" \"+_vm._s(_vm.$t('back'))+\" \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BackButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BackButton.vue?vue&type=template&id=2487bea0&\"\nimport script from \"./BackButton.vue?vue&type=script&lang=js&\"\nexport * from \"./BackButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('card-base',{attrs:{\"light\":_vm.light}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[(_vm.titleIcon)?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.titleIcon))]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1),(_vm.caption)?_c('h3',{staticClass:\"body-2\"},[_vm._v(_vm._s(_vm.caption))]):_vm._e()]),_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_c('v-spacer'),_vm._t(\"title-actions\")],2)],1),_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.loading,\"indeterminate\":\"\"}}),_vm._t(\"body\",function(){return [_c('v-card-text',{staticClass:\"pt-1\"},[_vm._t(\"default\")],2)]}),_c('v-card-actions',[_vm._t(\"actions\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{attrs:{\"flat\":\"\",\"light\":_vm.light}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContentCardBase.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContentCardBase.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContentCardBase.vue?vue&type=template&id=ca0cd1ec&\"\nimport script from \"./ContentCardBase.vue?vue&type=script&lang=js&\"\nexport * from \"./ContentCardBase.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContentCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContentCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContentCard.vue?vue&type=template&id=18681780&\"\nimport script from \"./ContentCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ContentCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":_vm.title,\"caption\":_vm.caption,\"loading\":_vm.loading,\"light\":_vm.light},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},[_c('chart',{attrs:{\"options\":_vm.chart,\"constructorType\":_vm.constructorType}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChartCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChartCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChartCard.vue?vue&type=template&id=138333fc&\"\nimport script from \"./ChartCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"loading\":_vm.$wait.is('deletingEntity'),\"value\":_vm.entityToDelete,\"title\":_vm.$t('entities.DeleteEntityTitle', {entityType: _vm.entityType}),\"subtitle\":_vm.$t('entities.DeleteEntitySubtitle', {entityType: _vm.entityType}),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-entity-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deletingEntity'),expression:\"'deletingEntity'\"}],attrs:{\"value\":_vm.entityToDelete,\"entityType\":_vm.entityType,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"resourceApi\":_vm.resourceApi},on:{\"http2xx\":function($event){close().then(_vm.getEntities)}}})]}}],null,true)})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading,\"lazyValidation\":false},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"isValid\":_vm.valid,\"clear\":reset,\"formId\":formId,\"loading\":_vm.loading,\"form\":{ Name: _vm.entityName }})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[(_vm.warningText)?_c('v-alert',{attrs:{\"text\":\"\",\"color\":\"warning\"}},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" Warning: \"+_vm._s(_vm.warningText)+\" \")],1):_vm._e(),(_vm.simple)?_c('v-checkbox',{attrs:{\"rules\":_vm.checkToDeleteRules,\"label\":_vm.$t('deleteEntityCard.checkToDelete.label'),\"required\":\"\"},model:{value:(_vm.checkToDelete),callback:function ($$v) {_vm.checkToDelete=$$v},expression:\"checkToDelete\"}}):_c('v-text-field',{attrs:{\"rules\":_vm.nameConfirmationRules,\"placeholder\":_vm.$t('deleteEntityCard.placeholder', { entityName: _vm.entityName }),\"persistent-hint\":\"\",\"label\":_vm.$t('name'),\"required\":\"\",\"autofocus\":\"\",\"counter\":_vm.entityName ? _vm.entityName.length : null},model:{value:(_vm.nameConfirmation),callback:function ($$v) {_vm.nameConfirmation=$$v},expression:\"nameConfirmation\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n{\r\n \"en\": {\r\n \"deleteEntityCard.placeholder\": \"Enter '{entityName}' to continue\",\r\n \"deleteEntityCard.checkToDelete.label\": \"Are you sure you want to delete?\"\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteEntityCard.vue?vue&type=template&id=3b98dfaa&\"\nimport script from \"./DeleteEntityCard.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteEntityCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteEntityCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"error\",\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"clear\")]),_vm._v(\"Delete \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeleteEntityButton.vue?vue&type=template&id=fbe8a89c&\"\nimport script from \"./DeleteEntityButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteEntityButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n {\r\n \"en\": { \r\n \"entities.DeleteEntityTitle\": \"Delete {entityType}\",\r\n \"entities.DeleteEntitySubtitle\": \"This {entityType} will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"\r\n }\r\n }\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteEntityDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteEntityDialog.vue?vue&type=template&id=2b943660&\"\nimport script from \"./DeleteEntityDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteEntityDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteEntityDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"py-5\"},[_c('p',{staticClass:\"text-center mb-0\"},[_c('v-icon',{staticClass:\"empty-state\"},[_vm._v(_vm._s(_vm.icon))])],1),_c('p',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.message))]),_c('p',{staticClass:\"text-center\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport default {\r\n props: ['icon', 'message']\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmptyState.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmptyState.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmptyState.vue?vue&type=template&id=38e4a153&scoped=true&\"\nimport script from \"./EmptyState.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmptyState.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EmptyState.vue?vue&type=style&index=0&id=38e4a153&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38e4a153\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"mx-auto\"},[_c('form-card-title',{attrs:{\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._t(\"title\",function(){return [_vm._v(_vm._s(_vm.title))]})]},proxy:true},{key:\"subtitle\",fn:function(){return [_vm._t(\"subtitle\",function(){return [_vm._v(_vm._s(_vm.subtitle))]})]},proxy:true}],null,true)}),_vm._t(\"body\",function(){return [_c('v-card-text',{staticClass:\"mt-1\"},[_vm._t(\"text\",function(){return [_c('v-form',{ref:\"form\",attrs:{\"value\":_vm.value,\"id\":_vm.formId,\"lazy-validation\":_vm.lazyValidation},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"submit\":function($event){$event.preventDefault();}}},[_vm._t(\"default\",null,{\"isValid\":_vm.value,\"formId\":_vm.formId,\"reset\":_vm.reset,\"resetValidation\":_vm.resetValidation}),_c('input',{attrs:{\"type\":\"hidden\"}})],2)]})],2)]}),_c('form-card-actions',[_vm._t(\"actions\",null,{\"formId\":_vm.formId,\"reset\":_vm.reset,\"resetValidation\":_vm.resetValidation})],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card-actions',[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FormCardActions.vue?vue&type=template&id=e1e23ff0&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-progress-linear',{attrs:{\"indeterminate\":\"\",\"active\":_vm.loading}}),_c('v-card-title',[_c('h2',{staticClass:\"title text-center full-width text-uppercase primary--text\"},[_vm._t(\"title\",function(){return [_vm._v(_vm._s(_vm.title))]})],2),_c('p',{staticClass:\"subtitle-1 text-xs-center grey--text pa-3 pb-0 text-break full-width\",attrs:{\"align\":\"center\"}},[_vm._t(\"subtitle\",function(){return [_vm._v(_vm._s(_vm.subtitle))]})],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormCardTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormCardTitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormCardTitle.vue?vue&type=template&id=323dd246&scoped=true&\"\nimport script from \"./FormCardTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./FormCardTitle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FormCardTitle.vue?vue&type=style&index=0&id=323dd246&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"323dd246\",\n null\n \n)\n\nexport default component.exports","export default class UniqueIdentifier {\r\n public static create() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","\r\n\r\n\r\n","import Granularity from \"./Granularity\";\r\n\r\nexport enum SpendFieldNames {\r\n CO2e = \"CO2e\",\r\n kWh = \"kWh\",\r\n Spend = \"Spend\",\r\n Charges = \"Charges\",\r\n Credits = \"Credits\"\r\n}\r\n\r\nexport default interface ISpendParameters {\r\n fromDate: string;\r\n toDate: string;\r\n granularity: Granularity.daily | Granularity.monthly;\r\n topXResults?: number | null;\r\n tagKeyValue?: string;\r\n tagKeyValues?: string;\r\n productIds?: string;\r\n regionNames?: string;\r\n geographyNames?: string;\r\n productCategories?: string;\r\n cloudAccountIds?: string;\r\n subscriptionIds?: string;\r\n serviceIds?: string;\r\n topBy?: string;\r\n providerType?: string | null;\r\n savedViewId?: string | null;\r\n costView?: string | null;\r\n reservationId?: string | null;\r\n}","enum Granularity {\r\n raw = 'Raw',\r\n hourly = 'Hourly',\r\n daily = 'Daily',\r\n monthly = 'Monthly',\r\n yearly = 'Yearly'\r\n}\r\n\r\nexport default Granularity;","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormCard.vue?vue&type=template&id=6647a87a&\"\nimport script from \"./FormCard.vue?vue&type=script&lang=js&\"\nexport * from \"./FormCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"width\":_vm.width || 800,\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.fullscreen || _vm.$vuetify.breakpoint.xsOnly},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(props){return [_vm._t(\"activator\",null,null,props)]}}],null,true)},[_vm._t(\"default\",null,{\"close\":_vm.close,\"open\":_vm.open})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FormDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormDialog.vue?vue&type=template&id=205c6dc9&\"\nimport script from \"./FormDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./FormDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ sticky: _vm.sticky }},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"elevation\":_vm.sticky ? 1 : 0,\"color\":_vm.toolbarColor,\"prominent\":!_vm.small,\"extension-height\":_vm.extensionHeight},scopedSlots:_vm._u([(_vm.extended)?{key:\"extension\",fn:function(){return [_vm._t(\"default\")]},proxy:true}:null],null,true)},[(!_vm.hideNavbtn)?_c('v-app-bar-nav-icon',{attrs:{\"aria-label\":\"App Menu Button\",\"title\":\"App Menu Button\",\"role\":\"presentation\"},on:{\"click\":function($event){return _vm.toggleDrawer()}}}):_vm._e(),(_vm.backTo)?_c('v-btn',{staticClass:\"ml-6\",staticStyle:{\"margin-top\":\"5px\"},attrs:{\"absolute\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$router.push(_vm.backTo)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"keyboard_backspace\")]),_vm._v(\" \"+_vm._s(_vm.backToText || 'Back'))],1):_vm._e(),_c('v-toolbar-title',{attrs:{\"role\":\"h1\"}},[_c('h1',{staticClass:\"text-h5\"},[(_vm.icon)?_c('v-icon',{class:{ 'flip-x': _vm.flipIcon },attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.icon))]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.title)+\" \")],1)]),_c('v-spacer')],1),(!_vm.extended)?_c('v-sheet',{attrs:{\"color\":_vm.sheetColor}},[_vm._t(\"default\")],2):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PageHeader.vue?vue&type=template&id=13e82c48&scoped=true&\"\nimport script from \"./PageHeader.vue?vue&type=script&lang=js&\"\nexport * from \"./PageHeader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PageHeader.vue?vue&type=style&index=0&id=13e82c48&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13e82c48\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":_vm.type,\"color\":_vm.color,\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form,\"block\":_vm.block,\"outlined\":_vm.outlined},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._t(\"default\",function(){return [_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Update\")]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPatchButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPatchButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HttpPatchButton.vue?vue&type=template&id=5245dd8e&\"\nimport script from \"./HttpPatchButton.vue?vue&type=script&lang=js&\"\nexport * from \"./HttpPatchButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":_vm.type,\"color\":_vm.color,\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form,\"block\":_vm.block,\"outlined\":_vm.outlined},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._t(\"default\",function(){return [_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit\")]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPutButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HttpPutButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HttpPutButton.vue?vue&type=template&id=e8bfb51e&\"\nimport script from \"./HttpPutButton.vue?vue&type=script&lang=js&\"\nexport * from \"./HttpPutButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('card-base',[_c('v-container',{attrs:{\"justify-center\":\"\",\"fluid\":\"\"}},[_c('v-layout',[_c('v-flex',{staticClass:\"text-center\",attrs:{\"xs12\":\"\"}},[_c('div',[_c('h1',{staticClass:\"headline font-weight-light\"},[_vm._v(_vm._s(_vm.title))]),_c('span',{staticClass:\"body-2 font-weight-regular\"},[_vm._v(_vm._s(_vm.description))]),_c('br'),_c('span',{staticClass:\"caption\"},[_vm._v(_vm._s(_vm.caption))])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FigureCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FigureCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FigureCard.vue?vue&type=template&id=7e4e3e9f&scoped=true&\"\nimport script from \"./FigureCard.vue?vue&type=script&lang=js&\"\nexport * from \"./FigureCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FigureCard.vue?vue&type=style&index=0&id=7e4e3e9f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e4e3e9f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{attrs:{\"grid-list-lg\":\"\",\"fluid\":\"\"}},[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./WidgetGrid.vue?vue&type=template&id=56548546&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-sheet',{staticClass:\"py-4\",staticStyle:{\"position\":\"relative\"}},[_c('div',{staticClass:\"text-center grey--text\"},[_vm._t(\"title\",function(){return [_vm._v(_vm._s(_vm.title))]})],2),_c('div',{staticClass:\"text-h4 text-center\"},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.value))]})],2),(_vm.subtitle)?_c('div',{staticClass:\"text-center subtitle-2 grey--text\"},[_vm._t(\"subtitle\",function(){return [_vm._v(_vm._s(_vm.subtitle))]})],2):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleSheet.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleSheet.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TitleSheet.vue?vue&type=template&id=7ac3352b&\"\nimport script from \"./TitleSheet.vue?vue&type=script&lang=js&\"\nexport * from \"./TitleSheet.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-skeleton-loader',{staticClass:\"mb-3\",attrs:{\"loading\":_vm.loading,\"type\":\"actions\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleSheets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TitleSheets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TitleSheets.vue?vue&type=template&id=4d9173eb&\"\nimport script from \"./TitleSheets.vue?vue&type=script&lang=js&\"\nexport * from \"./TitleSheets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-icon',{attrs:{\"color\":_vm.iconColor,\"left\":_vm.left,\"right\":_vm.right}},[_vm._v(_vm._s(_vm.iconValue))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComparisonIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComparisonIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ComparisonIcon.vue?vue&type=template&id=cdf75d2e&\"\nimport script from \"./ComparisonIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./ComparisonIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{attrs:{\"value\":_vm.selection,\"label\":_vm.label || _vm.$t('entitySearchAutocomplete.label'),\"loading\":_vm.$wait.is(`queryEntities-${_vm.autoCompleteId}`),\"items\":_vm.items,\"search-input\":_vm.searchText,\"autofocus\":_vm.autofocus,\"clearable\":\"\",\"deletable-chips\":\"\",\"item-text\":\"Name\",\"item-value\":\"Id\",\"prepend-icon\":_vm.prependIcon,\"hide-details\":_vm.hideDetails,\"hide-no-data\":!!_vm.value,\"hide-selected\":\"\",\"dense\":_vm.dense,\"flat\":_vm.flat,\"solo\":_vm.solo,\"solo-inverted\":_vm.soloInverted,\"outlined\":_vm.outlined,\"multiple\":_vm.multiple,\"chips\":_vm.chips,\"filled\":_vm.filled,\"disabled\":_vm.disabled,\"rules\":_vm.rules || []},on:{\"input\":function($event){return _vm.handleInput($event)},\"update:searchInput\":function($event){_vm.searchText=$event},\"update:search-input\":function($event){_vm.searchText=$event},\"change\":function($event){_vm.searchText=''}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(!_vm.searchText)?_c('v-list-item',{on:{\"click\":function($event){return _vm.queryEntitiesWithCurrentQuery()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"search\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('entitySearchAutocomplete.typePrompt'))+\" \")])],1):(!_vm.supportCreate)?_c('v-list-item',{on:{\"click\":function($event){return _vm.queryEntitiesWithCurrentQuery()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"search\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('entitySearchAutocomplete.noDataPrompt'))+\" \")])],1):_c('v-list-item',{on:{\"click\":function($event){return _vm.createDummyEntity(_vm.searchText)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"add\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('entitySearchAutocomplete.createPrompt'))+\" \")])],1)]},proxy:true},{key:\"prepend-item\",fn:function(){return [(!_vm.disableSaveCustomView && _vm.value !== null)?_c('PostCustomViewDialog',{attrs:{\"customView\":_vm.spendUsageOptions},on:{\"http2xx\":function($event){return _vm.loadReports()}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-avatar',[_c('v-icon',[_vm._v(\"save\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('entitySearchAutocomplete.saveCustomView'))+\" \")])],1)],1)]}}],null,false,799401271),model:{value:(_vm.isCreating),callback:function ($$v) {_vm.isCreating=$$v},expression:\"isCreating\"}}):_vm._e()]},proxy:true},{key:\"item\",fn:function({ item }){return [_c('v-list-item-avatar',[_c('entity-type-icon',{attrs:{\"value\":item.Type}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.Name))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(item.Description))])],1)]}},{key:\"prepend\",fn:function(){return [_vm._t(\"prepend\")]},proxy:true},{key:\"append\",fn:function(){return [_vm._t(\"append\")]},proxy:true},{key:\"append-outer\",fn:function(){return [_vm._t(\"append-outer\")]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","enum CloudProviderType {\r\n azure = 'Azure',\r\n amazon = 'Amazon',\r\n google = 'Google',\r\n softLayer = 'Softlayer',\r\n vmWare = 'VmWare',\r\n alibaba = 'Alibaba',\r\n custom = 'Custom',\r\n oracle = 'Oracle',\r\n snowflake = 'SnowFlake'\r\n}\r\n\r\nexport default CloudProviderType;","enum EntityType {\r\n service = 'Service',\r\n subscription = 'Subscription',\r\n cloudAccount = 'CloudAccount',\r\n tag = 'Tag',\r\n tagKey = 'TagKey',\r\n region = 'Region',\r\n product = 'Product',\r\n productCategory = 'ProductCategory',\r\n geography = 'Geography',\r\n meter = 'Meter',\r\n cloudProvider = 'CloudProvider',\r\n reservation = 'Reservation',\r\n customView = 'CustomView'\r\n}\r\n\r\nenum PluralEntityType {\r\n services = 'services',\r\n subscriptions = 'subscriptions',\r\n cloudAccounts = 'cloudAccounts',\r\n tags = 'tags',\r\n tagKeys = 'tagKeys',\r\n regions = 'regions',\r\n products = 'products',\r\n productCategories = 'productCategories',\r\n cloudProviders = 'cloudProviders',\r\n geographies = 'geographies',\r\n meters = 'meters',\r\n reservations = 'reservations'\r\n}\r\n\r\n\r\n\r\nexport const toPlural = (type: EntityType): PluralEntityType => {\r\n switch (type) {\r\n case EntityType.cloudAccount:\r\n return PluralEntityType.cloudAccounts;\r\n case EntityType.cloudProvider:\r\n return PluralEntityType.cloudProviders;\r\n case EntityType.service:\r\n return PluralEntityType.services;\r\n case EntityType.subscription:\r\n return PluralEntityType.subscriptions;\r\n case EntityType.tag:\r\n return PluralEntityType.tags;\r\n case EntityType.tagKey:\r\n return PluralEntityType.tagKeys;\r\n case EntityType.region:\r\n return PluralEntityType.regions;\r\n case EntityType.product:\r\n return PluralEntityType.products;\r\n case EntityType.productCategory:\r\n return PluralEntityType.productCategories;\r\n case EntityType.geography:\r\n return PluralEntityType.geographies;\r\n case EntityType.meter:\r\n return PluralEntityType.meters;\r\n }\r\n}\r\n\r\nexport const fromPlural = (type: PluralEntityType | PluralEntityType[]): EntityType | EntityType[] => {\r\n if (Array.isArray(type)) {\r\n return type.map(t => fromPlural(t) as EntityType);\r\n }\r\n switch (type) {\r\n case PluralEntityType.cloudAccounts:\r\n return EntityType.cloudAccount;\r\n case PluralEntityType.services:\r\n return EntityType.service;\r\n case PluralEntityType.subscriptions:\r\n return EntityType.subscription;\r\n case PluralEntityType.tags:\r\n return EntityType.tag;\r\n case PluralEntityType.tagKeys:\r\n return EntityType.tagKey;\r\n case PluralEntityType.regions:\r\n return EntityType.region;\r\n case PluralEntityType.products:\r\n return EntityType.product;\r\n case PluralEntityType.productCategories:\r\n return EntityType.productCategory;\r\n case PluralEntityType.geographies:\r\n return EntityType.geography;\r\n case PluralEntityType.meters:\r\n return EntityType.meter;\r\n }\r\n}\r\n\r\nexport { PluralEntityType };\r\nexport default EntityType;","enum CloudAccountType {\r\n azureEa = 'AzureEa',\r\n amazon = 'Amazon',\r\n amazonPax8 = 'AmazonPax8',\r\n azurePax8 = 'AzurePax8',\r\n oracle = 'Oracle',\r\n azure = 'Azure',\r\n google = 'Google',\r\n microsoftCsp = 'MicrosoftCsp',\r\n softlayer = 'SoftLayer',\r\n resellerCustomer = 'ResellerCustomer',\r\n rhipe = 'Rhipe',\r\n selfReferential = 'SelfReferential',\r\n vmWare = 'VmWare',\r\n alibaba = 'Alibaba',\r\n custom = 'Custom',\r\n snowflake = 'SnowFlake',\r\n azurecme = 'AzureCme'\r\n}\r\n\r\nexport default CloudAccountType;","enum CloudCredentialType {\r\n eaPortalApi = 'EaPortalApi',\r\n awsIamUsage = 'AwsIamUsage',\r\n loginMicrosoftAuthorization = 'LoginMicrosoftAuthorization',\r\n oracleIamUsage = 'OracleIamUsage',\r\n rhipeApi = 'RhipeApi',\r\n googleJsonUsage = 'GoogleJsonUsage',\r\n azureActiveDirectoryApplication = 'AzureActiveDirectoryApplication',\r\n eaPortalChinaApi = 'EaPortalChinaApi',\r\n alibabaChinaUsage = 'AlibabaChinaUsage',\r\n awsAssumeRoleUsage = 'AwsAssumeRoleUsage'\r\n}\r\n\r\nexport default CloudCredentialType;","enum RawUsageFields {\r\n chargeDate = 'ChargeDate',\r\n sourceCost = 'SourceCost',\r\n cost = 'Cost',\r\n priceChannels = 'PriceChannels',\r\n currency = 'Currency',\r\n unit = 'Unit',\r\n unitsConsumed = 'UnitsConsumed',\r\n meterId = 'MeterId',\r\n meterName = 'MeterName',\r\n serviceId = 'ServiceId',\r\n serviceName = 'ServiceName',\r\n serviceTypes = 'ServiceTypes',\r\n regionName = 'RegionName',\r\n importId = 'ImportId',\r\n productName = 'ProductName',\r\n tags = 'Tags',\r\n resourceName = 'ResourceName',\r\n metaData = 'MetaData',\r\n altServiceId = 'AltServiceId',\r\n altServiceName = 'AltServiceName',\r\n altUsageItemType = 'AltUsageItemType',\r\n cO2e = 'CO2e',\r\n kWh = 'kWh',\r\n costView = 'CostView'\r\n}\r\n\r\nexport default RawUsageFields;","import {ICustomViewSummaryResult} from '@/models';\r\n\r\nexport default interface IBudgetResult {\r\n id: number;\r\n name: string;\r\n tenantId: string;\r\n customView: ICustomViewSummaryResult;\r\n period: BudgetPeriod;\r\n periodStartDate: Date;\r\n budgetType: BudgetType;\r\n budgetPeriodString: string;\r\n amount: number;\r\n growthRatePercentage?: number;\r\n currencyCode: string;\r\n daysLeftInPeriod: number;\r\n currentPeriodStartDate?: Date;\r\n currentPeriodEndDate?: Date;\r\n currentSpend?: number;\r\n currentPercentage?: number;\r\n projectedSpend?: number;\r\n projectedPercentage?: number;\r\n progressPercentage?: number;\r\n budgetSeries: IBudgetSeriesResult[];\r\n}\r\n\r\nexport interface IBudgetSeriesResult {\r\n period: string;\r\n actualCost: number;\r\n budgetedCost: number;\r\n varianceCost: number;\r\n variancePercentage: number;\r\n}\r\n\r\nexport enum BudgetType {\r\n SpecifiedAmount = 0,\r\n}\r\n\r\nexport enum BudgetPeriod {\r\n Weekly = 0,\r\n Monthly = 1,\r\n Quarterly = 2,\r\n Yearly = 3,\r\n}\r\n\r\nexport interface IBudgetCreateModel {\r\n name: string;\r\n customViewId: number;\r\n period: BudgetPeriod;\r\n periodStartDate: Date;\r\n budgetType: BudgetType;\r\n amount: number;\r\n growthRatePercentage?: number;\r\n}","export interface ISpendUsageTableEntityViewModel {\r\n id: string;\r\n name: string;\r\n type: string;\r\n}\r\n\r\nexport interface ISpendUsageTableItemViewModel {\r\n entities: ISpendUsageTableEntityViewModel[];\r\n total: number;\r\n totalConsumption: number;\r\n unit: string;\r\n isOther?: boolean;\r\n isTotal?: boolean;\r\n timestamp: number;\r\n costView?:string;\r\n}\r\n\r\nexport interface ISpendUsageTableSlotViewModel {\r\n header: string;\r\n year: string;\r\n month: string;\r\n day?: string;\r\n itemSlotName: string;\r\n costValuePropName: string;\r\n unitValuePropName: string;\r\n}\r\n\r\nexport interface ISpendUsageTableRecordsViewModel {\r\n monthSlots: ISpendUsageTableSlotViewModel[];\r\n dailySlots: ISpendUsageTableSlotViewModel[];\r\n records: ISpendUsageTableItemViewModel[];\r\n}\r\n\r\nexport const SpendUsageTableConstants = {\r\n consumptionKeySuffix: '_consumption',\r\n slotDateFormat: 'DD-MM-YYYY'\r\n}\r\n","import IMailingListGetPutModel from \"./IMailingListGetPutModel\";\r\nimport { ICustomViewSummaryResult } from './ICustomViewResult';\r\nimport IWebhookGetPutModel from \"./IWebhookGetPutModel\";\r\n\r\nexport interface IPolicyTemplateModel {\r\n id: number;\r\n name: string;\r\n description: string;\r\n category: string;\r\n}\r\n\r\nexport interface IDimensionModel {\r\n id: number;\r\n label: string;\r\n index: number;\r\n tagKey: string;\r\n}\r\n\r\nexport interface IDeltaSpendStrategyModel {\r\n serviceName: string;\r\n triggerMinDeltaPercent?: number;\r\n triggerMinDeltaAmount?: number;\r\n granularity: string;\r\n comparePeriod: string;\r\n comparePeriodQuantity: number;\r\n description: string;\r\n lineItemType: string;\r\n}\r\n\r\nexport interface IAverageSpendStrategyModel {\r\n averageOverDays?: number;\r\n triggerMinDeltaPercent?: number;\r\n triggerMinDeltaAmount?: number;\r\n granularity: string;\r\n comparePeriod: string;\r\n comparePeriodQuantity: number;\r\n description: string;\r\n lineItemType: string;\r\n}\r\n\r\nexport enum CostView {\r\n usageOnly = 'UsageOnly',\r\n usagePlusFees = 'UsagePlusFees',\r\n feesOnly = 'FeesOnly'\r\n}\r\n\r\nexport interface INewSpendStrategyModel {\r\n triggerMinNewAmount?: number;\r\n compareType: string;\r\n granularity: string;\r\n comparePeriod: string;\r\n comparePeriodQuantity: number;\r\n description: string;\r\n lineItemType: string;\r\n}\r\n\r\nexport interface INewAccountStrategyModel {\r\n triggerMinNewAmount?: number;\r\n comparePeriod: string;\r\n comparePeriodQuantity: number;\r\n description: string;\r\n lineItemType: string;\r\n}\r\n\r\nexport interface IRegionalSpendStrategyModel {\r\n triggerMinUsageAmount: number;\r\n triggerMinRegionCount: number;\r\n description: string;\r\n comparePeriod: string;\r\n comparePeriodQuantity: number;\r\n lineItemType: string;\r\n}\r\n\r\nexport interface IPolicyScheduleModel {\r\n id: number;\r\n frequency: string;\r\n frequencyQuantity: number;\r\n day?: number;\r\n nextScheduled: Date;\r\n emailNotifyList: string;\r\n description: string;\r\n}\r\n\r\nexport interface IPolicyResultModel {\r\n id: number;\r\n cloudAccountId?: string;\r\n cloudAccountName: string;\r\n ranAt: Date;\r\n resultCount: number;\r\n scheduleDescription: string;\r\n dimensionLabel: string;\r\n resultPages: { [index: number]: number };\r\n}\r\n\r\nexport interface IPolicyResultWithPolicyModel extends IPolicyResultModel {\r\n policyId: number;\r\n policyName: string;\r\n severity: string;\r\n}\r\n\r\nexport default interface IPolicyModel {\r\n id: number;\r\n name: string;\r\n dimension: IDimensionModel;\r\n severity: string;\r\n description: string;\r\n strategySummary: string;\r\n lineItemType: string;\r\n deltaSpendStrategy?: IDeltaSpendStrategyModel;\r\n newSpendStrategy?: INewSpendStrategyModel; \r\n regionalSpendStrategy?: IRegionalSpendStrategyModel;\r\n newAccountStrategy?: INewAccountStrategyModel;\r\n averageSpendStrategy?: IAverageSpendStrategyModel;\r\n schedule?: IPolicyScheduleModel;\r\n mailingList?: IMailingListGetPutModel;\r\n customView?: Partial | null;\r\n webhook?: Partial | null;\r\n createdDate: Date;\r\n updatedDate: Date;\r\n lastRun?: Date;\r\n lastRunRecordCount: number;\r\n}\r\n\r\nexport interface IPolicySummaryModel {\r\n totalCritical: number;\r\n totalWarning: number;\r\n totalPolicies: number;\r\n totalResultCount: number;\r\n}","import dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport calendar from 'dayjs/plugin/calendar';\r\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\r\ndayjs.extend(utc)\r\ndayjs.extend(calendar);\r\ndayjs.extend(advancedFormat);\r\nexport default dayjs;","import moment from '@/lib/moment';\r\nimport { Granularity } from '@/models';\r\n\r\nexport function granularityForDateRange(\r\n range: [] | [Date] | [Date, Date]\r\n): null | Granularity.daily | Granularity.monthly {\r\n if (!range.length) return null;\r\n if (range.length === 1) return Granularity.daily;\r\n const dayDifference = moment(range[1]).diff(moment(range[0]), 'days');\r\n return dayDifference > 90 ? Granularity.monthly : Granularity.daily;\r\n}\r\n\r\nexport default class DateKey {\r\n public key: string;\r\n public granularity?: string;\r\n public total?: number;\r\n public isCustom: boolean;\r\n public isValid: boolean;\r\n public startDate?: Date;\r\n public endDate?: Date;\r\n\r\n constructor(key: any) {\r\n\r\n if (typeof key !== 'string') {\r\n this.isValid = false;\r\n return;\r\n } else {\r\n this.key = key as string;\r\n }\r\n\r\n if (key === 'custom') {\r\n this.granularity = null;\r\n this.total = null;\r\n this.isCustom = true;\r\n this.isValid = true;\r\n } else if (key === 'lastMonth') {\r\n this.granularity = 'Daily';\r\n this.total = null;\r\n this.isCustom = false;\r\n this.isValid = true;\r\n } else if (key === 'thisMonth') {\r\n this.granularity = 'Daily';\r\n this.total = null;\r\n this.isCustom = false;\r\n this.isValid = true;\r\n } else if (key === 'all') {\r\n this.granularity = 'Monthly';\r\n this.total = null;\r\n this.isCustom = false;\r\n this.isValid = true;\r\n } else if (key.endsWith('d')) {\r\n this.granularity = 'Daily';\r\n this.total = Number(key.substring(0, key.length - 1));\r\n this.isCustom = false;\r\n this.isValid = true;\r\n } else if (key.endsWith('m')) {\r\n this.granularity = 'Monthly';\r\n this.total = Number(key.substring(0, key.length - 1));\r\n this.isCustom = false;\r\n this.isValid = true;\r\n } else {\r\n this.isValid = false;\r\n }\r\n }\r\n\r\n public getEffectiveDateRange(fromDate?: Date | null, toDate?: Date | null): [] | [Date] | [Date, Date] {\r\n if (!this.isValid) return [ undefined, undefined ];\r\n const toDateMoment = toDate ? moment.utc(toDate) : moment.utc();\r\n if (this.key === 'custom') {\r\n return [fromDate, toDate].filter(r => !!r) as [] | [Date] | [Date, Date];\r\n } else if (this.key === 'lastMonth') {\r\n const relativeFrom = toDateMoment.add(-1, 'months');\r\n const endDate = relativeFrom.endOf('month').toDate();\r\n const startDate = relativeFrom.startOf('month').toDate();\r\n return [startDate, endDate];\r\n } else if (this.key === 'thisMonth') {\r\n const relativeFrom = toDateMoment;\r\n const endDate = relativeFrom.endOf('month').toDate();\r\n const startDate = relativeFrom.startOf('month').toDate();\r\n return [startDate, endDate];\r\n } else if (this.key === 'all') {\r\n const relativeFrom = toDateMoment;\r\n const endDate = relativeFrom.endOf('month').toDate();\r\n const startDate = relativeFrom.add(-13, 'months').startOf('month').toDate();\r\n return [startDate, endDate];\r\n } else if (this.key.endsWith('d')) {\r\n const relativeFrom = toDateMoment;\r\n const endDate = relativeFrom.endOf('day').toDate();\r\n const startDate = relativeFrom.add(-1 * this.total, 'days').startOf('day').toDate();\r\n return [startDate, endDate];\r\n } else if (this.key.endsWith('m')) {\r\n const relativeFrom = toDateMoment;\r\n const endDate = relativeFrom.endOf('month').toDate();\r\n const startDate = relativeFrom.add(-1 * this.total, 'months').startOf('month').toDate();\r\n return [startDate, endDate];\r\n }\r\n return [];\r\n }\r\n}\r\n","import { v4 as uuidv4 } from 'uuid';\r\n\r\nexport type PartialPick = Partial & Pick;\r\nexport type OmitExcept = Omit;\r\n\r\nexport type Dictionary = { [key: string]: T[] };\r\n\r\nexport const groupBy = (xs: T[], key: Key): Dictionary => {\r\n return xs.reduce((rv: Dictionary, x: T) => {\r\n (rv[x[key] as unknown as string] = rv[x[key] as unknown as string] || []).push(x);\r\n return rv;\r\n }, {} as Dictionary);\r\n}\r\n\r\nexport const unique = (val: TVal, index: number, self: TVal[]) => !!val && self.indexOf(val) === index;\r\n\r\nexport const uuid = () => uuidv4();\r\n\r\nexport const MAX_DATETIMESTAMP = 8640000000000000;\r\nexport const MIN_DATETIMESTAMP = -1 * MAX_DATETIMESTAMP;\r\nexport const reverseTimestamp = (date: Date | number | string): number => {\r\n if (date instanceof Date) {\r\n return MAX_DATETIMESTAMP - date.getTime();\r\n } else if (typeof date === 'number') {\r\n return MAX_DATETIMESTAMP - date;\r\n } else if (typeof date === 'string') {\r\n return MAX_DATETIMESTAMP - new Date(date).getTime();\r\n } else {\r\n throw new Error(`Unsupported type ${date}`);\r\n }\r\n}\r\n\r\nexport const appendValueToCommaString = (inputArray: string, value: string | string[], separator = ',') =>\r\n (inputArray || '')\r\n .split(separator)\r\n .concat(value)\r\n .filter(unique)\r\n .join(separator);","import DateKey from \"@/lib/DateKey\";\r\nimport EntityType, { PluralEntityType } from \"./EntityType\";\r\nimport Granularity from \"./Granularity\";\r\nimport { ISavedReportResultParams } from \"./ISavedReportResult\";\r\nimport ISpendParameters from \"./ISpendParameters\";\r\nimport { OmitExcept, appendValueToCommaString } from \"@/lib\";\r\nimport { SpendUsageOptions } from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\n\r\nexport const generateSpendUsageOptionsFromReport = (r: ISavedReportResultParams): OmitExcept => {\r\n const dateKey = new DateKey(r.dateRangeKey);\r\n const fromDate = dateKey.isCustom ? new Date(r.fromDate) : null;\r\n const toDate = dateKey.isCustom ? new Date(r.toDate) : null;\r\n const dates = dateKey.getEffectiveDateRange(fromDate, toDate);\r\n\r\n const p: OmitExcept = {\r\n granularity: r.granularity === Granularity.daily || r.granularity === Granularity.monthly\r\n ? r.granularity\r\n : Granularity.daily,\r\n toDate: dates[1],\r\n fromDate: dates[0],\r\n topXResults: r.topXResults,\r\n dateRangeKey: r.dateRangeKey,\r\n savedViewId: r.savedViewId,\r\n forecastRangeKey: r.granularity === Granularity.daily ? '7d' : '3m'\r\n };\r\n\r\n const subscriptionIds: string[] = [],\r\n serviceIds: string[] = [],\r\n cloudAccountIds: string[] = [],\r\n productIds: string[] = [],\r\n regionNames: string[] = [],\r\n geographyNames: string[] = [];\r\n let tag: string | null = null;\r\n let cloudProvider: string | null = null;\r\n let savedViewId: string | null = null;\r\n let productCategory: string | null = null;\r\n\r\n r.filters.forEach((i) => {\r\n if (i.type === EntityType.subscription) {\r\n subscriptionIds.push(i.id);\r\n } else if (i.type === EntityType.service) {\r\n serviceIds.push(i.id);\r\n } else if (i.type === EntityType.cloudAccount) {\r\n cloudAccountIds.push(i.id);\r\n } else if (i.type === EntityType.product) {\r\n productIds.push(i.id);\r\n } else if (i.type === EntityType.region) {\r\n regionNames.push(i.name);\r\n } else if (i.type === EntityType.geography) {\r\n geographyNames.push(i.name);\r\n } else if (i.type === EntityType.tag) {\r\n tag = i.id;\r\n } else if (i.type === EntityType.cloudProvider) {\r\n cloudProvider = i.name;\r\n } else if (i.type === EntityType.customView) {\r\n savedViewId = i.id;\r\n } else if (i.type === EntityType.productCategory) {\r\n productCategory = i.name;\r\n }\r\n });\r\n\r\n if (productIds.length)\r\n p.productId = productIds[0];\r\n if (cloudAccountIds.length)\r\n p.cloudAccountId = cloudAccountIds[0];\r\n if (serviceIds.length)\r\n p.serviceId = serviceIds[0];\r\n if (subscriptionIds.length)\r\n p.subscriptionIds = subscriptionIds;\r\n if (serviceIds.length)\r\n p.serviceId = serviceIds[0];\r\n if (regionNames.length)\r\n p.regionName = regionNames[0];\r\n if (geographyNames.length)\r\n p.geographyName = geographyNames[0];\r\n if (tag)\r\n p.tagKeyValue = tag;\r\n if (cloudProvider)\r\n p.providerType = cloudProvider;\r\n if (savedViewId)\r\n p.savedViewId = savedViewId;\r\n if (productCategory)\r\n p.productCategory = productCategory;\r\n\r\n const segregatedBy = (r.segregateBy || '').split(',');\r\n if (segregatedBy.length > 1) {\r\n p.segregateBy = segregatedBy as PluralEntityType[];\r\n } else if (segregatedBy.length) {\r\n p.segregateBy = segregatedBy[0] as PluralEntityType;\r\n }\r\n\r\n return p;\r\n}\r\n\r\nexport const generateSpendParametersFromReport = (r: ISavedReportResultParams): OmitExcept => {\r\n\r\n const dateKey = new DateKey(r.dateRangeKey);\r\n const fromDate = dateKey.isCustom ? new Date(r.fromDate) : null;\r\n const toDate = dateKey.isCustom ? new Date(r.toDate) : null;\r\n const dates = dateKey.getEffectiveDateRange(fromDate, toDate);\r\n\r\n const p: OmitExcept = {\r\n granularity: r.granularity === Granularity.daily || r.granularity === Granularity.monthly\r\n ? r.granularity\r\n : Granularity.daily,\r\n toDate: dates[1].toISOString(),\r\n fromDate: dates[0].toISOString(),\r\n topXResults: r.topXResults,\r\n topBy: '',\r\n cloudAccountIds: '',\r\n geographyNames: '',\r\n productCategories: '',\r\n productIds: '',\r\n providerType: '',\r\n regionNames: '',\r\n serviceIds: '',\r\n tagKeyValue: '',\r\n subscriptionIds: '',\r\n tagKeyValues: '',\r\n reservationId: '',\r\n };\r\n\r\n const subscriptionIds: string[] = [],\r\n serviceIds: string[] = [],\r\n cloudAccountIds: string[] = [],\r\n productIds: string[] = [],\r\n regionNames: string[] = [],\r\n geographyNames: string[] = [];\r\n let tag: string | null = null;\r\n let cloudProvider: string | null = null;\r\n let savedViewId: string | null = null;\r\n\r\n r.filters.forEach((i) => {\r\n if (i.type === EntityType.subscription) {\r\n subscriptionIds.push(i.id);\r\n } else if (i.type === EntityType.service) {\r\n serviceIds.push(i.id);\r\n } else if (i.type === EntityType.cloudAccount) {\r\n cloudAccountIds.push(i.id);\r\n } else if (i.type === EntityType.product) {\r\n productIds.push(i.id);\r\n } else if (i.type === EntityType.region) {\r\n regionNames.push(i.name);\r\n } else if (i.type === EntityType.geography) {\r\n geographyNames.push(i.name);\r\n } else if (i.type === EntityType.tag) {\r\n tag = i.id;\r\n } else if (i.type === EntityType.cloudProvider) {\r\n cloudProvider = i.name;\r\n } else if (i.type === EntityType.customView) {\r\n savedViewId = i.id;\r\n }\r\n });\r\n\r\n p.productIds = appendValueToCommaString('', productIds);\r\n p.cloudAccountIds = appendValueToCommaString('', cloudAccountIds);\r\n p.serviceIds = appendValueToCommaString('', serviceIds);\r\n p.subscriptionIds = appendValueToCommaString('', subscriptionIds);\r\n p.regionNames = appendValueToCommaString('', regionNames);\r\n p.geographyNames = appendValueToCommaString('', geographyNames);\r\n p.tagKeyValue = tag;\r\n p.providerType = cloudProvider;\r\n p.savedViewId = savedViewId || r.savedViewId || null;\r\n\r\n return p;\r\n};","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('customView-card-dialog',{attrs:{\"value\":_vm.value,\"customView\":_vm.customView,\"loading\":_vm.$wait.is('creatingCustomView')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ form, formId, isValid, loading, close }){return [_c('post-customView-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingCustomView'),expression:\"'creatingCustomView'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCreation($event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('customView-card',{attrs:{\"value\":_vm.customView,\"init\":_vm.customView,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(actionBindings){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_vm._t(\"default\",null,null,{ ...actionBindings, close })]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.title || _vm.$t('setCustomViewCard.title'),\"subtitle\":_vm.subtitle || _vm.$t('setCustomViewCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.form,\"formId\":formId,\"isValid\":_vm.isValid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-select',{attrs:{\"label\":\"Filter by\",\"multiple\":\"\",\"items\":_vm.displayFilterTypes,\"item-text\":\"name\",\"item-value\":\"id\",\"chips\":\"\",\"deletable-chips\":\"\"},model:{value:(_vm.filterTypes),callback:function ($$v) {_vm.filterTypes=$$v},expression:\"filterTypes\"}}),(_vm.shouldHaveCloudAccountFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.cloudAccounts.title'),\"types\":['CloudAccount'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.cloudAccounts),callback:function ($$v) {_vm.cloudAccounts=$$v},expression:\"cloudAccounts\"}}):_vm._e(),(_vm.shouldHaveSubscriptionFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.subscriptions.title'),\"types\":['Subscription'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.subscriptions),callback:function ($$v) {_vm.subscriptions=$$v},expression:\"subscriptions\"}}):_vm._e(),(_vm.shouldHaveProductFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.products.title'),\"types\":['Product'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.products),callback:function ($$v) {_vm.products=$$v},expression:\"products\"}}):_vm._e(),(_vm.shouldHaveServiceFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.services.title'),\"types\":['Service'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.services),callback:function ($$v) {_vm.services=$$v},expression:\"services\"}}):_vm._e(),(_vm.shouldHaveRegionFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.regions.title'),\"types\":['Region'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.regions),callback:function ($$v) {_vm.regions=$$v},expression:\"regions\"}}):_vm._e(),(_vm.shouldHaveGeographyFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.geographies.title'),\"types\":['Geography'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.geographies),callback:function ($$v) {_vm.geographies=$$v},expression:\"geographies\"}}):_vm._e(),(_vm.shouldHaveProductCategoryFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.productCategories.title'),\"types\":['ProductCategory'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.productCategories),callback:function ($$v) {_vm.productCategories=$$v},expression:\"productCategories\"}}):_vm._e(),(_vm.shouldHaveProviderTypeFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.providerTypes.title'),\"types\":['CloudProvider'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.providerTypes),callback:function ($$v) {_vm.providerTypes=$$v},expression:\"providerTypes\"}}):_vm._e(),(_vm.shouldHaveTagFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.tagKeyValues.title'),\"types\":['Tag'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.tagKeyValues),callback:function ($$v) {_vm.tagKeyValues=$$v},expression:\"tagKeyValues\"}}):_vm._e(),(_vm.shouldHaveTagKeyFilters)?_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('setCustomViewCard.tagKeys.title'),\"types\":['TagKey'],\"multiple\":true,\"disable-save-custom-view\":\"\"},model:{value:(_vm.tagKeys),callback:function ($$v) {_vm.tagKeys=$$v},expression:\"tagKeys\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, computed, watch } from 'vue';\r\nimport { ISearchEntityViewModel } from '@/components/Common/EntitySearchAutocomplete.vue';\r\nimport { ICustomViewResult, IDescriptorResult } from '@/models';\r\nimport EntityType, { toPlural } from '@/models/EntityType';\r\nimport { CloudProviderType } from '@/models';\r\n\r\nconst convert = (m: ISearchEntityViewModel): IDescriptorResult => ({ id: m.Id, name: m.Name });\r\nconst createEntity = (id: string, name: string, entityType: EntityType, index: number) =>\r\n ({\r\n Id: id,\r\n Name: name,\r\n Description: null,\r\n Provider: null,\r\n Type: entityType,\r\n EntityIndex: index,\r\n } as ISearchEntityViewModel);\r\n\r\nconst filters = (init) => {\r\n const filters = [] as EntityType[];\r\n if (init?.cloudAccountIds?.length > 0) {\r\n filters.push(EntityType.cloudAccount);\r\n }\r\n if (init?.subscriptionIds?.length > 0) {\r\n filters.push(EntityType.subscription);\r\n }\r\n if (init?.sysProductIds?.length > 0) {\r\n filters.push(EntityType.product);\r\n }\r\n if (init?.sysServiceIds?.length > 0) {\r\n filters.push(EntityType.service);\r\n }\r\n if (init?.regions?.length > 0) {\r\n filters.push(EntityType.region);\r\n }\r\n if (init?.geographies?.length > 0) {\r\n filters.push(EntityType.geography);\r\n }\r\n if (init?.productCategories?.length > 0) {\r\n filters.push(EntityType.productCategory);\r\n }\r\n if (init?.cloudProviderTypes?.length > 0) {\r\n filters.push(EntityType.cloudProvider);\r\n }\r\n if (init?.tagKeyValues?.length > 0) {\r\n filters.push(EntityType.tag);\r\n }\r\n if (init?.tagKeys?.length > 0) {\r\n filters.push(EntityType.tagKey);\r\n }\r\n return filters;\r\n};\r\n\r\nconst createFilters = (currentFilters, array, entityType) => {\r\n const elementInArray = currentFilters?.find((element) => element === entityType);\r\n if (elementInArray && array?.length === 0) {\r\n const removeFilter = currentFilters.filter((filter) => filter !== entityType);\r\n return removeFilter;\r\n }\r\n if (!elementInArray && array?.length > 0) {\r\n currentFilters.push(entityType);\r\n }\r\n return currentFilters;\r\n};\r\n\r\nconst getCloudAccounts = (cloudAccountIds) => {\r\n return (\r\n cloudAccountIds?.map((cloudAccountId: IDescriptorResult, index: number) =>\r\n createEntity(cloudAccountId.id, cloudAccountId.name, EntityType.cloudAccount, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getSubscriptions = (subscriptionIds) => {\r\n return (\r\n subscriptionIds?.map((subscriptionId: IDescriptorResult, index: number) =>\r\n createEntity(subscriptionId.id, subscriptionId.name, EntityType.subscription, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getProducts = (sysProductIds) => {\r\n return (\r\n sysProductIds?.map((productId: IDescriptorResult, index: number) =>\r\n createEntity(productId.id, productId.name, EntityType.product, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getServices = (sysServiceIds) => {\r\n return (\r\n sysServiceIds?.map((serviceId: IDescriptorResult, index: number) =>\r\n createEntity(serviceId.id, serviceId.name, EntityType.service, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getRegions = (regions?) => {\r\n return (\r\n regions?.map((region: string, index: number) => createEntity(region, region, EntityType.region, index)) ?? []\r\n );\r\n};\r\n\r\nconst getGeographies = (geographies) => {\r\n return (\r\n geographies?.map((geography: string, index: number) =>\r\n createEntity(geography, geography, EntityType.geography, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getProductCategories = (productCategories) => {\r\n return (\r\n productCategories?.map((productCategory: string, index: number) =>\r\n createEntity(productCategory, productCategory, EntityType.productCategory, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getProviderTypes = (cloudProviderTypes) => {\r\n return (\r\n cloudProviderTypes?.map((cloudProviderType: string, index: number) =>\r\n createEntity(\r\n cloudProviderType,\r\n Object.values(CloudProviderType)[cloudProviderType],\r\n EntityType.cloudProvider,\r\n index\r\n )\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getTagKeyValues = (tagKeyValues) => {\r\n return (\r\n tagKeyValues?.map((tagKeyValue: string, index: number) =>\r\n createEntity(tagKeyValue, tagKeyValue, EntityType.tag, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nconst getTagKeys = (tagKeys) => {\r\n return (\r\n tagKeys?.map((existingTag: string, index: number) =>\r\n createEntity(existingTag, existingTag, EntityType.tagKey, index)\r\n ) ?? []\r\n );\r\n};\r\n\r\nexport default defineComponent({\r\n props: { title: String, subtitle: String, loading: Boolean, init: Object },\r\n setup(p) {\r\n const isValid = ref(false);\r\n const id = ref(p.init?.id ?? -1);\r\n const name = ref(p.init?.name ?? '');\r\n\r\n const allFilterTypes = ref([\r\n EntityType.cloudAccount,\r\n EntityType.cloudProvider,\r\n EntityType.geography,\r\n EntityType.product,\r\n EntityType.service,\r\n EntityType.region,\r\n EntityType.tag,\r\n EntityType.tagKey,\r\n EntityType.subscription,\r\n EntityType.productCategory,\r\n ]);\r\n\r\n const filterTypes = ref(filters(p.init));\r\n\r\n const shouldHaveCloudAccountFilters = computed(() => filterTypes.value.includes(EntityType.cloudAccount));\r\n const cloudAccounts = ref(getCloudAccounts(p.init?.cloudAccountIds));\r\n\r\n const shouldHaveSubscriptionFilters = computed(() => filterTypes.value.includes(EntityType.subscription));\r\n const subscriptions = ref(getSubscriptions(p.init?.subscriptionIds));\r\n\r\n const shouldHaveProductFilters = computed(() => filterTypes.value.includes(EntityType.product));\r\n const products = ref(getProducts(p.init?.sysProductIds));\r\n\r\n const shouldHaveServiceFilters = computed(() => filterTypes.value.includes(EntityType.service));\r\n const services = ref(getServices(p.init?.sysServiceIds));\r\n\r\n const shouldHaveRegionFilters = computed(() => filterTypes.value.includes(EntityType.region));\r\n const regions = ref(getRegions(p.init?.regions));\r\n\r\n const shouldHaveGeographyFilters = computed(() => filterTypes.value.includes(EntityType.geography));\r\n const geographies = ref(getGeographies(p.init?.geographies));\r\n\r\n const shouldHaveProductCategoryFilters = computed(() => filterTypes.value.includes(EntityType.productCategory));\r\n const productCategories = ref(getProductCategories(p.init?.productCategories));\r\n\r\n const shouldHaveProviderTypeFilters = computed(() => filterTypes.value.includes(EntityType.cloudProvider));\r\n const providerTypes = ref(getProviderTypes(p.init?.cloudProviderTypes));\r\n\r\n const shouldHaveTagFilters = computed(() => filterTypes.value.includes(EntityType.tag));\r\n const tagKeyValues = ref(getTagKeyValues(p.init?.tagKeyValues));\r\n\r\n const shouldHaveTagKeyFilters = computed(() => filterTypes.value.includes(EntityType.tagKey));\r\n const tagKeys = ref(getTagKeys(p.init?.tagKeys));\r\n\r\n const form = computed(() => {\r\n return {\r\n id: id.value,\r\n name: name.value,\r\n cloudAccountIds: cloudAccounts.value.map(convert),\r\n subscriptionIds: subscriptions.value.map(convert),\r\n sysProductIds: products.value.map(convert),\r\n sysServiceIds: services.value.map(convert),\r\n regions: regions.value.map((c) => c.Name),\r\n geographies: geographies.value.map((c) => c.Id),\r\n productCategories: productCategories.value.map((c) => c.Name),\r\n cloudProviderTypes: providerTypes.value.map((c) => c.Id),\r\n tagKeyValues: tagKeyValues.value.map((c) => c.Id),\r\n tagKeys: tagKeys.value.map((t) => t.Id),\r\n } as ICustomViewResult;\r\n });\r\n return {\r\n id,\r\n name,\r\n cloudAccounts,\r\n subscriptions,\r\n products,\r\n services,\r\n regions,\r\n geographies,\r\n productCategories,\r\n providerTypes,\r\n tagKeyValues,\r\n tagKeys,\r\n isValid,\r\n form,\r\n filterTypes,\r\n shouldHaveCloudAccountFilters,\r\n shouldHaveGeographyFilters,\r\n shouldHaveProductCategoryFilters,\r\n shouldHaveProductFilters,\r\n shouldHaveProviderTypeFilters,\r\n shouldHaveRegionFilters,\r\n shouldHaveServiceFilters,\r\n shouldHaveSubscriptionFilters,\r\n shouldHaveTagFilters,\r\n shouldHaveTagKeyFilters,\r\n allFilterTypes,\r\n };\r\n },\r\n watch: {\r\n 'init.id': function (newVal, oldVal) {\r\n this.id = newVal;\r\n },\r\n 'init.name': function (newVal, oldVal) {\r\n this.name = newVal;\r\n },\r\n 'init.cloudAccountIds': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.cloudAccount);\r\n this.cloudAccounts = getCloudAccounts(newVal);\r\n },\r\n 'init.subscriptionIds': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.subscription);\r\n this.subscriptions = getSubscriptions(newVal);\r\n },\r\n 'init.sysProductIds': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.product);\r\n this.products = getProducts(newVal);\r\n },\r\n 'init.sysServiceIds': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.service);\r\n this.services = getServices(newVal);\r\n },\r\n 'init.regions': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.region);\r\n this.regions = getRegions(newVal);\r\n },\r\n 'init.geographies': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.geography);\r\n this.geographies = getGeographies(newVal);\r\n },\r\n 'init.productCategories': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.productCategory);\r\n this.productCategories = getProductCategories(newVal);\r\n },\r\n 'init.cloudProviderTypes': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.cloudProvider);\r\n this.providerTypes = getProviderTypes(newVal);\r\n },\r\n 'init.tagKeyValues': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.tag);\r\n this.tagKeyValues = getTagKeyValues(newVal);\r\n },\r\n 'init.tagKeys': function (newVal, oldVal) {\r\n this.filterTypes = createFilters(this.filterTypes, newVal, EntityType.tagKey);\r\n this.tagKeys = getTagKeys(newVal);\r\n },\r\n },\r\n computed: {\r\n displayFilterTypes() {\r\n return this.allFilterTypes.map((i: EntityType) => ({\r\n id: i,\r\n name: this.$t(`setCustomViewCard.${toPlural(i)}.title`),\r\n }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCustomViewCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCustomViewCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCustomViewCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCustomViewCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetCustomViewCard.vue?vue&type=template&id=4b033838&\"\nimport script from \"./SetCustomViewCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetCustomViewCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetCustomViewCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewCardDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewCardDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomViewCardDialog.vue?vue&type=template&id=274908d4&\"\nimport script from \"./CustomViewCardDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomViewCardDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/customViews\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(_vm.$t('postCustomViewButton.saveAndView'))+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postCustomViewButton.errorMessage\": \"There was an error encountered while creating this customView. If everything looks right please contact support so we can help you :)\",\r\n \"postCustomViewButton.saveAndView\": \"Save and View\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostCustomViewButton.vue?vue&type=template&id=406ed54e&\"\nimport script from \"./PostCustomViewButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PostCustomViewButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postCustomViewDialog.events.successfulCreation\": \"Successfully created the customView '{customViewName}'\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostCustomViewDialog.vue?vue&type=template&id=21d2b76e&\"\nimport script from \"./PostCustomViewDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./PostCustomViewDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","// Function to convert a string to a Uint8Array\r\nexport const stringToUint = (string: string): Promise => {\r\n const blob = stringToBlob(string);\r\n return blobToUint8Array(blob);\r\n};\r\n\r\n// Function to serialize a string to a Blob\r\nexport const stringToBlob = (string: string): Blob => {\r\n return new Blob([string], { type: 'text/plain' });\r\n};\r\n\r\n// Function to convert a Blob to a Uint8Array\r\nexport const blobToUint8Array = (blob: Blob): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = function (event) {\r\n resolve(new Uint8Array(event.target.result as ArrayBuffer));\r\n };\r\n reader.onerror = function (error) {\r\n reject(error);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n });\r\n};\r\n\r\n// Function to deserialize a Blob back to a string\r\nexport const blobToString = (blob: Blob): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = function (event) {\r\n resolve(event.target.result as string);\r\n };\r\n reader.onerror = function (error) {\r\n reject(error);\r\n };\r\n reader.readAsText(blob);\r\n });\r\n};\r\n","import * as Models from \"@/models\";\r\nimport ApiV2 from \"./ApiV2\";\r\nimport moment from \"@/lib/moment\";\r\nimport { appendValueToCommaString, OmitExcept } from \"@/lib\";\r\nimport { blobToString, stringToUint } from \"./Uint\";\r\nimport * as G from \"../merge/Grid\";\r\n\r\nexport const getCustomerUsersApi = async (\r\n customerId: string,\r\n): Promise => {\r\n return ApiV2.http.get(`/api/customers/${customerId}/users`).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const getUsage = async (\r\n segregateBy: Models.PluralEntityType,\r\n params: Models.ISpendParameters,\r\n) => {\r\n return await ApiV2.http.get(`/api/spend/${segregateBy.toLowerCase()}`, {\r\n params,\r\n }).then((r) =>\r\n r.data as Models.ISpendResult\r\n );\r\n};\r\n\r\nexport const getSpend = async (\r\n params: Models.ISpendParameters & {\r\n segregateBy: string | string[];\r\n fields?: string | Models.SpendFieldNames[];\r\n },\r\n) => {\r\n if (params.fields && Array.isArray(params.fields)) {\r\n params.fields = params.fields.join(\",\");\r\n }\r\n if (params.segregateBy && Array.isArray(params.segregateBy)) {\r\n params.segregateBy = params.segregateBy.join(\",\");\r\n }\r\n return await ApiV2.http.get(\"/api/spend\", { params }).then((r) =>\r\n r.data as Models.ISpendResult\r\n );\r\n};\r\n\r\nexport const getForecast = async (\r\n params: Models.ISpendParameters,\r\n dateRangeKey: string = null,\r\n forecastRangeKey: string = null,\r\n): Promise => {\r\n switch (dateRangeKey) {\r\n case \"custom\":\r\n return null;\r\n case \"lastMonth\":\r\n case \"thisMonth\":\r\n case \"all\":\r\n break;\r\n default:\r\n if (dateRangeKey.endsWith(\"d\") || dateRangeKey.endsWith(\"m\")) {\r\n let forecastDuration = 0;\r\n let forecastUnit: \"days\" | \"months\" = \"days\"; // Default unit\r\n\r\n if (forecastRangeKey) {\r\n const match = forecastRangeKey.match(/^(\\d+)(d|m)$/);\r\n if (match) {\r\n const [, value, unit] = match;\r\n forecastDuration = parseInt(value, 10);\r\n forecastUnit = unit === \"m\" ? \"months\" : \"days\";\r\n }\r\n }\r\n\r\n // Correct conversion based on granularity\r\n if (params.granularity === Models.Granularity.monthly) {\r\n const monthsToAdd = forecastUnit === \"days\"\r\n ? Math.ceil(forecastDuration / 30) // Convert days to months\r\n : forecastDuration || 2; // Default to 2 months if unspecified\r\n params = {\r\n ...params,\r\n toDate: moment.utc().add(monthsToAdd, \"months\").endOf(\r\n \"month\",\r\n ).toDate().toISOString(),\r\n };\r\n } else if (params.granularity === Models.Granularity.daily) {\r\n const daysToAdd = forecastUnit === \"months\"\r\n ? forecastDuration * 30 // Convert months to days\r\n : forecastDuration || 7; // Default to 7 days if unspecified\r\n params = {\r\n ...params,\r\n toDate: moment.utc().add(daysToAdd, \"days\").toDate()\r\n .toISOString(),\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n return await ApiV2.http.get(`/api/forecast`, { params })\r\n .catch((err) => {\r\n if (err.response.status !== 400) {\r\n console.error(\"Error loading forecast data\", err);\r\n }\r\n return { data: {} };\r\n })\r\n .then((r) => {\r\n //Suggestion: return maxUsageDate as part of the results from the back-end API\r\n const maxUsageDate = r.data.forecasts && r.data.forecasts.length > 0\r\n ? r.data.forecasts.reduce((max, item) => {\r\n return new Date(item.usageDate) > new Date(max.usageDate)\r\n ? item\r\n : max;\r\n }).usageDate\r\n : new Date().toISOString();\r\n const data = r.data as Models.IForecastResult;\r\n data.maxUsageDate = maxUsageDate ?? new Date().toISOString();\r\n return data;\r\n });\r\n};\r\n\r\nexport const getNativeCO2e = async (\r\n segregateBy: Models.PluralEntityType.subscriptions,\r\n params: Models.ISpendParameters,\r\n scope: \"Scope1\" | \"Scope2\" | \"Scope3\",\r\n): Promise> => {\r\n return await ApiV2.http\r\n .get(`/api/nativeco2e/${segregateBy.toLowerCase()}/${scope}`, {\r\n params: { ...params, fields: \"CO2e\" },\r\n })\r\n .then((r) =>\r\n r.data as Models.ICO2EResult\r\n )\r\n .then((r) => {\r\n r.groupings.forEach((g) => {\r\n g.records.forEach((r) => {\r\n r.kwH = 100;\r\n });\r\n });\r\n return r;\r\n });\r\n};\r\n\r\nexport const getCO2e = async (\r\n segregateBy: Models.PluralEntityType,\r\n params: Models.ISpendParameters,\r\n): Promise> => {\r\n return await ApiV2.http\r\n .get(`/api/co2e/${segregateBy.toLowerCase()}`, { params })\r\n .then((r) =>\r\n r.data as Models.ICO2EResult\r\n );\r\n};\r\n\r\nexport const getForecastCO2e = async (\r\n params: Models.ISpendParameters,\r\n dateRangeKey: string = null,\r\n): Promise => {\r\n switch (dateRangeKey) {\r\n case \"custom\":\r\n case \"lastMonth\":\r\n case \"thisMonth\":\r\n case \"all\":\r\n break;\r\n default:\r\n if (dateRangeKey.endsWith(\"d\") || dateRangeKey.endsWith(\"m\")) {\r\n if (params.granularity === Models.Granularity.monthly) {\r\n params = {\r\n ...params,\r\n toDate: moment.utc().add(2, \"months\").endOf(\"month\")\r\n .toDate().toISOString(),\r\n };\r\n } else if (params.granularity === Models.Granularity.daily) {\r\n params = {\r\n ...params,\r\n toDate: moment.utc().add(7, \"days\").toDate()\r\n .toISOString(),\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n return await ApiV2.http.get(`/api/forecast/co2e`, { params })\r\n .catch((err) => {\r\n if (err.response.status != 400) {\r\n console.error(\"Error loading forecast data\", err);\r\n }\r\n return { data: {} };\r\n })\r\n .then((r) => {\r\n const maxUsageDate = r.data.forecasts && r.data.forecasts.length > 0\r\n ? r.data.forecasts.reduce((max, item) => {\r\n return new Date(item.usageDate) > new Date(max.usageDate)\r\n ? item\r\n : max;\r\n }).usageDate\r\n : new Date().toISOString();\r\n const data = r.data as Models.IForecastCo2eResult;\r\n data.maxUsageDate = maxUsageDate ?? new Date().toISOString();\r\n return data;\r\n });\r\n};\r\n\r\nexport const getTagUsage = async (\r\n min: Date,\r\n max: Date,\r\n dimensions: string[],\r\n granularity: Models.Granularity = Models.Granularity.daily,\r\n): Promise => {\r\n return ApiV2.http.get(\r\n `/api/report/tagoverview?min=${min.toISOString()}&max=${max.toISOString()}&dimensions=${\r\n appendValueToCommaString(\"\", dimensions)\r\n }&granularity=${granularity}`,\r\n )\r\n .then((r) => r.data as Models.ISpendByTagResult);\r\n};\r\n\r\nexport const getAllTagKeys = async (): Promise<\r\n Models.IAllTagKeyRequestResult\r\n> => {\r\n return ApiV2.http.get(\"/api/tags/keys\").then((r) =>\r\n r.data as Models.IAllTagKeyRequestResult\r\n );\r\n};\r\n\r\nexport const getTrends = async <\r\n TType extends\r\n | Models.PluralEntityType.products\r\n | Models.PluralEntityType.services\r\n | Models.PluralEntityType.subscriptions\r\n | Models.PluralEntityType.cloudAccounts,\r\n>(segregateBy: TType, params: Models.ICompareParameters): Promise<\r\n TType extends Models.PluralEntityType.products\r\n ? Models.ICompareResult\r\n : TType extends Models.PluralEntityType.services\r\n ? Models.ICompareResult\r\n : TType extends Models.PluralEntityType.subscriptions\r\n ? Models.ICompareResult\r\n : TType extends Models.PluralEntityType.cloudAccounts\r\n ? Models.ICompareResult\r\n : never\r\n> => {\r\n return await ApiV2.http\r\n .get(`/api/cost-explorer/${segregateBy.toLowerCase()}`, { params })\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getTrendsSummary = async (\r\n segregateBy: Models.PluralEntityType.subscriptions,\r\n params: Models.IDaysRangeParameter,\r\n): Promise => {\r\n return await ApiV2.http\r\n .get(`/api/cost-explorer/${segregateBy.toLowerCase()}/summary`, {\r\n params,\r\n })\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getCustomerSummary = async (\r\n min: Date,\r\n max: Date,\r\n): Promise => {\r\n const params = { min: min.toISOString(), max: max.toISOString() };\r\n return await ApiV2.http\r\n .get(\"/api/customers/summary\", { params })\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getRecommendations = async (): Promise<\r\n Models.IGetRecommendationsQueryResponse\r\n> => {\r\n return await ApiV2.http\r\n .get(\"api/recommendations\")\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getMissingCo2eReport = async (\r\n params: Partial,\r\n): Promise => {\r\n return await ApiV2.http\r\n .get(\"api/report/missingco2e\", { params })\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getSavedReports = async (): Promise<\r\n Models.ISavedReportResult[]\r\n> => {\r\n return await ApiV2.http.get(\"/api/savedreports\").then((r) => r.data);\r\n};\r\n\r\nexport const getSavedReport = async (\r\n id: string,\r\n): Promise => {\r\n return await ApiV2.http.get(`/api/savedreports/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const createSavedReport = async (\r\n r: Models.ISavedReportResult,\r\n): Promise => {\r\n return await ApiV2.http.post(\"/api/savedreports\", r).then((r) => r.data);\r\n};\r\n\r\nexport const getCustomViews = async (): Promise => {\r\n return await ApiV2.http.get(\"/api/customViews\").then((r) => r.data);\r\n};\r\n\r\nexport const getCustomView = async (\r\n id: string,\r\n): Promise => {\r\n return await ApiV2.http.get(`/api/customViews/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const createCustomView = async (\r\n customView: Models.ICustomViewResult,\r\n): Promise => {\r\n return await ApiV2.http.post(\"/api/customViews\", customView).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const updateCustomView = async (\r\n id: string,\r\n customView: Models.ICustomViewResult,\r\n): Promise => {\r\n return await ApiV2.http.put(`/api/customViews/${id}`, customView).then((\r\n r,\r\n ) => r.data);\r\n};\r\n\r\nexport const deleteCustomView = async (id: string): Promise => {\r\n return await ApiV2.http.delete(`/api/customViews/${id}`).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const getApiKeys = async (): Promise => {\r\n return await ApiV2.http\r\n .get(\"api/apikeys\")\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const getAllTagMappings = async (): Promise<\r\n Models.IConditionalActionRuleResult[]\r\n> => {\r\n return await ApiV2.http\r\n .get(\"api/actions/rules\")\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const deleteTagMapping = async (id: number): Promise => {\r\n await ApiV2.http.delete(`api/actions/rule/${id}`);\r\n};\r\n\r\nexport const updateTagMapping = async (\r\n id: number,\r\n model: Models.IConditionalActionRuleResult,\r\n): Promise => {\r\n return await ApiV2.http.put(`api/actions/rule/${id}`, model).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const createTagMapping = async (\r\n model: Models.IConditionalActionRuleResult,\r\n): Promise => {\r\n return await ApiV2.http.post(\"api/actions/rule\", model).then((r) => r.data);\r\n};\r\n\r\nexport const reorderTagMappings = async (\r\n models: Partial[],\r\n): Promise => {\r\n return await ApiV2.http.post(\"api/actions/rules/reorder\", models).then(\r\n (r) => r.data\r\n );\r\n};\r\n\r\nexport const getAllSpendLimits = async (): Promise<\r\n Models.ISpendLimitMetaResult[]\r\n> => {\r\n return await ApiV2.http.get(\"api/metadata/spendlimits\").then((r) => r.data);\r\n};\r\n\r\nexport const getAllBudgets = async (): Promise => {\r\n return await ApiV2.http.get(\"api/budgets\").then((r) => r.data);\r\n};\r\n\r\nexport const getCustomViewBudgets = async (\r\n id: string,\r\n): Promise => {\r\n return await ApiV2.http.get(`api/customViews/${id}/budgets`).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const getBudget = async (id: number): Promise => {\r\n return await ApiV2.http.get(`api/budgets/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const deleteBudget = async (id: number): Promise => {\r\n await ApiV2.http.delete(`api/budgets/${id}`);\r\n};\r\n\r\nexport const createBudget = async (\r\n b: Models.IBudgetCreateModel,\r\n): Promise => {\r\n return await ApiV2.http.post(\"api/budgets\", b).then((r) => r.data);\r\n};\r\n\r\nexport const createPolicy = async (\r\n policyModel: Models.IPolicyModel,\r\n): Promise => {\r\n return await ApiV2.http.post(\"/api/policies\", policyModel).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const putPolicy = async (\r\n policyModel: Models.IPolicyModel,\r\n): Promise => {\r\n return await ApiV2.http.put(`/api/policies/${policyModel.id}`, policyModel)\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const listPolicies = async (): Promise => {\r\n return await ApiV2.http.get(\"/api/policies\").then((r) => r.data);\r\n};\r\n\r\nexport const listAllResults = async (): Promise<\r\n Models.IPolicyResultWithPolicyModel[]\r\n> => {\r\n return await ApiV2.http.get(\"/api/policies/results\").then((r) => r.data);\r\n};\r\n\r\nexport const getPolicy = async (id: number): Promise => {\r\n return await ApiV2.http.get(`/api/policies/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const listPolicyResults = async (\r\n id: number,\r\n): Promise => {\r\n return await ApiV2.http.get(`/api/policies/${id}/results`).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const downloadPolicyResultData = async (\r\n id: number,\r\n rid: number,\r\n): Promise => {\r\n return await ApiV2.http.get(`/api/policies/${id}/results/${rid}`).then(\r\n (r) => r.data\r\n );\r\n};\r\n\r\nexport const getPolicySummary = async (): Promise<\r\n Models.IPolicySummaryModel\r\n> => {\r\n return await ApiV2.http.get(\"api/policies/summary\").then((r) => r.data);\r\n};\r\n\r\nexport const listDimensions = async (): Promise => {\r\n return await ApiV2.http.get(\"/api/metadata/dimensions\").then((r) => r.data);\r\n};\r\n\r\nexport const getAllTenantWebhookNames = async (): Promise => {\r\n return getWebhooks().then((r) => r.map((c) => c.name));\r\n};\r\n\r\nexport const getMailingLists = async (): Promise<\r\n Models.IMailingListGetPutModel[]\r\n> => {\r\n return await ApiV2.http.get(\"api/mailinglists\").then((r) => r.data);\r\n};\r\n\r\nexport const getWebhooks = async (): Promise => {\r\n return await ApiV2.http.get(\"api/webhooks\").then((r) => r.data);\r\n};\r\n\r\nexport const getWebhook = async (\r\n id: number,\r\n): Promise => {\r\n return await ApiV2.http.get(`api/webhooks/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const createWebhook = async (\r\n body: Models.IWebhookGetPutModel,\r\n): Promise => {\r\n return await ApiV2.http.post(\"api/webhooks\", body).then((r) => r.data);\r\n};\r\n\r\nexport const createMailingList = async (\r\n body: Models.IMailingListGetPutModel,\r\n): Promise => {\r\n return await ApiV2.http.post(\"api/mailinglists\", body).then((r) => r.data);\r\n};\r\n\r\nexport const putMailingList = async (\r\n body: Models.IMailingListGetPutModel,\r\n): Promise => {\r\n return await ApiV2.http.put(`api/mailinglists/${body.id}`, body).then((r) =>\r\n r.data\r\n );\r\n};\r\n\r\nexport const getMailingList = async (\r\n id: number,\r\n): Promise => {\r\n return await ApiV2.http.get(`api/mailinglists/${id}`).then((r) => r.data);\r\n};\r\n\r\nexport const getPolicyResultUrl = async (\r\n policyId: number,\r\n resultId: number,\r\n): Promise<{ downloadUrl: string }> => {\r\n return await ApiV2.http.get(`/api/policies/${policyId}/results/${resultId}`)\r\n .then((r) => r.data);\r\n};\r\n\r\nexport const deliverSavedReport = async (\r\n reportId: string,\r\n emails: string[],\r\n mailingListId?: number,\r\n) => {\r\n return await ApiV2.http.post(`/api/savedreports/${reportId}/deliver`, {\r\n emails,\r\n mailingList: mailingListId,\r\n });\r\n};\r\n\r\nexport const listCustomDashboards = async (): Promise<\r\n Models.ICustomDashboardModel[]\r\n> => {\r\n return await ApiV2.http.get(\"/api/dashboards\").then((r) => {\r\n return r.data;\r\n });\r\n};\r\n\r\nexport const createCustomDashboard = async (\r\n m: OmitExcept,\r\n doc: G.CCGrid,\r\n): Promise => {\r\n const docString = JSON.stringify(doc);\r\n const docBinary = await stringToUint(docString);\r\n const file = new Blob([docBinary], { type: \"application/octet-stream\" });\r\n const formData = new FormData();\r\n formData.append(\"name\", m.name);\r\n formData.append(\"description\", m.description);\r\n formData.append(\"file\", file);\r\n return await ApiV2.http.post(\"/api/dashboards\", formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n },\r\n }).then((r) => r.data);\r\n};\r\n\r\nexport const putCustomDashboard = async (\r\n id: string,\r\n m: OmitExcept,\r\n doc: G.CCGrid,\r\n): Promise => {\r\n const docString = JSON.stringify(doc);\r\n const docBinary = await stringToUint(docString);\r\n const file = new Blob([docBinary], { type: \"application/octet-stream\" });\r\n const formData = new FormData();\r\n formData.append(\"Name\", m.name);\r\n formData.append(\"Description\", m.description);\r\n formData.append(\"File\", file);\r\n const putResponse = await ApiV2.http.put(\r\n `/api/dashboards/${id}`,\r\n formData,\r\n {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n },\r\n },\r\n ).then((r) => r.data);\r\n return putResponse;\r\n};\r\n\r\nexport const getCustomDashboardDoc = async (id: string): Promise => {\r\n const response = await ApiV2.http.get(`/api/dashboards/${id}/content`, {\r\n responseType: \"arraybuffer\",\r\n });\r\n const uint8Array = new Uint8Array(response.data);\r\n const docString = await blobToString(new Blob([uint8Array]));\r\n const doc = JSON.parse(docString);\r\n return doc;\r\n};\r\n\r\nexport const enableDimension = async (key: string): Promise => {\r\n return await ApiV2.http.post(\"/api/metadata/dimensions/enable\", {\r\n dimensionKey: key,\r\n });\r\n};\r\nexport const disableDimension = async (key: string): Promise => {\r\n return await ApiV2.http.post(\"/api/metadata/dimensions/disable\", {\r\n dimensionKey: key,\r\n });\r\n};\r\n\r\nexport const pinDimension = async (key: string): Promise => {\r\n return await ApiV2.http.post(\"/api/metadata/dimensions/pin\", {\r\n dimensionKey: key,\r\n });\r\n};\r\nexport const unpinDimension = async (key: string): Promise => {\r\n return await ApiV2.http.post(\"/api/metadata/dimensions/unpin\", {\r\n dimensionKey: key,\r\n });\r\n};\r\n","\r\nimport Api from '@/lib/ApiV2';\r\nimport UniqueIdentifier from '@/lib/UniqueIdentifier';\r\nimport { CloudProviderType, EntityType, ISearchEntity } from '@/models';\r\n\r\nimport PostCustomViewDialog from '@/components/Domain.CustomViews/PostCustomViewDialog.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { getCustomViews } from '@/lib/Api';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\n\r\nexport interface ISearchEntityViewModel {\r\n Type: EntityType;\r\n Id: string;\r\n Name: string;\r\n Description: string;\r\n Provider: CloudProviderType | null;\r\n EntityIndex: number;\r\n}\r\n\r\nexport const convertToViewModel = (e: ISearchEntity): ISearchEntityViewModel => ({\r\n Type: e.type,\r\n Id: e.id,\r\n Name: e.name,\r\n Description: e.description,\r\n Provider: e.provider,\r\n EntityIndex: e.entityIndex,\r\n});\r\n\r\nexport const convertFromViewModel = (e:ISearchEntityViewModel): ISearchEntity => ({\r\n type: e.Type,\r\n id: e.Id,\r\n name: e.Name,\r\n description: e.Description,\r\n provider: e.Provider as CloudProviderType,\r\n entityIndex: e.EntityIndex,\r\n});\r\n\r\nexport interface ISpendUsageOptions {\r\n sysServiceIds: Array<{\r\n id: string;\r\n name: string;\r\n }>;\r\n sysProductIds: Array<{\r\n id: string;\r\n name: string;\r\n }>;\r\n subscriptionIds: Array<{\r\n id: string;\r\n name: string;\r\n }>;\r\n cloudAccountIds: Array<{\r\n id: string;\r\n name: string;\r\n }>;\r\n tagKeyValues: Array;\r\n regions: Array;\r\n\r\n tagKeys: Array<{\r\n id: string;\r\n name: string;\r\n }>;\r\n geographies: Array;\r\n cloudProviderTypes: Array;\r\n productCategories: Array;\r\n}\r\n\r\nexport const convertToSpendUsageOptions = (e: ISearchEntityViewModel[]): ISpendUsageOptions | null => {\r\n\r\n if (!e) return null;\r\n if (!e.length) return null;\r\n\r\n const cv: ISpendUsageOptions = {\r\n sysProductIds: [],\r\n subscriptionIds: [],\r\n cloudAccountIds: [],\r\n sysServiceIds: [],\r\n tagKeyValues: [],\r\n regions: [],\r\n tagKeys: [],\r\n geographies: [],\r\n cloudProviderTypes: [],\r\n productCategories: [],\r\n };\r\n\r\n e.forEach((item) => {\r\n if (item.Type === EntityType.service) {\r\n cv.sysServiceIds.push({ id: item.Id, name: item.Name });\r\n } else if (item.Type === EntityType.product) {\r\n cv.sysProductIds.push({ id: item.Id, name: item.Name });\r\n } else if (item.Type === EntityType.subscription) {\r\n cv.subscriptionIds.push({ id: item.Id, name: item.Name });\r\n } else if (item.Type === EntityType.cloudAccount) {\r\n cv.cloudAccountIds.push({ id: item.Id, name: item.Name });\r\n } else if (item.Type === EntityType.tag) {\r\n cv.tagKeyValues.push(item.Name);\r\n } else if (item.Type === EntityType.region) {\r\n cv.regions.push(item.Name);\r\n } else if (item.Type === EntityType.geography) {\r\n cv.geographies.push(item.Name);\r\n } else if (item.Type === EntityType.cloudProvider) {\r\n cv.cloudProviderTypes.push(item.Id);\r\n } else if (item.Type === EntityType.productCategory) {\r\n cv.productCategories.push(item.Name);\r\n } \r\n });\r\n return cv;\r\n};\r\n\r\nexport default {\r\n props: {\r\n value: {\r\n types: [Object, Array],\r\n default: null,\r\n },\r\n label: {\r\n type: String,\r\n default: null,\r\n },\r\n multiple: {\r\n types: Boolean,\r\n default: false,\r\n },\r\n autofocus: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n types: {\r\n types: Array,\r\n default: () => [\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.cloudAccount,\r\n EntityType.tag,\r\n EntityType.region,\r\n EntityType.product,\r\n EntityType.geography,\r\n EntityType.cloudProvider,\r\n ],\r\n },\r\n flat: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n dense: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n filled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n solo: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n soloInverted: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n outlined: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n chips: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n hideDetails: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n prependIcon: {\r\n type: String,\r\n default: 'search',\r\n },\r\n searchPrefix: {\r\n type: String,\r\n default: '',\r\n },\r\n supportCreate: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n rules: {\r\n type: Array,\r\n default: null\r\n },\r\n disableSaveCustomView: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n },\r\n computed: {\r\n selection: {\r\n get() {\r\n if (!this.value) return null;\r\n if (this.multiple) {\r\n return this.value.map((i) => i.Id);\r\n } else {\r\n return this.value.Id;\r\n }\r\n },\r\n set(val) {\r\n if (!val) {\r\n this.$emit('input', null);\r\n return;\r\n }\r\n if (this.multiple) {\r\n this.$emit(\r\n 'input',\r\n this.items.filter((i) => val.includes(i.Id))\r\n );\r\n } else {\r\n this.$emit(\r\n 'input',\r\n this.items.find((i) => i.Id === val)\r\n );\r\n }\r\n },\r\n },\r\n spendUsageOptions: {\r\n get() {\r\n const options = convertToSpendUsageOptions(this.value);\r\n\r\n return options;\r\n } \r\n }\r\n },\r\n components: { PostCustomViewDialog },\r\n data() {\r\n return {\r\n searchText: '',\r\n items: [],\r\n autoCompleteId: UniqueIdentifier.create(),\r\n isCreating: false\r\n };\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n if (this.multiple) {\r\n const toAdd = this.value.filter((item) => !this.items.find((x) => x.Id === item.Id));\r\n if (toAdd.length) this.items.push(...toAdd);\r\n } else {\r\n if (!this.value.Id) return;\r\n if (!this.items) {\r\n this.items = [this.value];\r\n } else if (!this.items.find((x) => x.Id === this.value.Id)) {\r\n this.items.push(this.value);\r\n }\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n searchText(val, old) {\r\n if (!val || !old) return;\r\n this.queryEntitiesWithCurrentQuery();\r\n },\r\n searchPrefix(val, old) {\r\n if (!val || !old) return;\r\n this.queryEntitiesWithCurrentQuery();\r\n },\r\n },\r\n methods: {\r\n handleInput(val) {\r\n if (!val) {\r\n this.$emit('input', null);\r\n return;\r\n }\r\n if (this.multiple) {\r\n this.$emit(\r\n 'input',\r\n val.map((v) => this.items.find((i) => i.Id === v))\r\n );\r\n } else {\r\n this.$emit(\r\n 'input',\r\n this.items.find((i) => i.Id === val)\r\n );\r\n }\r\n },\r\n createDummyEntity(searchText) {\r\n this.$emit('input', {\r\n Id: searchText,\r\n Name: searchText,\r\n Description: null,\r\n Provider: '',\r\n Type: 'Synthetic',\r\n EntityIndex: 1,\r\n });\r\n },\r\n queryEntitiesWithCurrentQuery() {\r\n this.queryEntities(\r\n this.searchText,\r\n this.types || [\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.cloudAccount,\r\n EntityType.tag,\r\n EntityType.region,\r\n EntityType.product,\r\n EntityType.geography,\r\n ],\r\n 0,\r\n 30\r\n );\r\n },\r\n async queryEntities(queryString, types, page, pageSize) {\r\n if (this.$wait.is(`queryEntities-${this.autoCompleteId}`)) return;\r\n try {\r\n this.$wait.start(`queryEntities-${this.autoCompleteId}`);\r\n const searchParams = new URLSearchParams();\r\n const searchQuery = `${this.searchPrefix || ''}${queryString || ''}`;\r\n searchParams.append('q', searchQuery);\r\n if (typeof types !== 'undefined' && types.join) {\r\n searchParams.append('types', types.join());\r\n }\r\n if (typeof page !== 'undefined') {\r\n searchParams.append('page', page);\r\n }\r\n if (typeof pageSize !== 'undefined') {\r\n searchParams.append('pageSize', pageSize);\r\n }\r\n const searchItems = (this.items = await Api.http\r\n .get(`/api/search?${searchParams.toString()}`)\r\n .then((r) => r.data.map(convertToViewModel)));\r\n if (!this.value) {\r\n this.items = searchItems;\r\n } else if (this.multiple) {\r\n const ids = new Set(searchItems.map((d) => d.Id));\r\n this.items = [...searchItems, ...this.value.filter((d) => !ids.has(d.Id))];\r\n } else {\r\n this.items = (searchItems || []).concat([this.value]);\r\n }\r\n } finally {\r\n this.$wait.end(`queryEntities-${this.autoCompleteId}`);\r\n }\r\n },\r\n handleSaveCustomView() {\r\n this.isCreating = true;\r\n this.$emit('save-custom-view', this.searchText);\r\n },\r\n loadReports: waitFor('loadingCustomViews', async function loadingReports() {\r\n try {\r\n this.customViewsLoading = true;\r\n this.customViews = await getCustomViews();\r\n this.customViewsLoading = false;\r\n } catch (err) {\r\n toastError(this.$t('customViews.failedToLoad'));\r\n }\r\n }), \r\n },\r\n} as unknown;\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntitySearchAutocomplete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntitySearchAutocomplete.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntitySearchAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntitySearchAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EntitySearchAutocomplete.vue?vue&type=template&id=32e395e2&\"\nimport script from \"./EntitySearchAutocomplete.vue?vue&type=script&lang=ts&\"\nexport * from \"./EntitySearchAutocomplete.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EntitySearchAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-icon',{attrs:{\"left\":_vm.left}},[_vm._v(_vm._s(_vm.iconValue))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntityTypeIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EntityTypeIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EntityTypeIcon.vue?vue&type=template&id=6a1d0551&\"\nimport script from \"./EntityTypeIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./EntityTypeIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-icon',{attrs:{\"left\":_vm.left,\"size\":_vm.size}},[_vm._v(_vm._s(_vm.iconValue))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudProviderTypeIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudProviderTypeIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CloudProviderTypeIcon.vue?vue&type=template&id=37a0deab&\"\nimport script from \"./CloudProviderTypeIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./CloudProviderTypeIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-text-field',_vm._g(_vm._b({attrs:{\"value\":_vm.renderedDateString,\"label\":_vm.label,\"placeholder\":\"e.g. yyyy-MM-dd\",\"prepend-icon\":_vm.prependIcon,\"readonly\":\"\",\"disabled\":!_vm.use || _vm.disabled,\"dense\":_vm.dense,\"solo\":_vm.solo,\"outlined\":_vm.outlined,\"flat\":_vm.flat,\"hide-details\":_vm.hideDetails,\"rules\":_vm.rules,\"filled\":_vm.filled},scopedSlots:_vm._u([(_vm.optional)?{key:\"prepend\",fn:function(){return [_c('v-checkbox',{staticClass:\"mt-0\",model:{value:(_vm.use),callback:function ($$v) {_vm.use=$$v},expression:\"use\"}})]},proxy:true}:null],null,true)},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-date-picker',{ref:\"picker\",attrs:{\"value\":_vm.datePickerFormValue,\"min\":_vm.min,\"max\":_vm.max,\"type\":_vm.type,\"no-title\":_vm.noTitle,\"range\":_vm.range,\"disabled\":_vm.disabled},on:{\"input\":_vm.save,\"change\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextDatePicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextDatePicker.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TextDatePicker.vue?vue&type=template&id=d6d6ae0a&\"\nimport script from \"./TextDatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TextDatePicker.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[(_vm.useMain)?_c('v-main',[_vm._t(\"default\")],2):_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConditionalVMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConditionalVMain.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConditionalVMain.vue?vue&type=template&id=a5afd4e6&\"\nimport script from \"./ConditionalVMain.vue?vue&type=script&lang=js&\"\nexport * from \"./ConditionalVMain.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport AppLogoImage from \"@/components/Common/AppLogoImage.vue\";\r\nimport BackButton from \"@/components/Common/BackButton.vue\";\r\nimport Card from \"@/components/Common/ContentCard.vue\";\r\nimport ChartCard from \"@/components/Common/ChartCard.vue\";\r\nimport DeleteEntityDialog from \"@/components/Common/DeleteEntityDialog.vue\";\r\nimport DeleteEntityCard from \"@/components/Common/DeleteEntityCard.vue\";\r\nimport DeleteEntityButton from \"@/components/Common/DeleteEntityButton.vue\";\r\nimport EmptyState from \"@/components/Common/EmptyState.vue\";\r\nimport FormCard from \"@/components/Common/FormCard.vue\";\r\nimport FormDialog from \"@/components/Common/FormDialog.vue\";\r\nimport PageHeader from \"@/components/Common/PageHeader.vue\";\r\nimport HttpPatchButton from \"@/components/Common/HttpPatchButton.vue\";\r\nimport HttpPutButton from \"@/components/Common/HttpPutButton.vue\";\r\nimport HttpDeleteButton from \"@/components/Common/HttpDeleteButton.vue\";\r\nimport HttpPostButton from \"@/components/Common/HttpPostButton.vue\";\r\nimport FigureCard from \"@/components/Common/FigureCard.vue\";\r\nimport WidgetGrid from \"@/components/Common/WidgetGrid.vue\";\r\nimport TitleSheet from \"@/components/Common/TitleSheet.vue\";\r\nimport TitleSheets from \"@/components/Common/TitleSheets.vue\";\r\nimport ComparisonIcon from \"@/components/Common/ComparisonIcon.vue\";\r\nimport EntitySearchAutocomplete from \"@/components/Common/EntitySearchAutocomplete.vue\";\r\nimport EntityTypeIcon from '@/components/Common/EntityTypeIcon.vue';\r\nimport CloudProviderTypeIcon from '@/components/Common/CloudProviderTypeIcon.vue';\r\nimport TextDatePicker from '@/components/Common/TextDatePicker.vue';\r\nimport ConditionalVMain from '@/components/Common/ConditionalVMain.vue';\r\nimport { Chart } from 'highcharts-vue';\r\n\r\nVue.component(\"app-logo-image\", AppLogoImage);\r\nVue.component(\"back-button\", BackButton);\r\nVue.component(\"content-card\", Card);\r\nVue.component(\"chart-card\", ChartCard);\r\nVue.component(\"delete-entity-dialog\", DeleteEntityDialog);\r\nVue.component(\"delete-entity-card\", DeleteEntityCard);\r\nVue.component(\"delete-entity-button\", DeleteEntityButton);\r\nVue.component(\"empty-state\", EmptyState);\r\nVue.component(\"form-card\", FormCard);\r\nVue.component(\"form-dialog\", FormDialog);\r\nVue.component(\"page-header\", PageHeader);\r\nVue.component(\"http-patch-button\", HttpPatchButton);\r\nVue.component(\"http-post-button\", HttpPostButton);\r\nVue.component(\"http-delete-button\", HttpDeleteButton);\r\nVue.component(\"http-put-button\", HttpPutButton);\r\nVue.component(\"figure-card\", FigureCard);\r\nVue.component(\"widget-grid\", WidgetGrid);\r\nVue.component(\"chart\", Chart);\r\nVue.component(\"title-sheet\", TitleSheet);\r\nVue.component(\"title-sheets\", TitleSheets);\r\nVue.component(\"comparison-icon\", ComparisonIcon);\r\nVue.component(\"entity-search-autocomplete\", EntitySearchAutocomplete);\r\nVue.component(\"entity-type-icon\", EntityTypeIcon);\r\nVue.component(\"cloud-provider-type-icon\", CloudProviderTypeIcon);\r\nVue.component(\"text-date-picker\", TextDatePicker);\r\nVue.component(\"conditional-v-main\", ConditionalVMain);\r\n","import Vue from 'vue';\r\n\r\nVue.directive('wait-while', {\r\n bind(_, binding, vnode) {\r\n const instance = vnode.context.__$waitInstance;\r\n vnode.child.$on('start', () => instance.start(binding.value));\r\n vnode.child.$on('stop', () => instance.end(binding.value));\r\n }\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('v-navigation-drawer',{staticStyle:{\"height\":\"100%\"},attrs:{\"app\":\"\",\"floating\":\"\",\"width\":\"320\",\"dark\":_vm.shouldAlwaysBeDark},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-toolbar',{attrs:{\"color\":\"transparent\",\"flat\":\"\"}},[_c('app-logo-image',{attrs:{\"dark\":_vm.shouldAlwaysBeDark}})],1),_c('nav-tenant-menu-list',{attrs:{\"value\":_vm.me.tenant}}),_c('entity-search-autocomplete',{staticClass:\"px-2 pb-2\",attrs:{\"solo\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"types\":['Service', 'Subscription', 'CloudAccount', 'Product', 'CustomView']},model:{value:(_vm.selectedSearchEntity),callback:function ($$v) {_vm.selectedSearchEntity=$$v},expression:\"selectedSearchEntity\"}})]},proxy:true},{key:\"append\",fn:function(){return [_c('v-divider'),(_vm.showSupportEmail && _vm.supportEmail)?_c('v-btn',{staticClass:\"mt-2\",attrs:{\"color\":\"info darken-2\",\"block\":\"\",\"tile\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.isSupportDialogOpen = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"support_agent\")]),_vm._v(\" Support \")],1):_vm._e(),_c('nav-user-menu-list',{attrs:{\"value\":_vm.me}})]},proxy:true}]),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('nav-menu-list',{attrs:{\"value\":_vm.me,\"has-invalid-credentials\":_vm.hasInvalidCredentials}})],1),_c('conditional-v-main',[(_vm.tenantStore.status)?_c('fragment',[_vm._l((_vm.tenantStore.status.activeUserAlerts || []),function(activeUserAlert,i){return _c('div',{key:i},[_c('v-system-bar',{attrs:{\"color\":activeUserAlert.level.toLowerCase(),\"height\":\"auto\"}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(_vm._s(activeUserAlert.level.toLowerCase()))]),_vm._v(\" \"+_vm._s(activeUserAlert.alertText)+\" \")],1)],1)}),(_vm.tenantStore.status.hasActiveImports)?_c('v-system-bar',{attrs:{\"color\":\"info\"}},[_c('v-progress-circular',{staticClass:\"mr-2\",attrs:{\"indeterminate\":\"\",\"size\":15}}),(_vm.tenantStore.cloudAccounts && _vm.groupedActiveImports.length)?[_vm._v(\" \"+_vm._s(_vm.$t('views.mainView.loadingIndicator'))+\" \"),_vm._l((_vm.groupedActiveImports.slice(0, 3)),function(item,index){return _c('span',{key:index,staticClass:\"ml-3\",attrs:{\"color\":\"info\"}},[_vm._v(\" \"+_vm._s(item.cloudAccountName)+\" (\"+_vm._s(item.displayText)+\") \")])}),(_vm.groupedActiveImports.length > 3)?_c('span',{staticClass:\"ml-3\"},[_vm._v(\" [+ \"+_vm._s(_vm.groupedActiveImports.length - 3)+\" more] \")]):_vm._e()]:_c('span',[_vm._v(\" \"+_vm._s(_vm.$t('views.mainView.loadingIndicator'))+\" \")])],2):_vm._e(),_vm._l((_vm.tenantStore.status.credentialAlerts || []),function(credentialAlert,i){return _c('div',{key:i},[_c('v-system-bar',{attrs:{\"color\":\"warning\",\"height\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.$t('views.mainView.invalidCredentialAlert'))+\" \"+_vm._s(credentialAlert.type)+\", \"+_vm._s(credentialAlert.name)+\" \")])],1)})],2):_vm._e(),(_vm.$auth.isAuthenticated)?_c('router-view',{attrs:{\"me\":_vm.me},on:{\"tenant-update\":_vm.getMe}}):_vm._e()],1),_c('v-dialog',{attrs:{\"width\":\"500\"},model:{value:(_vm.isSupportDialogOpen),callback:function ($$v) {_vm.isSupportDialogOpen=$$v},expression:\"isSupportDialogOpen\"}},[_c('v-card',{attrs:{\"color\":\"#385F73\",\"dark\":\"\"}},[_c('v-card-title',{staticClass:\"text-h5\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"support_agent\")]),_vm._v(\" Support\")],1),_c('v-card-subtitle',{staticClass:\"mt-1\"},[_vm._v(\"Having trouble? Email us for Support\")]),_c('v-card-actions',[_c('back-button',{on:{\"click\":function($event){_vm.isSupportDialogOpen = false}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"href\":`mailto:${_vm.supportEmail}?subject=Support`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Contact\")],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list',{attrs:{\"subheader\":\"\"}},[_c('v-list-item-group',{attrs:{\"active-class\":\"primary--text\",\"multiple\":\"\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},_vm._l((_vm.menuItems),function(group,groupIndex){return _c('fragment',{key:groupIndex},[_c('v-subheader',{key:'group-title-' + groupIndex,attrs:{\"inset\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(group.title))+\" \")]),_c('v-divider',{staticClass:\"mb-1\",attrs:{\"inset\":\"\"}}),_vm._l((group.items),function(item,i){return _c('v-list-item',{key:i,attrs:{\"to\":item.to}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(item.title)))])],1)],1)})],2)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n * Access to tenant specific data anywhere in the app.\r\n *\r\n * Installation (main.ts):\r\n * import { createPinia, PiniaVuePlugin } from 'pinia';\r\n * Vue.use(PiniaVuePlugin);\r\n * const pinia = createPinia();\r\n * new Vue({\r\n * // other options...\r\n * pinia\r\n * })\r\n *\r\n * Usage:\r\n * Component setup (options api):\r\n * import { useTenantStore } from '../stores/tenant.ts';\r\n * import { mapStores } from 'pinia';\r\n *\r\n * computed: {\r\n * ...mapStores(useTenantStore)\r\n * },\r\n *\r\n * Component setup (composition api):\r\n * import { useTenantStore } from '../stores/tenant.ts';\r\n *\r\n * setup() {\r\n * const tenantStore = useTenantStore();\r\n *\r\n * return { tenantStore };\r\n * }\r\n *\r\n * To update the values (E.g. Currency):\r\n * this.tenantStore.setTenantDetails({ ..., currencyCode: 'AUD' });\r\n *\r\n * To read the values (E.g. Currency):\r\n * this.tenantStore.currencyCode\r\n *\r\n * Legacy note:\r\n * To update the name and tag keys from a v1 Tenant data structure\r\n * (E.g. from the \"me\" profile):\r\n * this.tenantStore.setTenantDetailsFromV1(this.me.Tenant);\r\n */\r\nconst LAST_TENANT_KEY = \"cc-last-tenant\";\r\nimport ApiV2 from \"@/lib/ApiV2\";\r\nimport AuthClient from \"@/lib/Auth\";\r\nimport Config from \"@/lib/Config\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nexport interface IActiveImport {\r\n cloudAccountId: string;\r\n month: number;\r\n year: number;\r\n}\r\n\r\nexport interface IBasicCloudAccount {\r\n name: string;\r\n type: string;\r\n}\r\n\r\nexport interface IDimension {\r\n label: string;\r\n tagKey: string;\r\n pinned: boolean;\r\n}\r\n\r\nexport interface ITenantData {\r\n tenantId: string;\r\n tenantName: string;\r\n currencyCode: string;\r\n tagKey1?: string;\r\n tagKey2?: string;\r\n tagKey3?: string;\r\n customerId: string;\r\n numberOfActiveAccounts: number;\r\n lastImportStartedDate?: string;\r\n lastImportCompletedDate?: string;\r\n lastUsageDateForTenant?: string;\r\n features: string[];\r\n permissions: string[];\r\n isSelfService: boolean;\r\n hasActiveSubscription: boolean;\r\n status: {\r\n hasActiveImports: boolean;\r\n activeUserAlerts: Array<{\r\n id: number;\r\n level: string;\r\n alertText: string;\r\n }>;\r\n credentialAlerts: Array<{\r\n name: string;\r\n type: string;\r\n }>\r\n };\r\n dimensions?: { [index:number]: IDimension };\r\n activeImports?: IActiveImport[];\r\n cloudAccounts?: { [id:string]: IBasicCloudAccount }\r\n}\r\n\r\nexport const useDatasetState = (\r\n tenantStore: any,\r\n): { hasUsageDataset: boolean; hasEmissionsDataset: boolean } => {\r\n const hasGranularTogglesFeature =\r\n Config.isFeatureEnabled(\"DatasetFilter\") ||\r\n tenantStore.hasTenantFeature(\"DatasetFilter\");\r\n const hasUsageDataset = Config.isFeatureEnabled(\"Dataset.Usage\") ||\r\n tenantStore.hasTenantFeature(\"Dataset.Usage\") ||\r\n !hasGranularTogglesFeature;\r\n const hasEmissionsDataset = Config.isFeatureEnabled(\"Dataset.Emissions\") ||\r\n tenantStore.hasTenantFeature(\"Dataset.Emissions\") ||\r\n tenantStore.hasTenantFeature(\"EmissionsAndEnergy\") ||\r\n !hasGranularTogglesFeature;\r\n return { hasEmissionsDataset, hasUsageDataset };\r\n};\r\n\r\nexport const useTenantStore = defineStore({\r\n id: \"tenant\",\r\n state: (): ITenantData => {\r\n return getInitialTenant();\r\n },\r\n getters: {\r\n hasTenantFeature(state) {\r\n return (feature: string) => {\r\n if (!Config.isFeatureEnabled(\"EnableTenantFeatures\")) {\r\n return true;\r\n }\r\n return (state.features || []).includes(feature);\r\n };\r\n },\r\n hasPermission(state) {\r\n return (permission: string) =>\r\n (state.permissions || []).includes(permission);\r\n },\r\n },\r\n actions: {\r\n async changeTenantContext(tenantId: string) {\r\n await Promise.all([\r\n this.loadTenant(tenantId),\r\n this.loadTenantStatus(tenantId)\r\n ]);\r\n },\r\n isTenantSelected(): boolean {\r\n return !!AuthClient.tenantId;\r\n },\r\n async loadTenant(tenantId?: string) {\r\n if (tenantId) AuthClient.tenantId = tenantId;\r\n const tenantSummary = await ApiV2.http.get(\r\n \"/api/metadata/tenants/current/summary\",\r\n ).then((r) => r.data);\r\n if (tenantSummary) {\r\n this.setTenantDetails(tenantSummary);\r\n }\r\n },\r\n async loadTenantStatus(tenantId?: string) {\r\n if (tenantId) AuthClient.tenantId = tenantId;\r\n const status = await ApiV2.http.get('/api/metadata/tenants/current/summary/status').then((r) => r.data);\r\n this.setTenantDetails({ status });\r\n },\r\n setTenantDetails(data: Partial) {\r\n this.$patch(data);\r\n const newTenantString = JSON.stringify(this.$state);\r\n localStorage.setItem(LAST_TENANT_KEY, newTenantString);\r\n },\r\n setTenantDetailsFromV1(data: { name: string; tagHeirarchy: string[] }) {\r\n const newTenantData = {\r\n name: data.name,\r\n tagKey1: data.tagHeirarchy[0] || undefined, // empty strings and nulls -> undefined\r\n tagKey2: data.tagHeirarchy[1] || undefined,\r\n tagKey3: data.tagHeirarchy[2] || undefined,\r\n };\r\n this.setTenantDetails(newTenantData);\r\n },\r\n getHierarchy(): string[] {\r\n const tags = [this.tagKey1, this.tagKey2, this.tagKey3];\r\n if (!tags.find((t) => t)) return [];\r\n return tags;\r\n },\r\n },\r\n});\r\n\r\nconst getInitialTenant = (): ITenantData => {\r\n const initialTenantString = localStorage.getItem(LAST_TENANT_KEY);\r\n let initialTenant = JSON.parse(initialTenantString) as ITenantData;\r\n if (!initialTenant) {\r\n initialTenant = {\r\n tenantId: \"\",\r\n tenantName: \"\",\r\n currencyCode: \"AUD\",\r\n tagKey1: null,\r\n tagKey2: null,\r\n tagKey3: null,\r\n customerId: \"\",\r\n numberOfActiveAccounts: 0,\r\n lastImportStartedDate: null,\r\n lastImportCompletedDate: null,\r\n lastUsageDateForTenant: null,\r\n features: [],\r\n permissions: [],\r\n isSelfService: false,\r\n hasActiveSubscription: false,\r\n status: {\r\n hasActiveImports: false,\r\n activeUserAlerts: [],\r\n },\r\n };\r\n }\r\n return initialTenant;\r\n};\r\n","enum FeatureNames {\r\n rhipeEnabled = 'CloudAccountType:Rhipe',\r\n enableCloudIntelligence = 'EnableCloudIntelligence',\r\n pax8AzureEnabled = 'CloudAccountType:AzurePax8'\r\n}\r\nexport default FeatureNames;","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"navMenuList.subheaders.costAndUsage\": \"Costs and Usage\",\r\n \"navMenuList.subheaders.tracking\": \"Tracking\",\r\n \"navMenuList.subheaders.reporting\": \"Reporting\",\r\n \"navMenuList.subheaders.customers\": \"Customers\",\r\n \"navMenuList.subheaders.settings\": \"Settings\",\r\n \"navMenuList.financeDashboard\": \"Overview\",\r\n \"navMenuList.opsDashboard\": \"Operations\",\r\n \"navMenuList.trendsDashboard\": \"Trends\",\r\n \"navMenuList.reservationsDashboard\": \"Reservations\",\r\n \"navMenuList.costExplorer\": \"Cost Explorer\",\r\n \"navMenuList.reports\": \"Reports\",\r\n \"navMenuList.customViews\": \"Custom Views\",\r\n \"navMenuList.budgets\": \"Budgets & Spend Limits\",\r\n \"navMenuList.spendLimits\": \"Spend Limits\",\r\n \"navMenuList.customReports\": \"Custom Reports\",\r\n \"navMenuList.tagOverview\": \"Tag Reports\",\r\n \"navMenuList.regionOverview\": \"Cost Map\",\r\n \"navMenuList.customersOverview\": \"Customers Report\",\r\n \"navMenuList.manage\": \"Manage\",\r\n \"navMenuList.spendLimits\": \"Spend Limits\",\r\n \"navMenuList.recommendations\": \"Recommendations\",\r\n \"navMenuList.accounts\": \"Accounts\",\r\n \"navMenuList.users\": \"Users\",\r\n \"navMenuList.support\": \"Contact Support\",\r\n \"navMenuList.dashboarding\": \"Custom Dashboards\",\r\n \"navMenuList.credentialTooltip\": \"There are one or more cloud connection with invalid or expired credentials.\",\r\n \"navMenuList.cloudIntelligence\": \"Cloud Intelligence\",\r\n \"navMenuList.subheaders.energy\": \"Emissions and Energy\",\r\n \"navMenuList.carbon.overview\": \"Overview\",\r\n \"navMenuList.carbon.explorer\": \"Emissions Explorer\",\r\n \"navMenuList.carbon.map\": \"Energy Map\",\r\n \"navMenuList.watchdog\": \"Watchdog\",\r\n \"navMenuList.kubernetes\": \"Kubernetes\",\r\n \"navMenuList.azureEmissions\": \"Azure Emissions\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavMenuList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavMenuList.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavMenuList.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavMenuList.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NavMenuList.vue?vue&type=template&id=a446aab2&\"\nimport script from \"./NavMenuList.vue?vue&type=script&lang=js&\"\nexport * from \"./NavMenuList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NavMenuList.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list',[_c('v-list-item',_vm._g({},on),[_c('v-list-item-avatar',[(_vm.email)?_c('v-avatar',{attrs:{\"size\":40,\"color\":\"grey lighten-4\"}},[_c('img',{attrs:{\"src\":_vm.gravatarUrl,\"alt\":\"avatar\",\"aria-label\":\"User profile picture\",\"title\":\"User profile picture\",\"role\":\"presentation\"}})]):_c('v-avatar',{attrs:{\"size\":40,\"color\":\"grey lighten-4\"}},[_c('img',{attrs:{\"src\":\"http://www.gravatar.com/avatar/?d=identicon\",\"alt\":\"avatar\",\"aria-label\":\"User profile picture\",\"title\":\"User profile picture\",\"role\":\"presentation\"}})])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.Name : '...')+\" \")]),(_vm.email)?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.email)+\" \")]):_c('v-list-item-subtitle',[_vm._v(\" Your Profile \")])],1)],1)],1)]}}])},[_c('v-list',{attrs:{\"light\":\"\",\"subheader\":\"\"}},[_c('v-subheader',[_vm._v(_vm._s(_vm.$t('navUserMenu.title')))]),_c('v-list-item',{on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleDarkTheme()}}},[_c('v-list-item-content',[_vm._v(\" Dark Theme: \"+_vm._s(_vm.$vuetify.theme.dark ? 'ON' : 'OFF')+\" \")]),_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(_vm.$vuetify.theme.dark ? 'brightness_medium' : 'brightness_high')+\" \")])],1)],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Notification Settings\")])],1),_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"notifications\")])],1)],1)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":\"Notification Settings\",\"subtitle\":\"Notification settings for all of your tenants and customers.\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('back-button',{on:{\"click\":function($event){return close()}}})]},proxy:true}],null,true)},[_c('profile-tenants-table',{attrs:{\"items\":_vm.profiles,\"loading\":_vm.$wait.is('loadingProfiles'),\"fields\":['name', 'SubscribeToAlerts', 'SubscribeToSpendSummaries']}})],1)]}}]),model:{value:(_vm.isEditingNotifications),callback:function ($$v) {_vm.isEditingNotifications=$$v},expression:\"isEditingNotifications\"}}),_c('v-divider'),_c('v-list-item',{attrs:{\"to\":\"/logout\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('navUserMenu.logOut')))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" You do not have administrative rights to any tenants. \")]},proxy:true},{key:`item.SubscribeToAlerts`,fn:function({ item }){return [_c('email-subscription-checkbox',{attrs:{\"tenantId\":item.id,\"emailType\":\"Alerts\"},model:{value:(item.subscribeToAlerts),callback:function ($$v) {_vm.$set(item, \"subscribeToAlerts\", $$v)},expression:\"item.subscribeToAlerts\"}})]}},{key:`item.SubscribeToSpendSummaries`,fn:function({ item }){return [_c('email-subscription-checkbox',{attrs:{\"tenantId\":item.id,\"emailType\":\"SpendSummaries\"},model:{value:(item.subscribeToSpendSummaries),callback:function ($$v) {_vm.$set(item, \"subscribeToSpendSummaries\", $$v)},expression:\"item.subscribeToSpendSummaries\"}})]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-checkbox',{attrs:{\"input-value\":_vm.value,\"loading\":_vm.loading,\"disabled\":_vm.loading},on:{\"change\":function($event){return _vm.onValueChanged($event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailSubscriptionCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailSubscriptionCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EmailSubscriptionCheckbox.vue?vue&type=template&id=24d41d84&\"\nimport script from \"./EmailSubscriptionCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSubscriptionCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileTenantsTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProfileTenantsTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileTenantsTable.vue?vue&type=template&id=11846849&scoped=true&\"\nimport script from \"./ProfileTenantsTable.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileTenantsTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileTenantsTable.vue?vue&type=style&index=0&id=11846849&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11846849\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\n//SOURCE: https://stackoverflow.com/questions/1655769/fastest-md5-implementation-in-javascript\r\nexport default function (e) {\r\n function h(a, b) {\r\n var c, d, e, f, g;\r\n e = a & 2147483648;\r\n f = b & 2147483648;\r\n c = a & 1073741824;\r\n d = b & 1073741824;\r\n g = (a & 1073741823) + (b & 1073741823);\r\n return c & d ? g ^ 2147483648 ^ e ^ f : c | d ? g & 1073741824 ? g ^ 3221225472 ^ e ^ f : g ^ 1073741824 ^ e ^ f : g ^ e ^ f\r\n }\r\n\r\n function k(a, b, c, d, e, f, g) {\r\n a = h(a, h(h(b & c | ~b & d, e), g));\r\n return h(a << f | a >>> 32 - f, b)\r\n }\r\n\r\n function l(a, b, c, d, e, f, g) {\r\n a = h(a, h(h(b & d | c & ~d, e), g));\r\n return h(a << f | a >>> 32 - f, b)\r\n }\r\n\r\n function m(a, b, d, c, e, f, g) {\r\n a = h(a, h(h(b ^ d ^ c, e), g));\r\n return h(a << f | a >>> 32 - f, b)\r\n }\r\n\r\n function n(a, b, d, c, e, f, g) {\r\n a = h(a, h(h(d ^ (b | ~c), e), g));\r\n return h(a << f | a >>> 32 - f, b)\r\n }\r\n\r\n function p(a) {\r\n var b = \"\",\r\n d = \"\",\r\n c;\r\n for (c = 0; 3 >= c; c++) d = a >>> 8 * c & 255, d = \"0\" + d.toString(16), b += d.substr(d.length - 2, 2);\r\n return b\r\n }\r\n var f = [],\r\n q, r, s, t, a, b, c, d;\r\n e = function (a) {\r\n a = a.replace(/\\r\\n/g, \"\\n\");\r\n for (var b = \"\", d = 0; d < a.length; d++) {\r\n var c = a.charCodeAt(d);\r\n 128 > c ? b += String.fromCharCode(c) : (127 < c && 2048 > c ? b += String.fromCharCode(c >> 6 | 192) : (b += String.fromCharCode(c >> 12 | 224), b += String.fromCharCode(c >> 6 & 63 | 128)), b += String.fromCharCode(c & 63 | 128))\r\n }\r\n return b\r\n }(e);\r\n f = function (b) {\r\n var a, c = b.length;\r\n a = c + 8;\r\n for (var d = 16 * ((a - a % 64) / 64 + 1), e = Array(d - 1), f = 0, g = 0; g < c;) a = (g - g % 4) / 4, f = g % 4 * 8, e[a] |= b.charCodeAt(g) << f, g++;\r\n a = (g - g % 4) / 4;\r\n e[a] |= 128 << g % 4 * 8;\r\n e[d - 2] = c << 3;\r\n e[d - 1] = c >>> 29;\r\n return e\r\n }(e);\r\n a = 1732584193;\r\n b = 4023233417;\r\n c = 2562383102;\r\n d = 271733878;\r\n for (e = 0; e < f.length; e += 16) q = a, r = b, s = c, t = d, a = k(a, b, c, d, f[e + 0], 7, 3614090360), d = k(d, a, b, c, f[e + 1], 12, 3905402710), c = k(c, d, a, b, f[e + 2], 17, 606105819), b = k(b, c, d, a, f[e + 3], 22, 3250441966), a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), c = k(c, d, a, b, f[e + 6], 17, 2821735955), b = k(b, c, d, a, f[e + 7], 22, 4249261313), a = k(a, b, c, d, f[e + 8], 7, 1770035416), d = k(d, a, b, c, f[e + 9], 12, 2336552879), c = k(c, d, a, b, f[e + 10], 17, 4294925233), b = k(b, c, d, a, f[e + 11], 22, 2304563134), a = k(a, b, c, d, f[e + 12], 7, 1804603682), d = k(d, a, b, c, f[e + 13], 12, 4254626195), c = k(c, d, a, b, f[e + 14], 17, 2792965006), b = k(b, c, d, a, f[e + 15], 22, 1236535329), a = l(a, b, c, d, f[e + 1], 5, 4129170786), d = l(d, a, b, c, f[e + 6], 9, 3225465664), c = l(c, d, a, b, f[e + 11], 14, 643717713), b = l(b, c, d, a, f[e + 0], 20, 3921069994), a = l(a, b, c, d, f[e + 5], 5, 3593408605), d = l(d, a, b, c, f[e + 10], 9, 38016083), c = l(c, d, a, b, f[e + 15], 14, 3634488961), b = l(b, c, d, a, f[e + 4], 20, 3889429448), a = l(a, b, c, d, f[e + 9], 5, 568446438), d = l(d, a, b, c, f[e + 14], 9, 3275163606), c = l(c, d, a, b, f[e + 3], 14, 4107603335), b = l(b, c, d, a, f[e + 8], 20, 1163531501), a = l(a, b, c, d, f[e + 13], 5, 2850285829), d = l(d, a, b, c, f[e + 2], 9, 4243563512), c = l(c, d, a, b, f[e + 7], 14, 1735328473), b = l(b, c, d, a, f[e + 12], 20, 2368359562), a = m(a, b, c, d, f[e + 5], 4, 4294588738), d = m(d, a, b, c, f[e + 8], 11, 2272392833), c = m(c, d, a, b, f[e + 11], 16, 1839030562), b = m(b, c, d, a, f[e + 14], 23, 4259657740), a = m(a, b, c, d, f[e + 1], 4, 2763975236), d = m(d, a, b, c, f[e + 4], 11, 1272893353), c = m(c, d, a, b, f[e + 7], 16, 4139469664), b = m(b, c, d, a, f[e + 10], 23, 3200236656), a = m(a, b, c, d, f[e + 13], 4, 681279174), d = m(d, a, b, c, f[e + 0], 11, 3936430074), c = m(c, d, a, b, f[e + 3], 16, 3572445317), b = m(b, c, d, a, f[e + 6], 23, 76029189), a = m(a, b, c, d, f[e + 9], 4, 3654602809), d = m(d, a, b, c, f[e + 12], 11, 3873151461), c = m(c, d, a, b, f[e + 15], 16, 530742520), b = m(b, c, d, a, f[e + 2], 23, 3299628645), a = n(a, b, c, d, f[e + 0], 6, 4096336452), d = n(d, a, b, c, f[e + 7], 10, 1126891415), c = n(c, d, a, b, f[e + 14], 15, 2878612391), b = n(b, c, d, a, f[e + 5], 21, 4237533241), a = n(a, b, c, d, f[e + 12], 6, 1700485571), d = n(d, a, b, c, f[e + 3], 10, 2399980690), c = n(c, d, a, b, f[e + 10], 15, 4293915773), b = n(b, c, d, a, f[e + 1], 21, 2240044497), a = n(a, b, c, d, f[e + 8], 6, 1873313359), d = n(d, a, b, c, f[e + 15], 10, 4264355552), c = n(c, d, a, b, f[e + 6], 15, 2734768916), b = n(b, c, d, a, f[e + 13], 21, 1309151649), a = n(a, b, c, d, f[e + 4], 6, 4149444226), d = n(d, a, b, c, f[e + 11], 10, 3174756917), c = n(c, d, a, b, f[e + 2], 15, 718787259), b = n(b, c, d, a, f[e + 9], 21, 3951481745), a = h(a, q), b = h(b, r), c = h(c, s), d = h(d, t);\r\n return (p(a) + p(b) + p(c) + p(d)).toLowerCase()\r\n};\r\n","\r\n\r\n{\r\n \"en\": {\r\n \"navUserMenu.title\": \"User Menu\",\r\n \"navUserMenu.changePassword\": \"Change Password\",\r\n \"navUserMenu.logOut\": \"Log Out\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavUserMenuList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavUserMenuList.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavUserMenuList.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavUserMenuList.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NavUserMenuList.vue?vue&type=template&id=3b3c376d&\"\nimport script from \"./NavUserMenuList.vue?vue&type=script&lang=js&\"\nexport * from \"./NavUserMenuList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NavUserMenuList.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"input-value\":_vm.$route.path.startsWith('/settings')}},on),[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"settings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.value ? _vm.value.name : null))])],1),_c('v-list-item-action',[_c('v-icon',[_vm._v(\"expand_more\")])],1)],1)]}}]),model:{value:(_vm.isMenuOpen),callback:function ($$v) {_vm.isMenuOpen=$$v},expression:\"isMenuOpen\"}},[_c('v-list',[(_vm.tenantStore.hasPermission('CanAdminister'))?_c('v-list-item',{attrs:{\"to\":\"/settings\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"settings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('navTenantMenuList.tenantSettings'))+\" \")])],1)],1):_vm._e(),(_vm.accountStore.numTenants > 1)?_c('v-list-item',{attrs:{\"to\":\"/choose\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"swap_horiz\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('navTenantMenuList.chooseTenant'))+\" \")])],1)],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import ApiV2 from '@/lib/ApiV2';\r\nimport { ICachedTenantDetails } from '@/models';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport interface IAccountData {\r\n email: string;\r\n tenants: ICachedTenantDetails[];\r\n}\r\n\r\nexport const useAccountStore = defineStore({\r\n id: 'account',\r\n state: (): IAccountData => ({\r\n email: null,\r\n tenants: []\r\n }),\r\n getters: {\r\n numTenants: (ctx) => ctx.tenants.length\r\n },\r\n actions: {\r\n async loadAccountTenants() {\r\n this.tenants = await ApiV2.http.get('/api/metadata/tenants').then(r => r.data);\r\n }\r\n }\r\n});","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"navTenantMenuList.tenantSettings\": \"Settings\",\r\n \"navTenantMenuList.chooseTenant\": \"Change Tenant...\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavTenantMenuList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavTenantMenuList.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavTenantMenuList.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NavTenantMenuList.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NavTenantMenuList.vue?vue&type=template&id=29e88e33&\"\nimport script from \"./NavTenantMenuList.vue?vue&type=script&lang=js&\"\nexport * from \"./NavTenantMenuList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NavTenantMenuList.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.mainView.loadingIndicator\": \"We are currently importing usage for this tenant.\",\r\n \"views.mainView.loadFailedText\": \"There was an error loading your tenant status. Please refresh to continue.\",\r\n \"views.mainView.invalidCredentialAlert\": \"Please check the following credential: \"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./MainView.vue?vue&type=template&id=57407ecd&\"\nimport script from \"./MainView.vue?vue&type=script&lang=js&\"\nexport * from \"./MainView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./MainView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('dashboard.title'),\"icon\":\"savings\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":_vm.$t('dashboard.titles.projected', { thisMonthName: _vm.thisMonthName }),\"subtitle\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.expectedThisMonth,_vm.tenantStore.currencyCode))+\" \")]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('span',{class:_vm.percentageDownFromLastMonth < 0 ? 'success--text' : 'error--text'},[_c('comparison-icon',{attrs:{\"value\":_vm.expectedThisMonth,\"compare\":_vm.totalLastMonth}}),_vm._v(\" \"+_vm._s(_vm.$t(_vm.percentageDownFromLastMonth < 0 ? 'dashboard.lessThan' : 'dashboard.moreThan', { percentage: _vm.percentageDownFromLastMonth, month: _vm.lastMonthName, }))+\" \")],1)]},proxy:true}])}),_c('title-sheet',{attrs:{\"title\":_vm.$t('dashboard.titles.totalLastMonth', { lastMonthName: _vm.lastMonthName }),\"subtitle\":_vm.lastMonthSubtitle},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.totalLastMonth,_vm.tenantStore.currencyCode))+\" \")]},proxy:true}])}),(_vm.tenantStore.features.includes('Recommendations/View'))?_c('title-sheet',{staticClass:\"hover_pointer\",attrs:{\"title\":_vm.$t('dashboard.titles.potentialSavings'),\"subtitle\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleSavingsClicked.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")((_vm.recommendationSummary.maximumEstimateImpact || 0.0),_vm.tenantStore.currencyCode))+\" \"),(_vm.recommendationSummary.includesElevatedSavings === true)?_c('span',[_vm._v(\"*\")]):_vm._e()]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('credential-status-icon',{attrs:{\"value\":_vm.recommendationStatus ? _vm.recommendationStatus.credentialStatus : null}}),_vm._v(\" \"+_vm._s(_vm.recommendationStatusText)+\" \")]},proxy:true}],null,false,3850759586)}):_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-sheet',{staticClass:\"py-4\",staticStyle:{\"position\":\"relative\"}},[_c('div',{staticClass:\"text-center grey--text\"},[_c('br')]),_c('div',{staticClass:\"text-h4 text-center\"},[_c('br')]),_c('div',{staticClass:\"text-center subtitle-2 grey--text\"},[_c('br')])])],1)],1),_c('content-card',{attrs:{\"title\":_vm.chartTitle,\"title-icon\":\"savings\",\"loading\":_vm.$wait.is('getTenantMonthlyUsage'),\"caption\":_vm.$t('dashboard.monthAverage', {\n total: _vm.averageMonthlySpend.toFixed(2),\n currency: _vm.tenantStore.currencyCode,\n })},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"calendar_month\")]),_vm._v(\" \"+_vm._s(_vm.usageOptions.dateRangeKey))],1)]}}])},[_c('v-list',[_c('v-subheader',[_vm._v(\"Date Ranges\")]),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '3m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.usageOptions.dateRangeKey === '3m'}})],1),_c('v-list-item-title',[_vm._v(\"3 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '6m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.usageOptions.dateRangeKey === '6m'}})],1),_c('v-list-item-title',[_vm._v(\"6 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '13m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.usageOptions.dateRangeKey === '13m'}})],1),_c('v-list-item-title',[_vm._v(\"All usage\")])],1)],1)],1),_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.figureType === 'charges' ? 'attach_money' : 'dns')+\" \")]),_vm._v(\" \"+_vm._s(_vm.figureType === 'charges' ? 'Gross / Credits' : 'Net Spend'))],1)]}}])},[_c('v-list',[_c('v-subheader',[_vm._v(\"Figure Type\")]),_c('v-list-item',{on:{\"click\":function($event){_vm.figureType = 'charges'}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"attach_money\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Gross / Credits\")]),_c('v-list-item-subtitle',[_vm._v(\"Displays actual cost and credits side by side for comparison.\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){_vm.figureType = 'spend'}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"dns\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Net Spend\")]),_c('v-list-item-subtitle',[_vm._v(\"Combines actual cost and credits into a single value.\")])],1)],1)],1)],1)]},proxy:true}])},[_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.usageOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}})],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":_vm.$t('dashboard.usageByHeirarchy.title'),\"title-icon\":\"sell\",\"caption\":_vm.$t('dashboard.usageByHeirarchy.caption')},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanAdminister'))?{key:\"title-actions\",fn:function(){return [_c('v-btn',{attrs:{\"depressed\":\"\",\"text\":\"\"},on:{\"click\":_vm.onManageHierarchyClick}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"settings\")]),_vm._v(\" \"+_vm._s(_vm.$t('dashboard.usageByHierarchy.manageHierarchy'))+\" \")],1)]},proxy:true}:null],null,true)},[_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tagTableItems,\"segregate-by\":_vm.tagOptions.segregateBy,\"currency-code\":_vm.tenantStore.currencyCode,\"hide-intelligence\":\"\",\"prefix\":\"/finance\"}})],1)],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('set-tenant-card',{attrs:{\"value\":_vm.tenantToEdit,\"loading\":_vm.$wait.is('updatingTenant'),\"title\":_vm.$t('dialog.manageTenants.edit.title'),\"subtitle\":_vm.$t('dialog.manageTenants.edit.subtitle'),\"nameEditable\":false},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, form, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('put-tenant-button',{attrs:{\"value\":{ ..._vm.tenantToEdit, ...form },\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.afterUpdateTenant({ ..._vm.tenantToEdit, ...form }))}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.updateTenant),callback:function ($$v) {_vm.$set(_vm.dialogs, \"updateTenant\", $$v)},expression:\"dialogs.updateTenant\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({attrs:{\"color\":_vm.iconColor}},'v-icon',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.iconType)+\" \")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.iconTooltip))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"credentialStatusIcon.tooltip.unknown\": \"An error has occurred, this is an unknown credential status\",\r\n \"credentialStatusIcon.tooltip.unavailable\": \"Please connect the appropriate credentials to continue viewing {integrationType}.\",\r\n \"credentialStatusIcon.tooltip.allGood\": \"All {integrationType} are correctly configured.\",\r\n \"credentialStatusIcon.tooltip.partiallyGood\": \"Although you may be seeing some {integrationType} you do not have all the credentials necessary.\",\r\n \"credentialStatusIcon.tooltip.actionRequired\": \"Please review your accounts as not all {integrationType} are coming through.\"\r\n } \r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CredentialStatusIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CredentialStatusIcon.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CredentialStatusIcon.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CredentialStatusIcon.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CredentialStatusIcon.vue?vue&type=template&id=212a944c&\"\nimport script from \"./CredentialStatusIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./CredentialStatusIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CredentialStatusIcon.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\n\r\ntype AsyncWaitFunction = (...args: any) => Promise;\r\ntype WaitFunction = (...args: any) => any;\r\n\r\nexport const useWaitStore = defineStore('wait', () => {\r\n const waits = ref([]);\r\n const start = (key: string) => {\r\n if (!waits.value.includes(key))\r\n waits.value.push(key);\r\n }\r\n const stop = (key: string) => {\r\n const indexOf = waits.value.indexOf(key);\r\n if (indexOf !== -1)\r\n waits.value.splice(indexOf, 1);\r\n }\r\n const is = (key: string) => {\r\n return waits.value.includes(key);\r\n }\r\n const whilst = async (key: string, callback: T) => {\r\n if (typeof callback !== 'function') {\r\n console.warn('second argument must be a function');\r\n return callback;\r\n }\r\n try {\r\n start(key);\r\n return await callback();\r\n } finally {\r\n stop(key);\r\n }\r\n };\r\n return { is, start, stop, whilst, waits };\r\n});","import { defineStore } from 'pinia';\r\nimport Api from '@/lib/ApiV2';\r\nimport { SpendUsageOptions } from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport { convertToViewModel, ISearchEntityViewModel } from \"@/components/Common/EntitySearchAutocomplete.vue\";\r\nimport {\r\n EntityType,\r\n ISearchEntity,\r\n PluralEntityType,\r\n} from \"@/models\";\r\nimport Config from '@/lib/Config';\r\n\r\nexport const useFilterStore = defineStore({\r\n id: 'filter',\r\n state() {\r\n return {\r\n options: getInitialFilter()\r\n }\r\n },\r\n actions: {\r\n setFilter(data: Partial) {\r\n this.options = { ...this.options, ...data };\r\n },\r\n async fetchSelectedSearchEntity() {\r\n if(this.options.entities && this.options.entities.length > 0) {\r\n return this.options.entities;\r\n }\r\n let qs = ''\r\n const searchType = [];\r\n if (this.options.subscriptionIds?.length) {\r\n return [await fetchSubscriptionById(this.options.subscriptionIds[0])];\r\n } else if (this.options.cloudAccountId) {\r\n return [await fetchCloudAccountById(this.options.cloudAccountId)];\r\n } else if (this.options.serviceId) {\r\n return [await fetchServiceById(this.options.serviceId)];\r\n } else if (this.options.tagKeyValue) {\r\n searchType.push(EntityType.tag);\r\n qs = this.options.tagKeyValue\r\n } else if (this.options.regionName) {\r\n searchType.push(EntityType.region);\r\n qs = this.options.regionName\r\n } else if (this.options.providerType) {\r\n searchType.push(EntityType.cloudProvider);\r\n qs = this.options.providerType\r\n }\r\n else if (this.options.geographyName) {\r\n searchType.push(EntityType.geography);\r\n qs = this.options.geographyName;\r\n }\r\n else if (this.options.productCategory) {\r\n searchType.push(EntityType.productCategory);\r\n qs = this.options.productCategory;\r\n }\r\n else if (this.options.productId) {\r\n searchType.push(EntityType.product);\r\n qs = this.options.productId;\r\n }\r\n else if (this.options.savedViewId) {\r\n searchType.push(EntityType.customView);\r\n qs = this.options.savedViewId;\r\n }\r\n if (qs != '') {\r\n const r = await queryEntities(qs, searchType, 0, 30);\r\n return r;\r\n }\r\n return null;\r\n },\r\n reset() {\r\n this.setFilter(getInitialFilter());\r\n }\r\n },\r\n persist: {\r\n afterRestore(ctx) {\r\n if (ctx.store.options.fromDate)\r\n ctx.store.options.fromDate = new Date(ctx.store.options.fromDate);\r\n if (ctx.store.options.toDate)\r\n ctx.store.options.toDate = new Date(ctx.store.options.toDate);\r\n }\r\n }\r\n})\r\n\r\nconst queryEntities = async (queryString, types, page, pageSize) => {\r\n const searchParams = new URLSearchParams();\r\n const searchQuery = `${queryString || ''}`;\r\n searchParams.append('q', searchQuery);\r\n if (typeof types !== 'undefined' && types.join) {\r\n searchParams.append('types', types.join());\r\n }\r\n if (typeof page !== 'undefined') {\r\n searchParams.append('page', page);\r\n }\r\n if (typeof pageSize !== 'undefined') {\r\n searchParams.append('pageSize', pageSize);\r\n }\r\n const searchItems = await Api.http\r\n .get(`/api/search?${searchParams.toString()}`)\r\n .then((r) => r.data.map(convertToViewModel));\r\n\r\n return searchItems;\r\n}\r\n\r\nconst fetchSubscriptionById = async (id: string): Promise => {\r\n const subscription = await Api.http\r\n .get(`/api/metadata/subscriptions/${id}`)\r\n .then(r => r.data);\r\n\r\n const entity: ISearchEntity = {\r\n id: id,\r\n name: subscription.subscriptionName,\r\n type: EntityType.subscription,\r\n description: '',\r\n provider: subscription.cloudProviderType,\r\n entityIndex: 1\r\n }\r\n return convertToViewModel(entity);\r\n}\r\n\r\nconst fetchCloudAccountById = async (id: string): Promise => {\r\n const cloudAccount = await Api.http\r\n .get(`/api/metadata/cloudAccounts/${id}`)\r\n .then(r => r.data);\r\n\r\n const entity: ISearchEntity = {\r\n id: id,\r\n name: cloudAccount.name,\r\n type: EntityType.cloudAccount,\r\n description: cloudAccount.typeDescription,\r\n provider: cloudAccount.providerType,\r\n entityIndex: 1\r\n }\r\n return convertToViewModel(entity);\r\n}\r\n\r\nconst fetchServiceById = async (id: string): Promise => {\r\n const service = await Api.http\r\n .get(`/api/metadata/services/${id}`)\r\n .then(r => r.data);\r\n\r\n const entity: ISearchEntity = {\r\n id: id,\r\n name: service.serviceName,\r\n type: EntityType.cloudAccount,\r\n description: '',\r\n provider: service.cloudProviderType,\r\n entityIndex: 1\r\n }\r\n return convertToViewModel(entity);\r\n}\r\n\r\nconst getInitialFilter = (): SpendUsageOptions => {\r\n const initialFilter = {\r\n dateRangeKey: Config.isFeatureEnabled('UsageDefault:Date:30d') ? '30d' : '60d',\r\n granularity: 'Daily',\r\n topXResults: 25,\r\n segregateBy: PluralEntityType.products,\r\n toDate: null,\r\n fromDate: null,\r\n cloudAccountId: null,\r\n subscriptionIds: null,\r\n serviceId: null,\r\n productId: null,\r\n providerType: null,\r\n regionName: null,\r\n geographyName: null,\r\n tagKeyValue: null,\r\n tagKeyValues:[],\r\n productCategory: null,\r\n entities: null\r\n };\r\n return initialFilter;\r\n}\r\n","export const OthersPatternUrl = 'url(#others-pattern)';\r\n\r\nexport const ContrastBandVariable = 'var(--contrast-band)';\r\nexport const ContrastTextVariable = \"--contrast-text\";\r\nexport const ContrastLinesVariable = \"--contrast-lines\";\r\n\r\nexport const VuetifyPrimaryBase = 'var(--v-primary-base)';\r\nexport const VuetifyErrorDarken1 = 'var(--v-error-darken1)';\r\nexport const VuetifyWarningDarken1 = 'var(--v-warning-darken1)';\r\nexport const VuetifySuccessDarken1 = 'var(--v-success-darken1)';\r\n\r\nexport const VuetifyErrorLighten2 = 'var(--v-error-lighten2)';\r\nexport const VuetifyWarningLighten2 = 'var(--v-warning-lighten2)';\r\nexport const VuetifySuccessLighten2 = 'var(--v-success-lighten2)';","import Config from \"@/lib/Config\";\r\nconst colorsOverride = Config.get().CHART_COLORS.filter(c => c !== '');\r\n\r\nconst hexToRgb = (hex: string) => {\r\n const normalized = hex.replace(/^#/, \"\");\r\n const bigint = parseInt(normalized, 16);\r\n const r = (bigint >> 16) & 255;\r\n const g = (bigint >> 8) & 255;\r\n const b = bigint & 255;\r\n return { r, g, b };\r\n};\r\n\r\nexport const LEGACY_COLORS_HEX = colorsOverride && colorsOverride.length > 0 ? colorsOverride : [\r\n \"#7cb5ec\",\r\n \"#434348\",\r\n \"#90ed7d\",\r\n \"#f7a35c\",\r\n \"#8085e9\",\r\n \"#f15c80\",\r\n \"#e4d354\",\r\n \"#2b908f\",\r\n \"#f45b5b\",\r\n \"#91e8e1\",\r\n];\r\nexport const LEGACY_COLORS_RGB = LEGACY_COLORS_HEX.map(hex => {\r\n const rgb = hexToRgb(hex);\r\n return [ rgb.r.toString(), rgb.g.toString(), rgb.b.toString() ]\r\n});\r\n","'use strict';\r\n\r\nimport moment from 'dayjs';\r\nimport {_adapters} from 'chart.js';\r\n\r\nconst FORMATS = {\r\n datetime: 'MMM D, YYYY, h:mm:ss a',\r\n millisecond: 'h:mm:ss.SSS a',\r\n second: 'h:mm:ss a',\r\n minute: 'h:mm a',\r\n hour: 'hA',\r\n day: 'MMM D',\r\n week: 'll',\r\n month: 'MMM YYYY',\r\n quarter: '[Q]Q - YYYY',\r\n year: 'YYYY'\r\n};\r\n\r\n_adapters._date.override(typeof moment === 'function' ? {\r\n _id: 'moment', // DEBUG ONLY\r\n\r\n formats: function() {\r\n return FORMATS;\r\n },\r\n\r\n parse: function(value, format) {\r\n if (typeof value === 'string' && typeof format === 'string') {\r\n value = moment(value, format);\r\n } else if (!(value instanceof moment)) {\r\n value = moment(value);\r\n }\r\n return value.isValid() ? value.valueOf() : null;\r\n },\r\n\r\n format: function(time, format) {\r\n return moment(time).format(format);\r\n },\r\n\r\n add: function(time, amount, unit) {\r\n return moment(time).add(amount, unit).valueOf();\r\n },\r\n\r\n diff: function(max, min, unit) {\r\n return moment(max).diff(moment(min), unit);\r\n },\r\n\r\n startOf: function(time, unit, weekday) {\r\n time = moment(time);\r\n if (unit === 'isoWeek') {\r\n weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));\r\n return time.isoWeekday(weekday).startOf('day').valueOf();\r\n }\r\n return time.startOf(unit).valueOf();\r\n },\r\n\r\n endOf: function(time, unit) {\r\n return moment(time).endOf(unit).valueOf();\r\n }\r\n} : {});","/*\r\n Modified from: https://www.chartjs.org/docs/4.2.1/samples/legend/html.html\r\n*/\r\nconst getOrCreateLegendList = (chart, id) => {\r\n const legendContainer = document.getElementById(id);\r\n let listContainer = legendContainer.querySelector('ul');\r\n \r\n if (!listContainer) {\r\n listContainer = document.createElement('ul');\r\n listContainer.style.display = 'flex';\r\n listContainer.style.flexDirection = 'column';\r\n listContainer.style.margin = \"0\";\r\n listContainer.style.padding = \"0\";\r\n listContainer.style.paddingTop = \"20px\";\r\n listContainer.style.paddingBottom = \"20px\";\r\n\r\n listContainer.style.maxWidth = \"250px\";\r\n legendContainer.appendChild(listContainer);\r\n }\r\n \r\n return listContainer;\r\n };\r\n \r\n const htmlLegendPlugin = {\r\n id: 'htmlLegend',\r\n afterUpdate(chart, args, options) {\r\n const ul = getOrCreateLegendList(chart, options.containerID);\r\n \r\n // Remove old legend items\r\n while (ul.firstChild) {\r\n ul.firstChild.remove();\r\n }\r\n \r\n // Reuse the built-in legendItems generator\r\n const items = chart.options.plugins.legend.labels.generateLabels(chart);\r\n \r\n items.forEach(item => {\r\n const li = document.createElement('li');\r\n li.style.alignItems = 'center';\r\n li.style.cursor = 'pointer';\r\n li.style.display = 'flex';\r\n li.style.flexDirection = 'row';\r\n li.style.marginLeft = '10px';\r\n li.style.marginBottom = '5px';\r\n \r\n li.onclick = () => {\r\n const {type} = chart.config;\r\n if (type === 'pie' || type === 'doughnut') {\r\n // Pie and doughnut charts only have a single dataset and visibility is per item\r\n chart.toggleDataVisibility(item.index);\r\n } else {\r\n if(options.onLabelClick) {\r\n options.onLabelClick(null, [{datasetIndex: item.datasetIndex, index: 0}], chart)\r\n }\r\n else {\r\n chart.setDatasetVisibility(item.datasetIndex, !chart.isDatasetVisible(item.datasetIndex));\r\n }\r\n \r\n }\r\n chart.update();\r\n };\r\n \r\n // Color box\r\n const boxSpan = document.createElement('span');\r\n boxSpan.style.background = item.fillStyle;\r\n boxSpan.style.borderColor = item.strokeStyle;\r\n boxSpan.style.borderStyle = 'solid';\r\n boxSpan.style.borderWidth = item.lineWidth + 'px';\r\n boxSpan.style.display = 'inline-block';\r\n boxSpan.style.flexShrink = \"0\";\r\n boxSpan.style.height = '10px';\r\n boxSpan.style.marginRight = '10px';\r\n boxSpan.style.width = '20px';\r\n \r\n // Text\r\n const textContainer = document.createElement('p');\r\n textContainer.style.color = item.fontColor;\r\n textContainer.style.margin = \"0\";\r\n textContainer.style.padding = \"0\";\r\n textContainer.style.textDecoration = item.hidden ? 'line-through' : '';\r\n \r\n const text = document.createTextNode(item.text);\r\n textContainer.appendChild(text);\r\n \r\n li.appendChild(boxSpan);\r\n li.appendChild(textContainer);\r\n ul.appendChild(li);\r\n });\r\n }\r\n };\r\n\r\n export default htmlLegendPlugin;","import { ISpendResult, ISpendAndConsumptionGroup, IForecastResult, IEventItemModel, Granularity, IConsumptionUsageRecord } from '@/models';\r\nimport * as CssVariables from '@/lib/CssVariables';\r\nimport { ChartData, Point, Chart, ChartDataset } from 'chart.js/auto'\r\nimport annotationPlugin, { AnnotationOptions, CoreAnnotationOptions, EventContext, LabelAnnotationOptions } from 'chartjs-plugin-annotation';\r\nimport { formatCurrency } from '@/lib/Currencies';\r\nimport { LEGACY_COLORS_RGB } from './legacy'\r\nimport pattern from 'patternomaly';\r\nimport './dayJsAdapter';\r\nimport htmlLegendPlugin from './legendPlugin';\r\nimport zoomPlugin from 'chartjs-plugin-zoom';\r\nimport moment from 'dayjs';\r\nimport { Annotation } from '@/models/Annotation';\r\n\r\n\r\nChart.register(annotationPlugin);\r\n\r\nconst PREFIX_PAD = 100;\r\nconst OTHERS_DATASET_ORDER = 99998;\r\nconst PROJECTIONS_DATASET_ORDER = 99999;\r\n\r\nexport interface IUsageDatapoint {\r\n x: number;\r\n y: number;\r\n id: string;\r\n type: string;\r\n}\r\n\r\nexport enum UsageReportTypes {\r\n charges = 'charges',\r\n spend = 'spend',\r\n credits = 'credits'\r\n}\r\n\r\nexport interface IConvertUsageReportOpts {\r\n labelSuffix?: string | null;\r\n stackGroup?: string | null;\r\n colorsArray?: string[] | null;\r\n reportType?: UsageReportTypes | UsageReportTypes[] | null;\r\n}\r\n\r\nconst valueFn = (t: UsageReportTypes): ((u: IConsumptionUsageRecord) => number) => {\r\n switch (t) {\r\n case UsageReportTypes.spend:\r\n return (u) => u.spend;\r\n case UsageReportTypes.charges:\r\n return (u) => u.charges;\r\n case UsageReportTypes.credits:\r\n return (u) => u.credits;\r\n default:\r\n throw new Error('Unknown usage report type');\r\n }\r\n};\r\n // This is code taken from their site and apparently they are using a value that doesnt exist on the typescript\r\n function autoScaling(ctx : EventContext & {size: number}, option : 'font' | 'padding', origValue : number) {\r\n const chart = ctx.chart;\r\n const {width, height} = chart.chartArea;\r\n const barWidth = chart.getDatasetMeta(0).data[0];\r\n if(barWidth[\"width\"]) {\r\n if(option == 'padding') {\r\n const output = barWidth[\"width\"] / 10;\r\n if(output > origValue) {\r\n return origValue;\r\n }\r\n return output;\r\n }\r\n else if(option === 'font') {\r\n const output = barWidth[\"width\"] / 3;\r\n if(output > origValue) {\r\n return origValue;\r\n }\r\n return output;\r\n }\r\n }\r\n\r\n const hypo = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\r\n let size, value;\r\n if (!ctx.size) {\r\n ctx.size = size = hypo;\r\n value = origValue;\r\n } else {\r\n size = ctx.size;\r\n value = hypo / size * origValue;\r\n }\r\n if(value > origValue) {\r\n return origValue;\r\n }\r\n if (option === 'font') {\r\n return {size: value};\r\n }\r\n return value;\r\n }\r\n\r\nexport const convertUsageResponseToDatasets = (usageResult: ISpendResult | null, opts?: IConvertUsageReportOpts): ChartData<'bar', Point[], string> => {\r\n const { labelSuffix, stackGroup, colorsArray, reportType } = opts || {};\r\n const datasets: ChartDataset<'bar', IUsageDatapoint[]>[] = [];\r\n const colours = colorsArray ? colorsArray : LEGACY_COLORS_RGB;\r\n (usageResult?.groupings || []).reverse().forEach((g, i) => {\r\n const color = colours[i % colours.length];\r\n const fullColor = `rgb(${color})`;\r\n\r\n const dataset: ChartDataset<'bar', IUsageDatapoint[]> = {\r\n data: [],\r\n label: (g.type === '' ? 'Tenant' : g.name) + (labelSuffix ? ` (${labelSuffix})` : ''),\r\n backgroundColor: g.isOther ? pattern.draw('diagonal', '#87db79', '#313e4d') : fullColor,\r\n borderColor: 'white',\r\n hoverBackgroundColor: g.isOther ? pattern.draw('diagonal', '#FF10F0', '#313e4d') : '#FF10F0',\r\n borderWidth: 1,\r\n order: g.isOther ? OTHERS_DATASET_ORDER : (PREFIX_PAD + i),\r\n normalized: true,\r\n stack: stackGroup ? stackGroup : 'stack0'\r\n };\r\n const reportTypes: UsageReportTypes[] = !reportType ? [UsageReportTypes.spend] : Array.isArray(reportType) ? reportType : [reportType];\r\n const { id, type } = g;\r\n g.usageRecords.forEach(u => {\r\n const x = new Date(u.usageDate).getTime();\r\n reportTypes.forEach(t => {\r\n const fn = valueFn(t);\r\n const y = fn(u);\r\n dataset.data.push({ x, y, id, type });\r\n });\r\n });\r\n datasets.push(dataset);\r\n });\r\n return {\r\n labels: [],\r\n datasets\r\n };\r\n};\r\n\r\nexport const convertProjectionsResponseToDataset = (projectionsResult: IForecastResult | null, labelSuffix?: string | null, stackGroup?: string | null, altColorHex?: string | null): ChartData<'bar', Point[], string> => {\r\n if (!projectionsResult) {\r\n return {\r\n labels: [],\r\n datasets: []\r\n }\r\n }\r\n const dataset: ChartDataset<'bar', Point[]> = {\r\n data: [],\r\n label: 'Projected' + (labelSuffix ? ` (${labelSuffix})` : ''),\r\n backgroundColor: pattern.draw('diagonal', (altColorHex ? altColorHex : '#3d3a60'), '#fff'),\r\n borderColor: 'white',\r\n borderWidth: 1,\r\n order: PROJECTIONS_DATASET_ORDER,\r\n stack: stackGroup ? stackGroup : 'stack0'\r\n };\r\n (projectionsResult?.forecasts || []).filter(x => x.forecast > 0).forEach((u) => {\r\n const forecastTimestamp = new Date(u.usageDate).getTime();\r\n dataset.data.push({\r\n x: forecastTimestamp,\r\n y: u.forecast\r\n });\r\n });\r\n return {\r\n labels: [],\r\n datasets: [dataset]\r\n }\r\n};\r\n\r\nexport function convertEventsToAnnotations(eventResponse: IEventItemModel[], onClick: (xMin: number, xMax: number) => void | null = null): CoreAnnotationOptions[] {\r\n const sortedEvents = eventResponse.sort((a, b) => {\r\n const aDate = new Date(a.year, a.month - 1, a.day);\r\n const bDate = new Date(b.year, b.month - 1, b.day);\r\n return new Date(aDate).getTime() - new Date(bDate).getTime();\r\n });\r\n const plotBands: AnnotationOptions[] = [];\r\n sortedEvents.forEach((value) => {\r\n const currentDate = new Date(Date.UTC(value.year, value.month - 1, value.day));\r\n const dayBefore = new Date(currentDate);\r\n dayBefore.setDate(currentDate.getDate() - 1);\r\n let toCreate = false;\r\n const existingBand = plotBands[plotBands.length - 1];\r\n if (!existingBand) {\r\n toCreate = true;\r\n } else if (existingBand.xMin == currentDate.getTime()) {\r\n // Multiple events on the same date; this is where we could take into account intensity values.\r\n } else if (existingBand.xMin == dayBefore.getTime()) {\r\n existingBand.xMax = currentDate.getTime();\r\n } else {\r\n toCreate = true;\r\n }\r\n if (toCreate) {\r\n const plotBand: AnnotationOptions = {\r\n type: 'box',\r\n xMin: currentDate.getTime(),\r\n xMax: currentDate.getTime(),\r\n backgroundColor: 'rgba(255, 99, 132, 0.25)',\r\n click() {\r\n if (!onClick) return;\r\n onClick(plotBand.xMin as number, plotBand.xMax as number);\r\n },\r\n }\r\n plotBands.push(plotBand);\r\n }\r\n });\r\n plotBands.forEach((band) => {\r\n const xMinDate = new Date(band.xMin as number);\r\n band.xMin = new Date(xMinDate.setHours(0, 0, 0, 0)).getTime();\r\n const xMaxDate = new Date(band.xMax as number);\r\n band.xMax = new Date(xMaxDate.setHours(23, 59, 59, 999)).getTime();\r\n });\r\n return plotBands;\r\n}\r\n\r\nexport function convertAnnotatesToAnnotations(eventResponse: Annotation[], data: ChartDataset<\"bar\", Point[]>[], granularity: Granularity, onClick: (xMin: number, xMax: number) => void | null = null): CoreAnnotationOptions[] {\r\n const flatData = data.flatMap(({data, stack}) => data.map(y => { \r\n return {x : y.x,y: y.y, stack}\r\n }));\r\n const sortedEvents = eventResponse.map(x => new Date(x.annotationDate)).sort((a, b) => {\r\n return a.getTime() - b.getTime();\r\n });\r\n let largest = 0;\r\n const xValues = flatData.map(x => {return {x: x.x, stack: x.stack}}).filter(\r\n (value, index, self) => self.findIndex(itemB => value.stack == itemB.stack && value.x == itemB.x) === index);\r\n const totals: { [id: number] : number; } = {};\r\n xValues.forEach(x => {\r\n const total = flatData.filter(item => item.x == x.x && item.stack == x.stack).map(y => y.y).reduce((a, b) => a + b) ?? 0;\r\n if(total > largest) {\r\n largest = total;\r\n }\r\n if(!totals[x.x] || totals[x.x] < total) {\r\n totals[x.x] = total;\r\n }\r\n });\r\n\r\n // get granularity to change look\r\n const plotBands: LabelAnnotationOptions[] = [];\r\n sortedEvents.forEach((value) => {\r\n const xMinDate = new Date(value);\r\n xMinDate.setHours(0, 0, 0, 0);\r\n const xMaxDate = new Date(value);\r\n xMaxDate.setHours(23, 59, 59, 999);\r\n\r\n if(granularity == Granularity.monthly) {\r\n xMinDate.setDate(1);\r\n xMaxDate.setDate(moment(xMaxDate).endOf('month').day());\r\n }\r\n const dayBefore = new Date(xMinDate);\r\n dayBefore.setDate(xMinDate.getDate() - 1);\r\n let toCreate = false;\r\n const existingBand = plotBands[plotBands.length - 1];\r\n if (!existingBand) {\r\n toCreate = true;\r\n } else if (existingBand.xMin == xMinDate.getTime()) {\r\n // Multiple events on the same date; this is where we could take into account intensity values.\r\n } else if (granularity != Granularity.monthly && existingBand.xMin == dayBefore.getTime()) {\r\n existingBand.xMax = xMinDate.getTime();\r\n } else {\r\n toCreate = true;\r\n }\r\n if (toCreate) {\r\n const minDate = xMinDate.getTime();\r\n const maxDate = xMaxDate.getTime();\r\n let midday = moment(new Date(value));\r\n const offset = midday.utcOffset();\r\n if(offset >= 0) {\r\n midday = midday.startOf('day');\r\n }\r\n else {\r\n midday = midday.endOf('day')\r\n }\r\n midday = midday.add(midday.utcOffset(), 'm'); // Allign with start of day in the timezone\r\n const dataValues = flatData.filter(x => x.x >= minDate && x.x <= maxDate).map(x => x.x).filter(\r\n (value, index, self) => self.findIndex(itemB => value == itemB) === index);\r\n let total = 0;\r\n dataValues.forEach(x => {\r\n if(totals[x] > total) {\r\n total = totals[x];\r\n }\r\n });\r\n \r\n const plotBand: any = { // has to be any as for some reason nothing else works\r\n type: 'label',\r\n backgroundColor: 'rgb(124, 181, 236)',\r\n content: 'ⓘ',\r\n font: (ctx) => autoScaling(ctx, 'font', granularity == Granularity.monthly ? 15 : 10),\r\n padding: (ctx) => autoScaling(ctx, 'padding', granularity == Granularity.monthly ? 5 : 3),\r\n xMin: xMinDate.getTime(),\r\n xMax: xMaxDate.getTime(),\r\n position: {\r\n x: 'center',\r\n y: 'center'\r\n },\r\n xValue: granularity == Granularity.monthly ? xMinDate.getTime() : midday.toDate().getTime(), // using .unix seemed to make it angry\r\n yValue: total + (largest * .05), // Place it 5% above the top of the largest column value,\r\n click() {\r\n if (!onClick) return;\r\n onClick(plotBand.xMin as number, plotBand.xMax as number);\r\n },\r\n }\r\n plotBands.push(plotBand);\r\n }\r\n });\r\n plotBands.forEach((band) => {\r\n const xMinDate = new Date(band.xMin as number);\r\n band.xMin = new Date(xMinDate.setHours(0, 0, 0, 0)).getTime();\r\n const xMaxDate = new Date(band.xMax as number);\r\n band.xMax = new Date(xMaxDate.setHours(23, 59, 59, 999)).getTime();\r\n });\r\n return plotBands;\r\n}\r\n\r\nexport interface IClickEvent {\r\n index: number;\r\n name: string;\r\n isOther: boolean;\r\n datasetGroupId: string;\r\n}\r\nexport interface IRangeSelectedEvent {\r\n xMin: number;\r\n xMax: number;\r\n rangeTotal: number;\r\n}\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n granularity: Granularity.daily | Granularity.monthly;\r\n onClick?: (event: IClickEvent) => void;\r\n onRangeSelection?: (event: IRangeSelectedEvent) => void;\r\n allowRangeSelection: boolean;\r\n type?: 'bar' | 'line',\r\n maxDate?: string\r\n}\r\n\r\nfunction getRange(scale, pixel0, pixel1) {\r\n const v0 = scale.getValueForPixel(pixel0);\r\n const v1 = scale.getValueForPixel(pixel1);\r\n return {\r\n min: Math.min(v0, v1),\r\n max: Math.max(v0, v1)\r\n };\r\n }\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions, containerId: string): Chart => {\r\n const { currencyCode, onClick, granularity, type, onRangeSelection, allowRangeSelection, maxDate} = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(CssVariables.ContrastLinesVariable);\r\n const contrastText = style.getPropertyValue(CssVariables.ContrastTextVariable);\r\n let selectedRange = undefined;\r\n zoomPlugin.zoomFunctions.default = (scale, zoom, center, limits) => false;\r\n zoomPlugin.zoomRectFunctions.default = (scale, from, to, limits) => {\r\n const range = getRange(scale, from, to);\r\n selectedRange = range;\r\n \r\n return true;};\r\n\r\n zoomPlugin.panFunctions.default = (scale, delta, limits) => false;\r\n const onClickProcessor = (_, [targetPtr], chart) => {\r\n if (!targetPtr) return;\r\n const targetDataset = chart.data.datasets[targetPtr.datasetIndex];\r\n if (!targetDataset || targetDataset.order === PROJECTIONS_DATASET_ORDER) return;\r\n const target: IUsageDatapoint = targetDataset.data[targetPtr.index] as any;\r\n if (!target) return;\r\n if (target.type === '') return;\r\n if (onClick) {\r\n onClick({\r\n index: targetDataset.order,\r\n isOther: targetDataset.order === OTHERS_DATASET_ORDER,\r\n name: targetDataset.label,\r\n datasetGroupId: target.id\r\n });\r\n }\r\n }\r\n\r\n \r\n const chart = new Chart(chartItem, {\r\n type: type || 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options: {\r\n borderColor: 'rgba(0,0, 0, 0)',\r\n plugins: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: containerId,\r\n },\r\n zoom: {\r\n zoom: {\r\n drag: {\r\n enabled: allowRangeSelection\r\n },\r\n mode: 'x',\r\n onZoomComplete(chart){\r\n if(onRangeSelection && selectedRange != undefined) {\r\n const minXDate = new Date(Math.floor(selectedRange.min));\r\n minXDate.setHours(0,0,0,0);\r\n\r\n const maxXDate = new Date(Math.ceil(selectedRange.max));\r\n maxXDate.setHours(23,59,59,999);\r\n\r\n const minX = minXDate.getTime(); \r\n\r\n const maxX = maxXDate.getTime();\r\n const datasets = chart.chart.data.datasets;\r\n const values = datasets.flatMap(x => x.data.filter((y: Point) => y.x >= minX && y.x <= maxX));\r\n if(values?.length > 0) {\r\n const stackTotal = values.filter(x => x).map((x: Point) => x.y)?.reduce((a,b) => a + b) ?? 0;\r\n onRangeSelection({\r\n xMin: minX,\r\n xMax: maxX,\r\n rangeTotal: stackTotal\r\n });\r\n }\r\n }\r\n selectedRange = undefined;\r\n }\r\n },\r\n },\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: contrastText\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(item) {\r\n return [item.dataset.label];\r\n },\r\n afterLabel(item) {\r\n const dataset = item.dataset;\r\n const points: Point[] = dataset.data as any;\r\n const hoverPoint: Point = points[item.dataIndex];\r\n const datasetTotal = points.map((a: Point) => a.y).reduce((a, b) => a + b);\r\n const datasetAverage = datasetTotal / dataset.data.length;\r\n const percentageOfAverage = ((hoverPoint.y - datasetAverage) / datasetAverage * 100);\r\n const datasets = item.chart.data.datasets;\r\n const values = datasets.filter(x => x.stack == dataset.stack).flatMap(x => x.data.filter((y: Point) => y.x == hoverPoint.x));\r\n const stackTotal = values.filter(x => x).map((x: Point) => x.y).reduce((a,b) => a + b);\r\n return [\r\n `Total: ${formatCurrency(hoverPoint.y, currencyCode)}`,\r\n `${percentageOfAverage > 0 ? '+' + percentageOfAverage.toFixed(2) : percentageOfAverage.toFixed(2)}% vs. average`,\r\n `Column Total: ${formatCurrency(stackTotal, currencyCode)}`\r\n ]\r\n },\r\n },\r\n mode: 'point',\r\n },\r\n annotation: {\r\n annotations: {}\r\n },\r\n },\r\n interaction: {\r\n intersect: true,\r\n mode: 'dataset'\r\n },\r\n onHover(event, [element]) {\r\n let newCursor = 'default';\r\n if (element) {\r\n const targetDataset = chart.data.datasets[element.datasetIndex];\r\n if (!targetDataset) return;\r\n const target: IUsageDatapoint = targetDataset.data[element.index] as any;\r\n if (!target) return;\r\n if (target.type === '') return;\r\n if (targetDataset.order !== PROJECTIONS_DATASET_ORDER) {\r\n newCursor = 'pointer';\r\n }\r\n }\r\n (event.native.target as HTMLElement).style.cursor = newCursor;\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n onClick(_, [targetPtr], chart) {\r\n onClickProcessor(_,[targetPtr], chart);\r\n },\r\n scales: {\r\n x: {\r\n type: \"time\",\r\n stacked: true,\r\n ticks: {\r\n color: contrastText\r\n },\r\n grid: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n },\r\n axis: 'x',\r\n time: {\r\n unit: granularity == Granularity.monthly ? 'month' : 'day'\r\n },\r\n bounds: 'ticks',\r\n max: new Date(maxDate ?? Date.now()).getTime()\r\n },\r\n y: {\r\n type: 'linear',\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return formatCurrency(value, currencyCode);\r\n }\r\n },\r\n grid: {\r\n color: contrastLines\r\n },\r\n min: 0,\r\n axis: 'y',\r\n title: {\r\n text: `Cost (${currencyCode})`,\r\n color: contrastText,\r\n display: true\r\n },\r\n stack: 'y',\r\n display: true,\r\n\r\n }\r\n }\r\n },\r\n plugins: [htmlLegendPlugin, zoomPlugin]\r\n });\r\n return chart;\r\n};","\r\nimport { defineComponent, ref, onMounted, watch } from 'vue';\r\nimport { useTenantStore, storeToRefs } from '@/stores';\r\nimport createUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n convertAnnotatesToAnnotations,\r\n IClickEvent,\r\n UsageReportTypes,\r\n IUsageDatapoint,\r\n} from '@/chartjs/createUsageBarChart';\r\nimport { Granularity } from '@/models';\r\nexport {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n convertAnnotatesToAnnotations,\r\n IClickEvent,\r\n IUsageDatapoint,\r\n UsageReportTypes,\r\n};\r\n\r\nexport default defineComponent({\r\n props: {\r\n granularity: String,\r\n data: Object,\r\n annotations: Array,\r\n height: String,\r\n allowRangeSelection: Boolean,\r\n maxDate: String,\r\n },\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n\r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.classList.add('chart-canvas');\r\n if (p.height === '100%') {\r\n canvas.value.classList.add('fill-height-srsly');\r\n root.value.classList.add('fill-height');\r\n canvasContainer.value.classList.add('fill-height-srsly');\r\n } else {\r\n canvas.value.style.height = p.height || '400px';\r\n }\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = p.height || '400px';\r\n\r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n \r\n const chart = createUsageBarChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n granularity: p.granularity as Granularity.daily | Granularity.monthly,\r\n onClick(event) {\r\n emit('click', event);\r\n },\r\n onRangeSelection(event) {\r\n emit('onRangeSelection', event);\r\n },\r\n allowRangeSelection: p.allowRangeSelection == true,\r\n maxDate: p.maxDate\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.options.plugins.annotation.annotations = p.annotations || [];\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n watch(\r\n () => p.annotations,\r\n () => renderChart(),\r\n { immediate: false, deep: true }\r\n );\r\n return { root, canvas, renderChart, legend };\r\n },\r\n watch: {\r\n '$vuetify.theme.dark': {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpendUsageBarChart.vue?vue&type=template&id=66c40b00&\"\nimport script from \"./SpendUsageBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsageBarChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n name: _vm.name,\n displayCurrencyCode: _vm.currencyCode,\n mpnOverride: _vm.mpnOverride,\n tagHeirarchy: [_vm.tagHeirarchy1, _vm.tagHeirarchy2, _vm.tagHeirarchy3],\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[(_vm.nameEditable)?_c('v-text-field',{attrs:{\"rules\":_vm.nameRules,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_vm._e(),_c('currency-combo-box',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.value),expression:\"!value\"}],attrs:{\"rules\":_vm.currencyCodeRules},model:{value:(_vm.currencyCode),callback:function ($$v) {_vm.currencyCode=$$v},expression:\"currencyCode\"}}),(_vm.allowMpnOverride)?_c('v-text-field',{staticClass:\"mb-8\",attrs:{\"label\":_vm.$t('setTenantCard.mpn')},model:{value:(_vm.mpnOverride),callback:function ($$v) {_vm.mpnOverride=$$v},expression:\"mpnOverride\"}}):_vm._e(),_c('tag-key-autocomplete',{staticClass:\"mb-8\",attrs:{\"label\":_vm.$t('setTenantCard.tagHeirarchy1'),\"dense\":false,\"filled\":false,\"chips\":false},model:{value:(_vm.tagHeirarchy1),callback:function ($$v) {_vm.tagHeirarchy1=$$v},expression:\"tagHeirarchy1\"}}),_c('tag-key-autocomplete',{staticClass:\"mb-8\",attrs:{\"label\":_vm.$t('setTenantCard.tagHeirarchy2'),\"dense\":false,\"filled\":false,\"chips\":false},model:{value:(_vm.tagHeirarchy2),callback:function ($$v) {_vm.tagHeirarchy2=$$v},expression:\"tagHeirarchy2\"}}),_c('tag-key-autocomplete',{staticClass:\"mb-8\",attrs:{\"label\":_vm.$t('setTenantCard.tagHeirarchy3'),\"dense\":false,\"filled\":false,\"chips\":false},model:{value:(_vm.tagHeirarchy3),callback:function ($$v) {_vm.tagHeirarchy3=$$v},expression:\"tagHeirarchy3\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.errorFallback)?_c('v-combobox',{attrs:{\"loading\":_vm.$wait.is('getCurrencies'),\"value\":_vm.value,\"items\":_vm.currencyCodes,\"label\":_vm.$t('currencyComboBox.currency'),\"rules\":_vm.rules},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_c('v-text-field',{attrs:{\"value\":_vm.value,\"rules\":_vm.rules,\"label\":_vm.$t('currencyComboBox.currency'),\"placeholder\":_vm.$t('currencyComboBox.fallbackPlaceholder')},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"currencyComboBox.currency\": \"Currency\",\r\n \"currencyComboBox.fallbackPlaceholder\": \"Please enter the currency code of your choosing e.g. AUD\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyComboBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyComboBox.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyComboBox.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyComboBox.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CurrencyComboBox.vue?vue&type=template&id=61ab201e&\"\nimport script from \"./CurrencyComboBox.vue?vue&type=script&lang=js&\"\nexport * from \"./CurrencyComboBox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CurrencyComboBox.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('entity-search-autocomplete',_vm._b({attrs:{\"filled\":_vm.filled,\"types\":['TagKey'],\"value\":_vm.tagKeyEntity,\"prepend-icon\":null,\"label\":_vm.label || _vm.$t('tagKeyAutocomplete.tagKey.label'),\"hide-details\":\"\",\"support-create\":\"\"},on:{\"input\":_vm.handleTagKeySelection}},'entity-search-autocomplete',_vm.$props,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"tagKeyAutocomplete.tagKey.label\": \"Key\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyAutocomplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyAutocomplete.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagKeyAutocomplete.vue?vue&type=template&id=14002455&\"\nimport script from \"./TagKeyAutocomplete.vue?vue&type=script&lang=js&\"\nexport * from \"./TagKeyAutocomplete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagKeyAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n{\r\n \"en\": {\r\n \"setTenantCard.name.required\": \"A name is required for tenants\",\r\n \"setTenantCard.currencyCode.required\": \"A currency code is required for tenants\",\r\n \"setTenantCard.mpn\": \"Microsoft Partner Number\",\r\n \"setTenantCard.tagHeirarchy1\": \"Tag Key 1\",\r\n \"setTenantCard.tagHeirarchy2\": \"Tag Key 2\",\r\n \"setTenantCard.tagHeirarchy3\": \"Tag Key 3\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetTenantCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetTenantCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetTenantCard.vue?vue&type=template&id=4a240b8c&\"\nimport script from \"./SetTenantCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetTenantCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":_vm.value ? `/api/metadata/tenant/${_vm.value.id}` : null,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putTenantButton.errorMessage\": \"There was an error encountered while updating this tenant. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutTenantButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutTenantButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutTenantButton.vue?vue&type=template&id=4983a29e&\"\nimport script from \"./PutTenantButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PutTenantButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_vm._t(\"workspace\"),_c('v-spacer'),(!_vm.hideSearch)?_c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"outlined\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"filter_alt\")]),_vm._v(\" \"+_vm._s(_vm.selectedSearchEntity ? _vm.selectedSearchEntity.length || 1 : 0)+\" Filters \")],1)]}}],null,false,2605135672)},[_c('v-card',{staticClass:\"pa-4\"},[_c('entity-search-autocomplete',{staticClass:\"mr-2\",attrs:{\"solo-inverted\":\"\",\"hide-details\":\"\",\"flat\":\"\",\"dense\":\"\",\"multiple\":true,\"prepend-icon\":null,\"label\":_vm.$t('spendUsageOptionsToolbar.label'),\"types\":_vm.searchSupportedTypes,\"disabled\":_vm.loading},on:{\"input\":_vm.handleUpdateFilterEntity},model:{value:(_vm.selectedSearchEntity),callback:function ($$v) {_vm.selectedSearchEntity=$$v},expression:\"selectedSearchEntity\"}})],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('ViewAmortisedSpend'))?_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[(_vm.value.costView === 'Actual')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"attach_money\")]):_vm._e(),(_vm.value.costView === 'Utilized')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"dns\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.value.costView || 'Actual'))],1)]}}],null,false,1565107442)},[_c('v-list',[_c('v-subheader',[_vm._v(\"Cost View\")]),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdatedCostView('Actual')}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"attach_money\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Actual\")]),_c('v-list-item-subtitle',[_vm._v(\"The actual spend as you might expect it in an invoice.\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdatedCostView('Utilized')}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"dns\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Utilization\")]),_c('v-list-item-subtitle',[_vm._v(\"Pre-commitments allocated out to utilizing resources.\")])],1)],1)],1)],1):_vm._e(),_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"calendar_month\")]),_vm._v(\" \"+_vm._s(_vm.dateRangeDescription))],1)]}}]),model:{value:(_vm.isPickingDateRange),callback:function ($$v) {_vm.isPickingDateRange=$$v},expression:\"isPickingDateRange\"}},[_c('v-list',[_c('v-subheader',[_vm._v(\"Date Ranges\")]),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '30d', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === '30d'}})],1),_c('v-list-item-title',[_vm._v(\"30 days\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '60d', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === '60d'}})],1),_c('v-list-item-title',[_vm._v(\"60 days\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '3m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === '3m'}})],1),_c('v-list-item-title',[_vm._v(\"3 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '6m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === '6m'}})],1),_c('v-list-item-title',[_vm._v(\"6 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleUpdateDateRange({ dateRangeKey: '13m', toDate: null, fromDate: null })}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === '13m'}})],1),_c('v-list-item-title',[_vm._v(\"All data\")])],1),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.dateRangeKey === 'custom'}})],1),_c('v-list-item-title',[_vm._v(\"Custom\")])],1)]}}])},[_c('v-date-picker',{attrs:{\"range\":\"\"},on:{\"input\":function($event){$event.length === 2\n ? _vm.handleUpdateDateRange({\n dateRangeKey: 'custom',\n toDate: new Date($event[1]),\n fromDate: new Date($event[0]),\n })\n : true}},model:{value:(_vm.dates),callback:function ($$v) {_vm.dates=$$v},expression:\"dates\"}})],1)],1)],1),(_vm.value.dateRangeKey !== 'custom')?_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[_vm._v(\" forecast \"+_vm._s(_vm.value.forecastRangeKey || '7d'))])]}}],null,false,412715033),model:{value:(_vm.isPickingForecastRange),callback:function ($$v) {_vm.isPickingForecastRange=$$v},expression:\"isPickingForecastRange\"}},[_c('v-list',[_c('v-subheader',[_vm._v(\"Forecast Forward\")]),(_vm.value.granularity === 'Daily')?[_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('3d')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '3d'}})],1),_c('v-list-item-title',[_vm._v(\"3 days\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('7d')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '7d'}})],1),_c('v-list-item-title',[_vm._v(\"7 days\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('30d')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '30d'}})],1),_c('v-list-item-title',[_vm._v(\"30 days\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('60d')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '60d'}})],1),_c('v-list-item-title',[_vm._v(\"60 days\")])],1)]:_vm._e(),(_vm.value.granularity === 'Monthly')?[_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('1m')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '1m'}})],1),_c('v-list-item-title',[_vm._v(\"1 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('3m')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '3m'}})],1),_c('v-list-item-title',[_vm._v(\"3 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('6m')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '6m'}})],1),_c('v-list-item-title',[_vm._v(\"6 months\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.handleForecastDateRange('12m')}}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"readonly\":\"\",\"value\":_vm.value.forecastRangeKey === '12m'}})],1),_c('v-list-item-title',[_vm._v(\"12 months\")])],1)]:_vm._e()],2)],1):_vm._e(),(!_vm.hideSegregation)?_c('v-menu',{attrs:{\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"outlined\":\"\"}},on),[(_vm.value.segregateBy === 'productcategories')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"category\")]):_vm._e(),(_vm.value.segregateBy === 'products')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"shopping_cart\")]):_vm._e(),(_vm.value.segregateBy === 'services')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"memory\")]):_vm._e(),(_vm.value.segregateBy === 'subscriptions')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_queue\")]):_vm._e(),(_vm.value.segregateBy === 'cloudaccounts')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_download\")]):_vm._e(),(_vm.value.segregateBy === 'cloudproviders')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"apartment\")]):_vm._e(),(_vm.value.segregateBy === 'meters')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"payments\")]):_vm._e(),(_vm.value.segregateBy === 'productCategories')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"shopping_cart\")]):_vm._e(),(_vm.value.segregateBy === 'regions')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"location_on\")]):_vm._e(),_vm._v(\" by \"+_vm._s(_vm.$t(`segregationButtonToggle.${_vm.value.segregateBy}.title`)))],1)]}}],null,false,825042931)},[_c('v-list',_vm._l((_vm.segregationSupportedKeys),function(key){return _c('v-list-item',{key:key,on:{\"click\":function($event){return _vm.$emit('input', { ..._vm.value, segregateBy: key })}}},[_c('v-list-item-icon',[(key === 'productcategories')?_c('v-icon',[_vm._v(\"category\")]):_vm._e(),(key === 'products')?_c('v-icon',[_vm._v(\"shopping_cart\")]):_vm._e(),(key === 'services')?_c('v-icon',[_vm._v(\"memory\")]):_vm._e(),(key === 'subscriptions')?_c('v-icon',[_vm._v(\"cloud_queue\")]):_vm._e(),(key === 'cloudaccounts')?_c('v-icon',[_vm._v(\"cloud_download\")]):_vm._e(),(key === 'cloudproviders')?_c('v-icon',[_vm._v(\"apartment\")]):_vm._e(),(key === 'meters')?_c('v-icon',[_vm._v(\"payments\")]):_vm._e(),(key === 'productCategories')?_c('v-icon',[_vm._v(\"shopping_cart\")]):_vm._e(),(key === 'regions')?_c('v-icon',[_vm._v(\"location_on\")]):_vm._e()],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t(`segregationButtonToggle.${key}.title`)))]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.$t(`segregationButtonToggle.${key}.description`)))])],1)],1)}),1)],1):_vm._e(),(_vm.loading)?_c('v-progress-circular',{staticClass:\"ml-3\",attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn-toggle',{staticClass:\"ml-2\",attrs:{\"value\":_vm.value.dateRangeKey,\"mandatory\":\"\",\"rounded\":\"\",\"depressed\":\"\"},on:{\"change\":_vm.handleUpdateDateType}},_vm._l((_vm.items),function(key,i){return _c('fragment',{key:i},[(key !== 'custom')?_c('v-btn',{attrs:{\"small\":\"\",\"depressed\":\"\",\"outlined\":\"\",\"value\":key,\"disabled\":_vm.disabled}},[_vm._v(_vm._s(key === \"13m\" ? _vm.$t(\"dateRangeButtonToggle.allButtonText\") : key))]):_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"small\":\"\",\"depressed\":\"\",\"outlined\":\"\",\"value\":\"custom\",\"disabled\":_vm.disabled}},on),[_vm._v(\" \"+_vm._s(_vm.$t(\"dateRangeButtonToggle.customButtonText\"))+\" \")])]}}],null,true),model:{value:(_vm.isCustomDateMenuOpen),callback:function ($$v) {_vm.isCustomDateMenuOpen=$$v},expression:\"isCustomDateMenuOpen\"}},[_c('v-date-picker',{attrs:{\"range\":\"\"},model:{value:(_vm.dates),callback:function ($$v) {_vm.dates=$$v},expression:\"dates\"}}),_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"secondary\",\"tile\":\"\"},on:{\"click\":function($event){return _vm.handleUpdateDateRange(_vm.dates)}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"dateRangeButtonToggle.updateButtonText\"))+\" \")])],1)],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport moment from \"@/lib/moment\";\r\nimport DateKey from \"@/lib/DateKey\";\r\nexport const DEFAULT_RANGE_TYPES = [\"30d\", \"60d\", \"6m\", \"custom\"];\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\n\r\nexport interface IDateRangeViewModel {\r\n dateRangeKey: string;\r\n fromDate: Date | undefined | null;\r\n toDate: Date | undefined | null;\r\n}\r\n\r\nexport default {\r\n props: {\r\n value: Object,\r\n items: {\r\n type: Array,\r\n default: () => DEFAULT_RANGE_TYPES,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data() {\r\n return {\r\n dates: [],\r\n isCustomDateMenuOpen: false,\r\n };\r\n },\r\n methods: {\r\n handleUpdateDateType(dateRangeKey: string) {\r\n const key = new DateKey(dateRangeKey);\r\n if (!key.isValid || key.isCustom) return;\r\n const viewModel: IDateRangeViewModel = {\r\n dateRangeKey,\r\n fromDate: null,\r\n toDate: null,\r\n };\r\n this.$emit(\"input\", viewModel);\r\n },\r\n handleUpdateDateRange(range) {\r\n if (!range || range.length !== 2) {\r\n toastError(this.$t(\"dateRangeButtonToggle.formInvalidText\"));\r\n return;\r\n }\r\n const viewModel: IDateRangeViewModel = {\r\n dateRangeKey: \"custom\",\r\n fromDate: moment.utc(range[0]).toDate(),\r\n toDate: range[1] ? moment.utc(range[1]).toDate() : undefined,\r\n };\r\n this.$emit(\"input\", viewModel);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeButtonToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeButtonToggle.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DateRangeButtonToggle.vue?vue&type=template&id=34dcc2c4&\"\nimport script from \"./DateRangeButtonToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateRangeButtonToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DateRangeButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn-toggle',{staticClass:\"ml-2\",attrs:{\"value\":_vm.value,\"mandatory\":\"\",\"rounded\":\"\",\"depressed\":\"\",\"multiple\":_vm.multiple},on:{\"change\":_vm.handleSegregationChange}},[_vm._l((_vm.showTypes),function(key,i){return _c('v-btn',{key:i,attrs:{\"small\":\"\",\"depressed\":\"\",\"outlined\":\"\",\"value\":key,\"disabled\":_vm.disabled}},[_vm._v(\" \"+_vm._s(_vm.$t(`segregationButtonToggle.${key}.title`))+\" \")])}),(!_vm.hideOthers)?_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"small\":\"\",\"depressed\":\"\",\"outlined\":\"\",\"value\":\"other\",\"disabled\":_vm.disabled}},on),[_vm._v(\" Other \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"expand_more\")])],1)]}}],null,false,527047154),model:{value:(_vm.isOtherMenuOpen),callback:function ($$v) {_vm.isOtherMenuOpen=$$v},expression:\"isOtherMenuOpen\"}},[_c('v-list',_vm._l((_vm.otherTypes),function(type,i){return _c('v-list-item',{key:`1_${i}`,on:{\"click\":function($event){return _vm.handleSegregationChange(type)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t(`segregationButtonToggle.${type}.title`))+\" \")])],1)],1)}),1)],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { PluralEntityType } from '@/models';\r\nexport const DEFAULT_SEGREGATION_TYPES = [\r\n PluralEntityType.products,\r\n PluralEntityType.services,\r\n PluralEntityType.subscriptions,\r\n PluralEntityType.meters,\r\n PluralEntityType.cloudAccounts,\r\n PluralEntityType.regions,\r\n];\r\nexport default {\r\n props: {\r\n value: String,\r\n items: {\r\n type: Array,\r\n default: () => DEFAULT_SEGREGATION_TYPES,\r\n },\r\n hideOthers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n multiple: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n isOtherMenuOpen: false,\r\n };\r\n },\r\n computed: {\r\n showTypes() {\r\n if (this.$vuetify.breakpoint.smAndDown) {\r\n return [this.value || this.items[0]];\r\n }\r\n\r\n let items = this.items;\r\n if (!this.items.includes(this.value)) {\r\n items = items.concat(this.value);\r\n }\r\n return items;\r\n },\r\n otherTypes() {\r\n return DEFAULT_SEGREGATION_TYPES.filter((t) => !this.items.includes(t) && t !== this.value);\r\n },\r\n },\r\n methods: {\r\n handleSegregationChange(segregation: PluralEntityType | 'other' | (PluralEntityType | 'other')[]) {\r\n if (segregation === 'other') return;\r\n this.$emit('input', segregation);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SegregationButtonToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SegregationButtonToggle.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SegregationButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SegregationButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SegregationButtonToggle.vue?vue&type=template&id=4b3c2f47&\"\nimport script from \"./SegregationButtonToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./SegregationButtonToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SegregationButtonToggle.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport moment from '@/lib/moment';\r\nimport DateKey, { granularityForDateRange } from '@/lib/DateKey';\r\nimport { ISpendParameters, Granularity, CloudProviderType, EntityType, PluralEntityType } from '@/models';\r\nimport { DEFAULT_RANGE_TYPES, IDateRangeViewModel } from '@/components/Domain.Usage/DateRangeButtonToggle.vue';\r\nimport { DEFAULT_SEGREGATION_TYPES } from '@/components/Domain.Usage/SegregationButtonToggle.vue';\r\nimport { defineComponent } from 'vue';\r\nimport { ISearchEntityViewModel } from '@/components/Common/EntitySearchAutocomplete.vue';\r\nimport { useFilterStore, useTenantStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport dayjs from 'dayjs';\r\n\r\nexport enum CostView {\r\n Actual = 'Actual',\r\n Utilized = 'Utilized',\r\n Amortized = 'Amortized',\r\n}\r\n\r\nexport class SpendUsageOptions {\r\n public segregateBy?: PluralEntityType | PluralEntityType[];\r\n public dateRangeKey: string;\r\n public fromDate?: Date;\r\n public toDate?: Date;\r\n public granularity?: string;\r\n public topXResults?: number;\r\n public cloudAccountId?: string;\r\n public subscriptionIds?: string[];\r\n public serviceId?: string;\r\n public productId?: string;\r\n public productName?: string;\r\n public providerType?: string;\r\n public regionName?: string;\r\n public geographyName?: string;\r\n public tagKeyValue?: string;\r\n public tagKeyValues?: string[];\r\n public productCategory?: string;\r\n public costView?: string;\r\n public reservationId?: string;\r\n public savedViewId?: string;\r\n public entities?: ISearchEntityViewModel[];\r\n public forecastRangeKey?: string;\r\n}\r\n\r\nexport function dateRangeForKey(options: SpendUsageOptions): [] | [Date] | [Date, Date] {\r\n const dateRangeKey = new DateKey(options.dateRangeKey);\r\n if (!dateRangeKey.isValid) return [];\r\n return dateRangeKey.getEffectiveDateRange(options.fromDate, options.toDate);\r\n}\r\n\r\nexport function convertSpendOptionsToQuery(options: SpendUsageOptions): ISpendParameters {\r\n const range = dateRangeForKey(options);\r\n if (range.length !== 2) return null;\r\n const granularity = (options.granularity || granularityForDateRange(range)) as\r\n | Granularity.daily\r\n | Granularity.monthly;\r\n const params: Partial = {\r\n fromDate: range[0].toISOString(),\r\n toDate: range[1].toISOString(),\r\n topXResults: options.topXResults || 10,\r\n granularity,\r\n };\r\n if (options.subscriptionIds && options.subscriptionIds.length > 0)\r\n params.subscriptionIds = options.subscriptionIds.join();\r\n if (options.cloudAccountId) params.cloudAccountIds = options.cloudAccountId;\r\n if (options.serviceId) params.serviceIds = options.serviceId;\r\n if (options.productId) params.productIds = options.productId;\r\n if (options.providerType) params.providerType = options.providerType as CloudProviderType;\r\n if (options.regionName) params.regionNames = options.regionName;\r\n if (options.geographyName) params.geographyNames = options.geographyName;\r\n if (options.tagKeyValue) params.tagKeyValue = options.tagKeyValue;\r\n if (options.tagKeyValues && options.tagKeyValues.length > 0) params.tagKeyValues = options.tagKeyValues.join(';');\r\n if (options.productCategory) params.productCategories = options.productCategory;\r\n if (options.costView) params.costView = options.costView;\r\n if (options.reservationId) params.reservationId = options.reservationId;\r\n if (options.savedViewId) params.savedViewId = options.savedViewId;\r\n return params as ISpendParameters;\r\n}\r\n\r\nexport function calculateOptionsDescription(value: SpendUsageOptions, $t: (key: string, config?: any) => string) {\r\n if (!value?.segregateBy) return 'Usage Chart';\r\n const key = new DateKey(value.dateRangeKey);\r\n const segregateByTitle = Array.isArray(value.segregateBy)\r\n ? 'Multiple'\r\n : value.segregateBy.startsWith('tags/')\r\n ? value.segregateBy.split('/')[1]\r\n : $t(`spendUsageChartCard.${value.segregateBy.toLowerCase()}.title`);\r\n if (key.isCustom) {\r\n return $t('spendUsageChartCard.customDateTextFormat', {\r\n segregateBy: segregateByTitle,\r\n fromDate: moment.utc(value.fromDate).format(\"DD MMM 'YY\"),\r\n toDate: moment.utc(value.toDate || new Date()).format(\"DD MMM 'YY\"),\r\n });\r\n } else if (key.granularity === Granularity.daily) {\r\n return $t('spendUsageChartCard.fixedDateTextFormat', {\r\n granularity: key.granularity,\r\n segregateBy: segregateByTitle,\r\n total: key.total,\r\n granularityName: 'days',\r\n });\r\n } else if (key.granularity === Granularity.monthly) {\r\n return $t('spendUsageChartCard.fixedDateTextFormat', {\r\n granularity: key.granularity,\r\n segregateBy: segregateByTitle,\r\n total: key.total,\r\n granularityName: 'months',\r\n });\r\n } else {\r\n throw new Error('Unsupported date range key');\r\n }\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n value: Object,\r\n hideSearch: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n searchSupportedTypes: {\r\n type: Array,\r\n default: () => [\r\n EntityType.subscription,\r\n EntityType.cloudAccount,\r\n EntityType.service,\r\n EntityType.tag,\r\n EntityType.region,\r\n EntityType.geography,\r\n EntityType.cloudProvider,\r\n EntityType.customView,\r\n ],\r\n },\r\n dateSupportedKeys: {\r\n type: Array,\r\n default: () => DEFAULT_RANGE_TYPES,\r\n },\r\n segregationSupportedKeys: {\r\n type: Array,\r\n default: () => DEFAULT_SEGREGATION_TYPES,\r\n },\r\n hideSegregation: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n hideSegregationOthers: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n dateRangeDescription() {\r\n if (this.value.dateRangeKey === '13m') return 'All data';\r\n if (this.value.dateRangeKey === 'custom') {\r\n const fromDate = dayjs(this.value.fromDate);\r\n const toDate = dayjs(this.value.toDate);\r\n\r\n if (fromDate.year() === toDate.year() && fromDate.month() === toDate.month()) {\r\n // Same month & year: \"Feb 5-10, 2025\"\r\n return `${fromDate.format('MMM')} ${fromDate.date()}-${toDate.date()}, ${fromDate.year()}`;\r\n } else if (fromDate.year() === toDate.year()) {\r\n // Same year but different month: \"Feb 5 - Mar 10, 2025\"\r\n return `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}`;\r\n }\r\n\r\n // Different years: \"Dec 30, 2024 - Jan 5, 2025\"\r\n return `${fromDate.format('MMM D, YYYY')} - ${toDate.format('MMM D, YYYY')}`;\r\n }\r\n return this.value.dateRangeKey;\r\n },\r\n },\r\n data() {\r\n return {\r\n isCustomDateMenuOpen: false,\r\n isGeneralOptionsMenuOpen: false,\r\n isPickingDateRange: false,\r\n isPickingForecastRange: false,\r\n selectedSearchEntity: null,\r\n dates: [],\r\n };\r\n },\r\n async mounted() {\r\n const filterStore = useFilterStore();\r\n this.selectedSearchEntity = await filterStore.fetchSelectedSearchEntity();\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n const store = useFilterStore();\r\n store.fetchSelectedSearchEntity().then((r) => (this.selectedSearchEntity = r));\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n methods: {\r\n handleUpdatedCostView($event: 'Utilized' | 'Actual' | undefined) {\r\n this.$emit('input', { ...this.value, costView: $event });\r\n },\r\n handleUpdateDateRange($event: IDateRangeViewModel) {\r\n const key = new DateKey($event.dateRangeKey);\r\n const dateRange = key.getEffectiveDateRange($event.fromDate, $event.toDate);\r\n const granularity = granularityForDateRange(dateRange);\r\n let forecastRangeKey = $event.dateRangeKey === 'custom' ? undefined : this.value.forecastRangeKey || '7d';\r\n if (granularity === 'Daily' && !this.value.forecastRangeKey?.endsWith('d')) {\r\n forecastRangeKey = '7d';\r\n } else if (granularity === 'Monthly' && !this.value.forecastRangeKey?.endsWith('m')) {\r\n forecastRangeKey = '3m';\r\n }\r\n this.$emit('input', { ...this.value, ...$event, granularity, forecastRangeKey });\r\n this.isPickingDateRange = false;\r\n },\r\n handleForecastDateRange($event: string) {\r\n this.$emit('input', { ...this.value, forecastRangeKey: $event });\r\n },\r\n handleUpdateFilterEntity(entities: ISearchEntityViewModel[]) {\r\n const newValue: SpendUsageOptions = {\r\n ...this.value,\r\n subscriptionIds: [],\r\n cloudAccountId: null,\r\n serviceId: null,\r\n tagKeyValue: null,\r\n tagKeyValues: [],\r\n regionName: null,\r\n providerType: null,\r\n geographyName: null,\r\n savedViewId: null,\r\n };\r\n\r\n const entityLength = entities.length;\r\n const subscriptionIdEntities = [];\r\n\r\n for (let i = 0; i < entityLength; i++) {\r\n const entity = entities[i];\r\n const latestEntity = entities[entityLength - 1];\r\n\r\n if (entity.Type === EntityType.tag) {\r\n newValue.tagKeyValues.push(entity.Id);\r\n continue;\r\n }\r\n\r\n if (latestEntity.Type !== EntityType.subscription) {\r\n if (latestEntity.Type === EntityType.cloudAccount) {\r\n newValue.cloudAccountId = latestEntity.Id;\r\n } else if (latestEntity.Type === EntityType.service) {\r\n newValue.serviceId = latestEntity.Id;\r\n } else if (latestEntity.Type === EntityType.region) {\r\n newValue.regionName = latestEntity.Name;\r\n newValue.providerType = latestEntity.Provider;\r\n } else if (latestEntity.Type === EntityType.geography) {\r\n newValue.geographyName = latestEntity.Name;\r\n } else if (latestEntity.Type === EntityType.cloudProvider) {\r\n newValue.providerType = latestEntity.Name;\r\n } else if (latestEntity.Type === EntityType.product) {\r\n newValue.productId = latestEntity.Id;\r\n newValue.productName = latestEntity.Name;\r\n } else if (latestEntity.Type === EntityType.productCategory) {\r\n newValue.productCategory = latestEntity.Id;\r\n } else if (latestEntity.Type === EntityType.customView) {\r\n newValue.savedViewId = latestEntity.Id;\r\n }\r\n this.selectedSearchEntity = [latestEntity];\r\n break;\r\n } else {\r\n newValue.subscriptionIds.push(entity.Id);\r\n subscriptionIdEntities.push(entity);\r\n continue;\r\n }\r\n }\r\n if (subscriptionIdEntities.length > 0) {\r\n this.selectedSearchEntity = subscriptionIdEntities;\r\n }\r\n newValue.entities = this.selectedSearchEntity;\r\n this.$emit('input', newValue);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageOptionsToolbarForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageOptionsToolbarForm.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageOptionsToolbarForm.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageOptionsToolbarForm.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SpendUsageOptionsToolbarForm.vue?vue&type=template&id=711194a2&\"\nimport script from \"./SpendUsageOptionsToolbarForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsageOptionsToolbarForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SpendUsageOptionsToolbarForm.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","export enum UnitOfDisplay {\r\n consumption = 'Consumption',\r\n cost = 'Cost'\r\n}","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('AgGridVue',{ref:\"agGrid\",class:`ag-theme-alpine${_vm.$vuetify.theme.dark ? '-dark' : ''} mt-2 ${!_vm.domLayout ? 'fill-height' : ''}`,attrs:{\"columnDefs\":_vm.headers,\"rowData\":_vm.records,\"modules\":_vm.modules,\"rowGroupPanelShow\":\"always\",\"pinnedTopRowData\":_vm.pinnedTopRowData,\"pinnedBottomRowData\":_vm.pinnedBottomRowData,\"domLayout\":_vm.domLayout},on:{\"grid-ready\":_vm.onGridReady}}),_c('v-dialog',{attrs:{\"max-width\":\"400\",\"scrollable\":\"\",\"persistent\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},model:{value:(_vm.showGptCreate),callback:function ($$v) {_vm.showGptCreate=$$v},expression:\"showGptCreate\"}},[_c('v-card',[_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.loadingGptCreate,\"indeterminate\":\"\"}}),_c('v-card-text',{staticClass:\"px-5 pt-3 pb-0\"},[(!_vm.loadingGptCreate)?_c('p',[_vm._v(\" If you choose to proceed, you will commence a Cloud Intelligence chat about this resource, powered by GPT. \")]):_c('p',[_vm._v(\"Starting chat...\")])]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"ma-5\",on:{\"click\":function($event){return _vm.close()}}},[_vm._v(_vm._s(_vm.loadingGptCreate ? 'Close' : 'Cancel'))]),(!_vm.loadingGptCreate)?_c('v-btn',{attrs:{\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.go()}}},[_vm._v(\"Start Chat\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport \"ag-grid-enterprise\";\r\nimport { LicenseManager } from '@ag-grid-enterprise/core'\r\nimport Config from '@/lib/Config';\r\n\r\ntry {\r\n const cfg = Config.get();\r\n LicenseManager.setLicenseKey(cfg.AG_GRID_KEY);\r\n} catch (err) {\r\n console.error(err);\r\n}\r\n\r\nimport \"ag-grid-community/styles/ag-grid.css\";\r\nimport \"@/scss/ag-grid.scss\";\r\nexport { AgGridVue } from \"ag-grid-vue\";\r\nexport { RowGroupingModule } from \"@ag-grid-enterprise/row-grouping\";\r\nexport { ColDef } from \"@ag-grid-community/core\";","\r\nimport { IGptChatOverviewResult, ISpendUsageTableEntityViewModel, ISpendUsageTableItemViewModel } from '@/models';\r\nimport { PluralEntityType, fromPlural } from '@/models/EntityType';\r\nimport { AgGridVue, RowGroupingModule, ColDef } from '@/plugins/agGrid';\r\nimport { defineComponent } from 'vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport FeatureNames from '@/lib/FeatureNames';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\nimport { ISpendUsageTableSlotViewModel, SpendUsageTableConstants } from '@/models/ISpendUsageTable';\r\n\r\nconst SPAN_WITH_NO_VALUE = '-';\r\n\r\nconst capitalizeFirstLetter = (string) => {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\r\n};\r\nconst slotHeader = (header: string, fieldName: string) => {\r\n return {\r\n headerName: header,\r\n field: fieldName,\r\n sortable: true,\r\n filter: true,\r\n editable: true,\r\n rowGroup: false,\r\n resizable: true,\r\n enableRowGroup: false,\r\n type: 'rightAligned',\r\n cellRenderer: (params) => {\r\n return `${params.value?.toFixed(3) ?? '-'}`;\r\n },\r\n };\r\n};\r\nexport default defineComponent({\r\n components: { AgGridVue },\r\n props: {\r\n items: Object,\r\n loading: Boolean,\r\n currencyCode: String,\r\n segregateBy: String,\r\n granularity: String,\r\n nameHeaderTitle: String,\r\n tagKey: String,\r\n cardTitleText: String,\r\n itemsPerPage: {\r\n type: Number,\r\n default: 10,\r\n },\r\n disableLinks: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n hideDefaultFooter: Boolean,\r\n hideExport: Boolean,\r\n hideIntelligence: Boolean,\r\n prefix: {\r\n type: String,\r\n default: '/explore',\r\n },\r\n unitOfDisplay: String,\r\n domLayout: {\r\n type: String,\r\n default: 'autoHeight',\r\n },\r\n },\r\n data() {\r\n return {\r\n sortBy: 'total',\r\n sortDesc: true,\r\n modules: [RowGroupingModule],\r\n showGptCreate: false,\r\n loadingGptCreate: false,\r\n entityId: '',\r\n entityType: '',\r\n gridApi: null,\r\n gridColumnApi: null,\r\n displayOptions: UnitOfDisplay,\r\n };\r\n },\r\n methods: {\r\n exportCsv() {\r\n if (this.gridApi) {\r\n this.gridApi.exportDataAsCsv();\r\n }\r\n },\r\n async go() {\r\n this.loadingGptCreate = true;\r\n const response = await ApiV2.http\r\n .post(`/api/gpt`, {\r\n entityId: this.entityId,\r\n entityType: this.entityType,\r\n } as IGptChatOverviewResult)\r\n .then((r) => r.data);\r\n\r\n if (this.showGptCreate) {\r\n if (!this.noNav) this.$router.push(`/cloud-intelligence/?chatId=${response.chatId}`);\r\n this.$emit('created', response);\r\n }\r\n },\r\n close() {\r\n this.loadingGptCreate = false;\r\n this.showGptCreate = false;\r\n },\r\n sizeToFit() {\r\n this.gridApi.sizeColumnsToFit();\r\n },\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.$nextTick(() => {\r\n if (this.gridColumnApi) {\r\n const allColumnIds = [];\r\n this.gridColumnApi.getAllColumns().forEach((column) => {\r\n allColumnIds.push(column.getColId());\r\n });\r\n this.gridColumnApi.autoSizeColumns(allColumnIds, false);\r\n }\r\n });\r\n this.sizeToFit();\r\n },\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n headers() {\r\n const currencyCode = this.currencyCode;\r\n const segregateByList = this.segregateBy.split(',');\r\n const showDataAsMonetaryCost = this.unitOfDisplay != UnitOfDisplay.consumption;\r\n\r\n const headers: ColDef[] = segregateByList.map((segregateBy: string) => ({\r\n headerName: capitalizeFirstLetter(segregateBy),\r\n field: `e_${segregateBy}`,\r\n sortable: true,\r\n filter: true,\r\n editable: true,\r\n rowGroup: false,\r\n enableRowGroup: true,\r\n pinned: 'left',\r\n resizable: true,\r\n valueFormatter: (val: any): any => val.value,\r\n cellRenderer: (params: any) => {\r\n if (!params.data) {\r\n return params.value;\r\n }\r\n const record: ISpendUsageTableItemViewModel = params.data;\r\n const entity: ISpendUsageTableEntityViewModel = record.entities.find((e) => e.type === segregateBy);\r\n if (!entity) return SPAN_WITH_NO_VALUE;\r\n if (record.isTotal) {\r\n return `Total`;\r\n }\r\n if (\r\n record.isOther ||\r\n (this.items && this.items.noFollow) ||\r\n this.disableLinks ||\r\n segregateBy === PluralEntityType.meters\r\n ) {\r\n return `${entity.name}`;\r\n }\r\n let route: string;\r\n let name: string;\r\n if (segregateBy === PluralEntityType.tags) {\r\n const key = encodeURIComponent(this.tagKey);\r\n let id = encodeURIComponent(entity.id);\r\n if (entity.id == this.tagKey && entity.id) {\r\n id = encodeURIComponent(`${entity.id}:(Blanks)`);\r\n }\r\n route = `${this.prefix}/tagkeys/${key}/tag/${id && key != id ? id : '(Blanks)'}`;\r\n name = entity.id ? entity.id : '';\r\n } else if (segregateBy.startsWith('tags/')) {\r\n const [key, val] = entity.id.split(':');\r\n route = `${this.prefix}/tagkeys/${key}/tag/${val ? val : '(Blanks)'}`;\r\n name = val ? val : '';\r\n } else {\r\n route = `${this.prefix}/${entity.type}/${entity.id}`;\r\n name = entity.name;\r\n }\r\n const link = document.createElement('a');\r\n link.href = this.$router.resolve(route).href;\r\n link.innerText = name;\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.$router.push(route);\r\n });\r\n return link;\r\n },\r\n }));\r\n\r\n // If the user has toggled consumption, add units to the pinned columns\r\n if (this.segregateBy === PluralEntityType.meters && !showDataAsMonetaryCost) {\r\n headers.push({\r\n headerName: 'Units',\r\n field: 'unit',\r\n pinned: 'left',\r\n resizable: true,\r\n enableRowGroup: true,\r\n cellRenderer: (params) => {\r\n return `${params.value?.toFixed(3) ?? '-'}`;\r\n },\r\n });\r\n }\r\n\r\n if (this.canShowIntelligence) {\r\n headers.push({\r\n headerName: 'Intelligence',\r\n field: 'intelligence',\r\n pinned: 'left',\r\n cellRenderer: (params) => {\r\n const record: ISpendUsageTableItemViewModel | null = params.data;\r\n if (!record || record.isTotal || record.isOther) return SPAN_WITH_NO_VALUE;\r\n\r\n const entity = record.entities[0];\r\n const link = document.createElement('a');\r\n const icon = document.createElement('i');\r\n icon.classList.add(...'v-icon notranslate flip-x material-icons'.split(' '));\r\n icon.innerText = 'psychology';\r\n link.appendChild(icon);\r\n\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n this.entityId = entity.id;\r\n this.entityType = fromPlural(entity.type as PluralEntityType);\r\n this.showGptCreate = true;\r\n });\r\n return link;\r\n },\r\n });\r\n }\r\n\r\n headers.push({\r\n headerName: 'CostView',\r\n field: 'costView',\r\n sortable: true,\r\n sort: null,\r\n filter: true,\r\n editable: true,\r\n rowGroup: false,\r\n enableRowGroup: true,\r\n resizable: true,\r\n type: 'rightAligned',\r\n cellRenderer(params: any) {\r\n switch (params.value) {\r\n case 'Actual':\r\n return 'Actual';\r\n case 'Amortized':\r\n return 'Amortized';\r\n case 'Utilized':\r\n return 'Utilized';\r\n case null:\r\n return 'Usage';\r\n default:\r\n return params.value;\r\n }\r\n },\r\n });\r\n\r\n headers.push({\r\n headerName: `Total (${currencyCode})`,\r\n field: showDataAsMonetaryCost ? 'total' : 'totalConsumption',\r\n sortable: true,\r\n sort: 'desc',\r\n filter: true,\r\n editable: true,\r\n rowGroup: false,\r\n enableRowGroup: false,\r\n resizable: true,\r\n type: 'rightAligned',\r\n cellRenderer(params: any) {\r\n return `${params.value?.toFixed(3) ?? '-'}`;\r\n },\r\n });\r\n\r\n const monthSlots = this.items?.monthSlots || [];\r\n for (const slot of monthSlots) {\r\n const field = showDataAsMonetaryCost\r\n ? slot.itemValuePropName\r\n : `${slot.costValuePropName}${SpendUsageTableConstants.consumptionKeySuffix}`;\r\n headers.push(slotHeader(slot.header, field));\r\n }\r\n\r\n const dailySlots: ISpendUsageTableSlotViewModel[] = this.items?.dailySlots || [];\r\n for (const slot of dailySlots) {\r\n const field = showDataAsMonetaryCost ? slot.costValuePropName : slot.unitValuePropName;\r\n headers.push(slotHeader(slot.header, field));\r\n }\r\n return headers;\r\n },\r\n canShowIntelligence() {\r\n const segregateByList = this.segregateBy.split(',');\r\n return (\r\n segregateByList.length === 1 &&\r\n this.tenantStore.hasTenantFeature(FeatureNames.enableCloudIntelligence) &&\r\n (this.segregateBy === PluralEntityType.products || this.segregateBy === PluralEntityType.services) &&\r\n !this.hideIntelligence\r\n );\r\n },\r\n records(): ISpendUsageTableItemViewModel {\r\n return (this.items?.records || []).filter((r: ISpendUsageTableItemViewModel) => !r.isOther);\r\n },\r\n monthSlots() {\r\n return this.items?.monthSlots || [];\r\n },\r\n pinnedTopRowData() {\r\n return [];\r\n },\r\n pinnedBottomRowData() {\r\n const segregateByList = this.segregateBy?.split(',') || [];\r\n if (!segregateByList.length) return [];\r\n\r\n const spendUsageItems: ISpendUsageTableItemViewModel[] = this.items?.records || [];\r\n const summaryRow: ISpendUsageTableItemViewModel = {\r\n entities: [{ id: '', name: 'Total Spend', type: segregateByList[0] }],\r\n total: 0,\r\n isOther: false,\r\n isTotal: true,\r\n totalConsumption: 0,\r\n unit: '',\r\n timestamp: new Date().getTime(),\r\n };\r\n for (const usageItem of spendUsageItems) {\r\n summaryRow.total += usageItem.total;\r\n summaryRow.totalConsumption += usageItem.totalConsumption;\r\n for (const slot of this.monthSlots) {\r\n if (!summaryRow[slot.itemValuePropName]) {\r\n summaryRow[slot.itemValuePropName] = 0;\r\n }\r\n summaryRow[slot.itemValuePropName] += usageItem[slot.itemValuePropName] || 0;\r\n }\r\n }\r\n return [...spendUsageItems.filter((r) => r.isOther), summaryRow];\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SpendUsageTable.vue?vue&type=template&id=5dd612d0&\"\nimport script from \"./SpendUsageTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsageTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SpendUsageTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import moment from \"@/lib/moment\";\r\nimport {\r\n Granularity,\r\n ISpendAndConsumptionGroup,\r\n ISpendParameters,\r\n ISpendResult,\r\n ISpendUsageTableItemViewModel,\r\n ISpendUsageTableRecordsViewModel,\r\n ISpendUsageTableSlotViewModel,\r\n PluralEntityType,\r\n} from \"@/models\";\r\nimport { ISpendGroupEntityReference } from \"@/models/ISpendResult\";\r\nimport { SpendUsageTableConstants } from \"@/models/ISpendUsageTable\";\r\n\r\nexport class SpendUsageTableFunctions {\r\n static convertToItemRecords(\r\n params: ISpendParameters,\r\n segregateBy: PluralEntityType | PluralEntityType[],\r\n response: ISpendResult,\r\n costView = \"Actual\",\r\n ): ISpendUsageTableRecordsViewModel {\r\n const monthSlots = SpendUsageTableFunctions.slotsForMonthColumns(\r\n params,\r\n );\r\n const dailySlots = SpendUsageTableFunctions.slotsForDailyColumns(\r\n params,\r\n );\r\n const records = [];\r\n for (const spendResultGroup of response.groupings) {\r\n const entities: ISpendGroupEntityReference[] =\r\n spendResultGroup.entities && spendResultGroup.entities.length\r\n ? spendResultGroup.entities\r\n : [{\r\n name: spendResultGroup.name,\r\n id: spendResultGroup.id,\r\n type: Array.isArray(segregateBy) ? segregateBy.join(',') : segregateBy,\r\n }];\r\n const record: ISpendUsageTableItemViewModel | {\r\n [key: string]: number;\r\n } = {\r\n total: spendResultGroup.totalCharges || spendResultGroup.total,\r\n isOther: spendResultGroup.isOther,\r\n totalConsumption: spendResultGroup.totalConsumption || 0,\r\n unit: spendResultGroup.unit || \"\",\r\n entities,\r\n timestamp: moment.utc(spendResultGroup.minDate).toDate()\r\n .getTime(),\r\n costView,\r\n };\r\n for (const entity of entities) {\r\n record[`e_${entity.type}`] = entity.name;\r\n }\r\n for (const slot of monthSlots) {\r\n const monthlyTotalsForYear =\r\n spendResultGroup.monthlyCharges[slot.year];\r\n const monthlyConsumptionForYear =\r\n (spendResultGroup.monthlyConsumptionTotals || {})[\r\n slot.year\r\n ] || {};\r\n if (monthlyTotalsForYear) {\r\n record[slot.costValuePropName] =\r\n monthlyTotalsForYear[slot.month] || 0;\r\n record[\r\n slot.costValuePropName +\r\n SpendUsageTableConstants.consumptionKeySuffix\r\n ] = monthlyConsumptionForYear[slot.month] || null;\r\n } else {\r\n record[slot.costValuePropName] = 0;\r\n record[\r\n slot.costValuePropName +\r\n SpendUsageTableConstants.consumptionKeySuffix\r\n ] = null;\r\n }\r\n }\r\n if (dailySlots.length) {\r\n for (const usageRecord of spendResultGroup.usageRecords) {\r\n const urDate = moment.utc(usageRecord.usageDate).format(\r\n SpendUsageTableConstants.slotDateFormat,\r\n );\r\n record[`day${urDate}`] = usageRecord.charges;\r\n record[\r\n `day${urDate}${SpendUsageTableConstants.consumptionKeySuffix}`\r\n ] = usageRecord.unitsConsumed;\r\n }\r\n }\r\n records.push(record);\r\n }\r\n\r\n return { monthSlots, dailySlots, records };\r\n }\r\n\r\n static slotsForDailyColumns(\r\n params: ISpendParameters,\r\n ): ISpendUsageTableSlotViewModel[] {\r\n if (params.granularity !== Granularity.daily) return [];\r\n\r\n const fromDate = moment.utc(params.fromDate);\r\n const toDate = moment.utc(params.toDate);\r\n const dates = [];\r\n for (\r\n let tempDate = moment(fromDate);\r\n tempDate.isBefore(toDate);\r\n tempDate = tempDate.add(1, \"days\")\r\n ) {\r\n dates.push(tempDate);\r\n }\r\n dates.push(toDate);\r\n return dates.map((date) => {\r\n const slotKey = date.format(\r\n SpendUsageTableConstants.slotDateFormat,\r\n );\r\n const year = date.format(\"YYYY\");\r\n const month = date.format(\"MM\");\r\n const day = date.format(\"DD\");\r\n return {\r\n header: date.format(\"DD/MM/YYYY\"),\r\n // Keys for navigating the API response:\r\n year,\r\n month,\r\n day,\r\n // Vue data table slots:\r\n itemSlotName: `item.day${slotKey}`,\r\n costValuePropName: `day${slotKey}`,\r\n unitValuePropName:\r\n `day${slotKey}${SpendUsageTableConstants.consumptionKeySuffix}`,\r\n };\r\n });\r\n }\r\n\r\n static slotsForMonthColumns(\r\n params: ISpendParameters,\r\n ): ISpendUsageTableSlotViewModel[] {\r\n if (params.granularity !== Granularity.monthly) return [];\r\n const fromDate = moment.utc(params.fromDate);\r\n const toDate = moment.utc(params.toDate);\r\n const fromMonth = moment.utc(params.fromDate).startOf(\"month\");\r\n const toMonth = moment.utc(params.toDate).startOf(\"month\");\r\n\r\n const slots = [];\r\n let date = fromMonth;\r\n for (let i = 0; !date.isAfter(toMonth); ++i) {\r\n const monthYear = date.format(\"MMM YYYY\");\r\n const endOfMonth = date.endOf(\"month\");\r\n\r\n let partialFromDayOfMonth: string;\r\n if (fromDate.isAfter(date, \"day\")) {\r\n // The filter from date is after the start of this month.\r\n partialFromDayOfMonth = fromDate.format(\"D\");\r\n }\r\n\r\n let partialToDayOfMonth;\r\n if (toDate.isBefore(endOfMonth, \"day\")) {\r\n // The filter to date is before the end of this month.\r\n partialToDayOfMonth = toDate.format(\"D\");\r\n }\r\n\r\n let header: string;\r\n if (partialFromDayOfMonth && partialToDayOfMonth) {\r\n // This month is partial on both sides.\r\n header =\r\n `${partialFromDayOfMonth}-${partialToDayOfMonth} ${monthYear}`;\r\n } else if (partialFromDayOfMonth) {\r\n // This month is partial, starting somewhere in the middle.\r\n header = `${partialFromDayOfMonth}-${\r\n endOfMonth.format(\"D\")\r\n } ${monthYear}`;\r\n } else if (partialToDayOfMonth) {\r\n // This month is partial, ending somewhere in the middle.\r\n header = `${\r\n date.format(\"D\")\r\n }-${partialToDayOfMonth} ${monthYear}`;\r\n } else {\r\n // This is a full month's worth of charges.\r\n header = monthYear;\r\n }\r\n\r\n const slot = {\r\n header,\r\n // Keys for navigating the API response:\r\n year: date.format(\"YYYY\"),\r\n month: date.format(\"MM\"),\r\n // Vue data table slots:\r\n itemSlotName: `item.month${i}`,\r\n itemValuePropName: `month${i}`,\r\n costValuePropName: `month${i}`,\r\n };\r\n slots.push(slot);\r\n date = date.add(1, \"M\");\r\n }\r\n return slots;\r\n }\r\n}\r\n","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"dashboard.title\": \"Cost and Usage\",\r\n \"dashboard.accountOverview\": \"Account Overview\",\r\n \"dashboard.titles.projected\": \"Projected {thisMonthName}\",\r\n \"dashboard.titles.totalLastMonth\": \"Total {lastMonthName}\",\r\n \"dashboard.titles.potentialSavings\": \"Potential Monthly Savings\",\r\n \"dashboard.yearInReview\": \"Year in review\",\r\n \"dashboard.monthAverage\": \"{total} {currency} / Month Average\",\r\n \"dashboard.titles.creditsLastMonth\": \"Excludes {credits} of credits and discounts\",\r\n \"dashboard.usageByHeirarchy.title\": \"Usage by hierarchy\",\r\n \"dashboard.usageByHeirarchy.caption\": \"Aggregate spend across the tenant hierarchy over the last 3 months\",\r\n \"dashboard.lessThan\": \"{percentage}% less than {month}\",\r\n \"dashboard.moreThan\": \"{percentage}% more than {month}\",\r\n \"dashboard.recommendationStatus.loading\": \"Loading...\",\r\n \"dashboard.recommendationStatus.unknown\": \"Unknown status\",\r\n \"dashboard.recommendationStatus.unavailable\": \"Unavailable\",\r\n \"dashboard.recommendationStatus.allGood\": \"All good\",\r\n \"dashboard.recommendationStatus.partiallyGood\": \"New credentials required\",\r\n \"dashboard.recommendationStatus.actionRequired\": \"Connection broken\",\r\n \"dashboard.usageByHierarchy.manageHierarchy\": \"Manage hierarchy\",\r\n \"dialog.manageTenants.edit.title\": \"Update Tenant\",\r\n \"dialog.manageTenants.edit.subtitle\": \"Update the details of this tenant.\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FinanceDashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FinanceDashboard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FinanceDashboard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FinanceDashboard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./FinanceDashboard.vue?vue&type=template&id=31deee14&\"\nimport script from \"./FinanceDashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./FinanceDashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FinanceDashboard.vue?vue&type=style&index=0&id=31deee14&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./FinanceDashboard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('trendsDashboard.title'),\"icon\":\"analytics\",\"extended\":\"\",\"extension-height\":20}},[_c('div',{staticClass:\"ml-16 body-2\",attrs:{\"absolute\":\"\"}},[_vm._v(_vm._s(_vm.$t('trendsDashboard.title.asterix'))+\" \"+_vm._s(_vm.lastUsage))])]),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":_vm.$t('trendsDashboard.titles.sevenDayTrend'),\"subtitle\":_vm._f(\"currency\")(_vm.sevenDayTrend.deltaSpend,_vm.tenantStore.currencyCode)}},[(_vm.sevenDayTrend.activePeriodSpend)?_c('comparison-icon',{attrs:{\"value\":_vm.sevenDayTrend.activePeriodSpend,\"compare\":_vm.sevenDayTrend.priorPeriodSpend,\"right\":\"\"}}):_vm._e(),(_vm.sevenDayTrend.activePeriodSpend)?_c('span',[_vm._v(_vm._s((_vm.sevenDayTrend.deltaPercentage * 100).toFixed(1))+\"% *\")]):_c('span',[_vm._v(\" - \")]),_c('v-progress-linear',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"active\":_vm.$wait.is('refreshSummaries'),\"indeterminate\":\"\"}})],1),_c('title-sheet',{attrs:{\"title\":_vm.$t('trendsDashboard.titles.thirtyDayTrend'),\"subtitle\":_vm._f(\"currency\")(_vm.thirtyDayTrend.deltaSpend,_vm.tenantStore.currencyCode)}},[(_vm.thirtyDayTrend.activePeriodSpend)?_c('comparison-icon',{attrs:{\"value\":_vm.thirtyDayTrend.activePeriodSpend,\"compare\":_vm.thirtyDayTrend.priorPeriodSpend,\"right\":\"\"}}):_vm._e(),(_vm.sevenDayTrend.activePeriodSpend)?_c('span',[_vm._v(_vm._s((_vm.thirtyDayTrend.deltaPercentage * 100).toFixed(1))+\"% *\")]):_c('span',[_vm._v(\" - \")]),_c('v-progress-linear',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"active\":_vm.$wait.is('refreshSummaries'),\"indeterminate\":\"\"}})],1),_c('title-sheet',{attrs:{\"title\":_vm.$t('trendsDashboard.titles.sixtyDayTrend'),\"subtitle\":_vm._f(\"currency\")(_vm.sixtyDayTrend.deltaSpend,_vm.tenantStore.currencyCode)}},[(_vm.sixtyDayTrend.activePeriodSpend)?_c('comparison-icon',{attrs:{\"value\":_vm.sixtyDayTrend.activePeriodSpend,\"compare\":_vm.sixtyDayTrend.priorPeriodSpend,\"right\":\"\"}}):_vm._e(),(_vm.sevenDayTrend.activePeriodSpend)?_c('span',[_vm._v(_vm._s((_vm.sixtyDayTrend.deltaPercentage * 100).toFixed(1))+\"% *\")]):_c('span',[_vm._v(\" - \")]),_c('v-progress-linear',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"active\":_vm.$wait.is('refreshSummaries'),\"indeterminate\":\"\"}})],1)],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":_vm.$t('trendsDashboard.trends.title'),\"title-icon\":\"compare_arrows\",\"caption\":_vm.$t('trendsDashboard.trends.caption')}},[_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.$wait.is('loadProductComparisons'),\"indeterminate\":\"\"}}),_c('usage-comparison-options-toolbar',{staticClass:\"mt-3\",attrs:{\"loading\":_vm.$wait.is('loadProductComparisons'),\"currentPeriodMax\":_vm.currentPeriodMax},on:{\"input\":function($event){return _vm.loadProductComparisons()}},model:{value:(_vm.compareConfiguration),callback:function ($$v) {_vm.compareConfiguration=$$v},expression:\"compareConfiguration\"}}),_c('TrendBarChart',{attrs:{\"data\":_vm.trendDatasets},on:{\"click\":_vm.handleChartClick}}),(_vm.compareConfiguration.segregateBy === 'services')?_c('service-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.compareConfiguration.segregateBy === 'products')?_c('product-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.compareConfiguration.segregateBy === 'subscriptions')?_c('SubscriptionComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.compareConfiguration.segregateBy === 'cloudaccounts')?_c('CloudAccountComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):_vm._e()],1)],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('usage-comparisons-table',{attrs:{\"items\":_vm.items,\"loading\":_vm.loading,\"currency\":_vm.currency,\"type\":_vm.type},scopedSlots:_vm._u([{key:\"itemName\",fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/services/${item.serviceId}`}},[_vm._v(\" \"+_vm._s(item.serviceName)+\" \")])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{staticClass:\"my-2\"},[(!_vm.hideExport)?_c('template',{slot:\"title-actions\"},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.exportCsv()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_download\")]),_vm._v(\" \"+_vm._s(_vm.$t('usageComparisonsTable.exportBtnText'))+\" \")],1)],1):_vm._e(),_c('v-data-table',{attrs:{\"items\":_vm.items,\"headers\":_vm.headers,\"footer-props\":{\n itemsPerPageOptions: [10, 25, 50, -1],\n }},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(!_vm.items)?_c('div',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"query_builder\")]),_vm._v(\"Waiting for query\")],1):_c('div',[_c('v-icon',{attrs:{\"color\":\"warning\",\"left\":\"\"}},[_vm._v(\"warning\")]),_c('span',{staticClass:\"warning--text\"},[_vm._v(\"There is no data for this tag\")])],1)]},proxy:true},{key:`item.name`,fn:function({ item }){return [_vm._t(\"itemName\",null,{\"item\":item})]}},{key:`item.deltaSpend`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.deltaSpend,_vm.currency))+\" \"),_c('comparison-icon',{attrs:{\"value\":item.activePeriodSpend,\"compare\":item.priorPeriodSpend,\"right\":\"\"}}),_vm._v(\" \"+_vm._s((item.deltaPercentage * 100).toFixed(2))+\"%\")]}},{key:`item.priorPeriodSpend`,fn:function({ item }){return [_vm._v(_vm._s(_vm._f(\"currency\")(item.priorPeriodSpend,_vm.currency)))]}},{key:`item.activePeriodSpend`,fn:function({ item }){return [_vm._v(_vm._s(_vm._f(\"currency\")(item.activePeriodSpend,_vm.currency)))]}}],null,true)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export class Downloader {\r\n public exportCSV(rows: string[][], name: string) {\r\n let csvContent = 'data:text/csv;charset=utf-8,';\r\n\r\n rows.forEach((rowArray) => {\r\n const row = rowArray.join(',');\r\n csvContent += row + '\\r\\n';\r\n });\r\n\r\n const encodedUri = encodeURI(csvContent);\r\n const link = document.createElement('a');\r\n link.setAttribute('href', encodedUri);\r\n link.setAttribute('download', name);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n public exportJSON(object: any, name: string) {\r\n const json = JSON.stringify(object);\r\n const blob1 = new Blob([json], { type: \"text/plain;charset=utf-8\" });\r\n const url = URL.createObjectURL(blob1);\r\n const link = document.createElement('a');\r\n link.setAttribute('href', url);\r\n link.setAttribute('download', name);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\nexport default new Downloader();\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationHeaderCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationHeaderCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RecommendationHeaderCard.vue?vue&type=template&id=c1384294&\"\nimport script from \"./RecommendationHeaderCard.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendationHeaderCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"alert-info\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" Recommendations are currently available for some limited account types. \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":`${_vm.docsUrl}/Using/Tracking/#recommendations`}},[_vm._v(\"Learn more\")])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationCurrentlyAvailableCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationCurrentlyAvailableCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RecommendationCurrentlyAvailableCard.vue?vue&type=template&id=df11d05a&\"\nimport script from \"./RecommendationCurrentlyAvailableCard.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendationCurrentlyAvailableCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"alert-info\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_c('v-icon',{staticClass:\"orange--text text--lighten-2\"},[_vm._v(\"report_problem\")]),_vm._v(\"Some cloud connections require further action in order to optimise recommendations. \"),_c('router-link',{attrs:{\"to\":\"/settings/general\"}},[_vm._v(\" Review your connections \")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./RecommendationCredentialsRequiredCard.vue?vue&type=template&id=e5ccf5b0&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-recommendation-settings-card',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function(actionBindings){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_vm._t(\"default\",null,{\"close\":close},actionBindings)]}}],null,true)})]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title || _vm.$t('setRecommendationSettingsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"default\",null,{\"form\":{ recommendationEnabled: _vm.isEnabled, settings: [..._vm.definitions] },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('setRecommendationSettingsCard.enabled')},model:{value:(_vm.isEnabled),callback:function ($$v) {_vm.isEnabled=$$v},expression:\"isEnabled\"}}),_vm._l((_vm.definitions),function(definition,i){return _c('v-text-field',{key:i,attrs:{\"label\":definition.label,\"type\":definition.type === 'decimal' ? 'number' : 'text',\"required\":\"\"},model:{value:(definition.value),callback:function ($$v) {_vm.$set(definition, \"value\", $$v)},expression:\"definition.value\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setRecommendationSettingsCard.title\": \"Configure Recommendation Settings\",\r\n \"setRecommendationSettingsCard.enabled\": \"Enabled\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRecommendationSettingsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRecommendationSettingsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRecommendationSettingsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRecommendationSettingsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetRecommendationSettingsCard.vue?vue&type=template&id=633609f3&\"\nimport script from \"./SetRecommendationSettingsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetRecommendationSettingsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetRecommendationSettingsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditRecommendationSettingDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditRecommendationSettingDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditRecommendationSettingDialog.vue?vue&type=template&id=6ec0cda9&\"\nimport script from \"./EditRecommendationSettingDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditRecommendationSettingDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":`/api/recommendations/${_vm.recommendationId}/settings`,\"value\":(_vm.value || {}),\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putRecommendationSettingsButton.errorMessage\": \"There was an error encountered while updating this recommendation. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutRecommendationSettingsButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutRecommendationSettingsButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutRecommendationSettingsButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutRecommendationSettingsButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutRecommendationSettingsButton.vue?vue&type=template&id=5cdab175&\"\nimport script from \"./PutRecommendationSettingsButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PutRecommendationSettingsButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutRecommendationSettingsButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-alert',{attrs:{\"border\":\"top\",\"color\":\"primary\",\"colored-border\":\"\"}},[_c('div',{staticClass:\"text-h6\"},[_vm._v(\"* Additional Recommendations\")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('recommendationsnotavailable.higherplan'))+\" \"),(_vm.isWhiteLabelled === true)?_c('span',[_vm._v(_vm._s(_vm.$t('support')))]):_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"mailto:sales@cloudctrl.com.au\"}},[_vm._v(_vm._s(_vm.$t(_vm.recommendationsnotavailable.salesteam))+\"}}\")]),_vm._v(\" for more details. \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"recommendationsnotavailable.higherplan\": \"Some recommendations are not available on your current subscription, contact\",\r\n \"recommendationsnotavailable.salesteam\": \"sales team\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationNotAvailableCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationNotAvailableCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationNotAvailableCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationNotAvailableCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RecommendationNotAvailableCard.vue?vue&type=template&id=0ef384aa&\"\nimport script from \"./RecommendationNotAvailableCard.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendationNotAvailableCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RecommendationNotAvailableCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n r.isInFilter)\"\r\n :recommendation=\"recommendation\"\r\n :currencyCode=\"tenantStore.currencyCode\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n{\r\n \"en\": {\r\n \"recommendationStatus.higherplan\": \"Some recommendations are not available on your current subscription\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Recommendations.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Recommendations.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Recommendations.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Recommendations.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Recommendations.vue?vue&type=template&id=3d9a1d46&scoped=true&\"\nimport script from \"./Recommendations.vue?vue&type=script&lang=js&\"\nexport * from \"./Recommendations.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Recommendations.vue?vue&type=style&index=0&id=3d9a1d46&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d9a1d46\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Recommendations.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('dashboard.title'),\"icon\":\"cc-icon-kubernetes\"}}),_c('v-container',{staticClass:\"pt-0\"},[_c('content-card',{staticClass:\"mt-3 sticky-top\",attrs:{\"title\":_vm.$t('dashboard.filter.title'),\"title-icon\":\"date_range\",\"caption\":_vm.$t('dashboard.filter.caption', _vm.effectiveDates)},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('date-range-button-toggle',{attrs:{\"value\":_vm.dateRange},on:{\"input\":_vm.handleUpdateDateRange}})]},proxy:true}])}),(_vm.$wait.is('loadingClusterSpend'))?_c('v-skeleton-loader',{staticClass:\"mx-auto\",attrs:{\"type\":\"card-avatar, article, actions\"}}):_c('v-expansion-panels',{staticClass:\"mt-3\",attrs:{\"multiple\":\"\"},model:{value:(_vm.panelState),callback:function ($$v) {_vm.panelState=$$v},expression:\"panelState\"}},[(!_vm.clusters.length)?_c('empty-state',{attrs:{\"icon\":\"warning\",\"message\":_vm.$t('dashboard.clusters.nodata')}}):_vm._e(),_vm._l((_vm.clusters),function(cluster){return _c('v-expansion-panel',{key:cluster.cluster},[_c('v-expansion-panel-header',{attrs:{\"hide-actions\":\"\"}},[_c('v-flex',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_c('h3',{staticClass:\"title flex-grow-1\"},[_vm._v(_vm._s(cluster.cluster))]),_c('span',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(cluster.total,_vm.currencyCode)))]),_c('div',{staticClass:\"v-expansion-panel-header__icon\"},[_c('v-icon',{staticClass:\"cluster-panel-header-icon\"},[_vm._v(\" keyboard_arrow_down \")])],1)]),_c('v-card-text',{staticClass:\"pt-0\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"dashboard.clusters.caption\", { cluster: cluster.cluster }))+\" \")])],1)],1)],1),_c('v-expansion-panel-content',[_c('content-card',{attrs:{\"title\":_vm.$t('dashboard.clusterSpend.title'),\"title-icon\":\"stacked_bar_chart\",\"caption\":_vm.$t('dashboard.clusterSpend.caption', { cluster: cluster.cluster })}},[_c('ClusterSpendBarChart',{attrs:{\"cluster\":cluster.cluster,\"data\":cluster.clusterAllocationDatasets},on:{\"click\":_vm.handleClusterSpendChartClick}})],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":_vm.$t('dashboard.namespaces.title'),\"title-icon\":\"grain\",\"caption\":_vm.$t('dashboard.namespaces.caption', { cluster: cluster.cluster })}},[_c('namespace-spend-table',{attrs:{\"items\":cluster.namespaces,\"currency-code\":_vm.currencyCode,\"loading\":_vm.$wait.is('loadingClusterSpend')}})],1)],1)],1)})],2)],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.$wait.is('loadingClusterSpend'),\"headers\":_vm.headers,\"items\":_vm.items},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(_vm.loading)?_c('div',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"query_builder\")]),_vm._v(\"Waiting for query\")],1):_c('div',[_c('v-icon',{attrs:{\"color\":\"warning\",\"left\":\"\"}},[_vm._v(\"warning\")]),_c('span',{staticClass:\"warning--text\"},[_vm._v(_vm._s(_vm.$t(\"dashboard.namespaces.nodata\")))])],1)]},proxy:true},{key:`item.namespace`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/kubernetes/tagkeys/${encodeURIComponent(\n '$KubernetesNamespace'\n )}/tag/${encodeURIComponent(\n '$KubernetesNamespace'\n )}:${encodeURIComponent(\n item.namespace.toLowerCase()\n )}?tagKeyValues=${encodeURIComponent(\n '$KubernetesCluster'\n )}:${encodeURIComponent(\n item.cluster.toLowerCase()\n )}`}},[_vm._v(_vm._s(item.namespace))])]}},{key:`item.total`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.total,_vm.currencyCode))+\" \")]}},{key:`body.append`,fn:function(){return [_c('tr',[_c('th',{staticClass:\"font-weight-bold\"},[_vm._v(\"Totals\")]),_c('th',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.totalSpend,_vm.currencyCode)))])])]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { ISpendByTagResult, ITagSpendLine } from '@/models';\r\n\r\nexport interface INamespaceSpendTableItemViewModel {\r\n cluster: string;\r\n namespace: string;\r\n total: number;\r\n}\r\n\r\nexport const convertTagResultToNamespaceSpend = (\r\n clusterName: string, result: ISpendByTagResult\r\n): INamespaceSpendTableItemViewModel[] => {\r\n if (!result?.data?.length) {\r\n return [];\r\n }\r\n const rowMap = new Map();\r\n result.data.filter((item: ITagSpendLine) => {\r\n const cluster = item.rowDimensions[0];\r\n return cluster.tagValue === clusterName;\r\n }).forEach((item: ITagSpendLine) => {\r\n const namespace = item.rowDimensions[2];\r\n if (!namespace.tagValue?.trim()) return;\r\n\r\n if (!rowMap.has(namespace.tagValue)) {\r\n const row: INamespaceSpendTableItemViewModel = {\r\n cluster: item.rowDimensions[0].tagValue,\r\n namespace: namespace.tagValue,\r\n total: 0\r\n };\r\n rowMap.set(namespace.tagValue, row);\r\n }\r\n const row = rowMap.get(namespace.tagValue);\r\n const totalSpend = Math.round(item.totalSpend * 100) / 100;\r\n row.total += totalSpend; // total per namespace\r\n });\r\n return [...rowMap.entries()].map(([, v]) => v);\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n currencyCode: String,\r\n loading: Boolean,\r\n },\r\n computed: {\r\n totalSpend() {\r\n return this.items.reduce((total: number, item: INamespaceSpendTableItemViewModel) => total + item.total, 0);\r\n },\r\n headers() {\r\n if (!this.items) return [];\r\n\r\n return [\r\n {\r\n text: this.$t(\"dashboard.namespaces.namespaceColumnHeading\"),\r\n value: `namespace`,\r\n sortable: true,\r\n index: 1,\r\n },\r\n {\r\n text: this.$t(\"dashboard.namespaces.totalColumnHeading\"),\r\n value: `total`,\r\n sortable: true,\r\n index: 2,\r\n }\r\n ];\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NamespaceSpendTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NamespaceSpendTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NamespaceSpendTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NamespaceSpendTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NamespaceSpendTable.vue?vue&type=template&id=48ecafce&\"\nimport script from \"./NamespaceSpendTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./NamespaceSpendTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NamespaceSpendTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\",staticStyle:{\"height\":\"200px\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ChartData, Chart, ChartDataset } from 'chart.js/auto'\r\nimport { formatCurrency } from '@/lib/Currencies';\r\nimport * as CssVariables from '@/lib/CssVariables';\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n clickFn: (allocation: string) => void | null;\r\n}\r\n\r\nexport interface IClusterSpendDataPoint {\r\n x: number;\r\n y: string;\r\n allocation: string;\r\n}\r\n\r\nconst AllocationTypes : {[allocation: string]: { label: string, description: string[] }} = {\r\n 'unallocated': { label: 'Un-utilised', description: ['This is the cost of unused compute space in the cluster', 'It is the spend left after each pod has been allocated a cost based on its usage.', 'This is a good indicator of whether the cluster provisioning should be tweaked'] },\r\n 'allocated': { label: 'Utilised', description: ['This is the cost that can be attributed to a running service (a pod).', 'The pod cost is a calculation of its total usage of the node resources on a particular day'] },\r\n 'sharedcost': { label: 'Overheads', description: ['Clusters have an overhead cost charged by each cloud vendor', 'This is typically the hourly charge for having a cluster running', 'As well as public IP and load balancing'] },\r\n}\r\n\r\nexport const convertAllocationsToDatasets = (allocations: { [allocation: string]: number }): ChartData<'bar', IClusterSpendDataPoint[], string> => {\r\n const colours = [\"#6AA84F\", \"#E69138\", \"#3D85C6\", \"#A64D79\"];\r\n\r\n const datasets: ChartDataset<'bar', IClusterSpendDataPoint[]>[] = [];\r\n Object.keys(allocations).forEach((key, index) => {\r\n const label = AllocationTypes[key] ? AllocationTypes[key].label : key;\r\n datasets.push({\r\n data: [{\r\n allocation: key.toLowerCase(),\r\n x: allocations[key],\r\n y: label\r\n }],\r\n label: label,\r\n backgroundColor: colours[index % colours.length],\r\n borderWidth: 1,\r\n borderColor: 'white'\r\n });\r\n });\r\n return {\r\n datasets\r\n };\r\n};\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions): Chart => {\r\n const { currencyCode } = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(CssVariables.ContrastLinesVariable);\r\n const contrastText = style.getPropertyValue(CssVariables.ContrastTextVariable);\r\n const onClickProcessor = (_, [targetPtr], chart) => {\r\n if (!options.clickFn) return;\r\n const targetDataset = chart.data.datasets[targetPtr.datasetIndex];\r\n const target: IClusterSpendDataPoint = targetDataset.data[targetPtr.index] as any;\r\n options.clickFn(target.allocation);\r\n }\r\n const chart = new Chart(chartItem, {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options: {\r\n indexAxis: 'y',\r\n borderColor: 'rgba(0,0, 0, 0)',\r\n plugins: {\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(item) {\r\n const dataset = item.dataset;\r\n const points: IClusterSpendDataPoint[] = dataset.data as any;\r\n const hoverPoint: IClusterSpendDataPoint = points[item.dataIndex];\r\n return [\r\n `Spend: ${formatCurrency(hoverPoint.x, currencyCode)}`,\r\n ...AllocationTypes[hoverPoint.allocation] ? AllocationTypes[hoverPoint.allocation].description : []\r\n ]\r\n }\r\n },\r\n mode: 'point'\r\n },\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y: {\r\n type: 'category',\r\n ticks: {\r\n color: contrastText\r\n },\r\n grid: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n },\r\n stacked: true\r\n },\r\n x: {\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return formatCurrency(value, currencyCode);\r\n }\r\n },\r\n grid: {\r\n color: contrastLines\r\n },\r\n title: {\r\n text: `Cost (${currencyCode})`,\r\n color: contrastText,\r\n display: true\r\n },\r\n display: true,\r\n stacked: true\r\n }\r\n },\r\n onClick(_, [targetPtr], chart) {\r\n onClickProcessor(_, [targetPtr], chart);\r\n },\r\n interaction: {\r\n intersect: true,\r\n mode: 'point'\r\n },\r\n onHover(event, [element]) {\r\n let newCursor = 'default';\r\n if (element) {\r\n const dataset = chart.data.datasets[element.datasetIndex];\r\n if (dataset) {\r\n newCursor = 'pointer';\r\n }\r\n }\r\n (event.native.target as HTMLElement).style.cursor = newCursor;\r\n },\r\n }\r\n });\r\n return chart;\r\n}","\r\nimport { defineComponent, ref, onMounted, watch } from \"vue\";\r\nimport { useTenantStore, storeToRefs } from \"@/stores\";\r\nimport createClusterAllocationsBarChart, {\r\n convertAllocationsToDatasets\r\n} from \"@/chartjs/createClusterSpendBarChart\";\r\n\r\nexport {\r\n createClusterAllocationsBarChart,\r\n convertAllocationsToDatasets\r\n};\r\n\r\nexport interface IClickEvent {\r\n /**\r\n * Represents the value of the $KubernetesAllocation tag\r\n *\r\n * @typedef {string} allocation\r\n */\r\n allocation: string;\r\n /**\r\n * Represents the value of the $KubernetesCluster tag\r\n *\r\n * @typedef {string} cluster\r\n */\r\n cluster: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n data: Object,\r\n cluster: String\r\n },\r\n setup(props, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!props.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n canvas.value = document.createElement(\"canvas\");\r\n root.value.appendChild(canvas.value);\r\n const chart = createClusterAllocationsBarChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n clickFn(allocation) {\r\n emit(\"click\", { allocation, cluster: props.cluster });\r\n },\r\n });\r\n chart.data = props.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => props.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true },\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n \"$vuetify.theme.dark\": {\r\n handler() {\r\n this.renderChart();\r\n },\r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ClusterSpendBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ClusterSpendBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ClusterSpendBarChart.vue?vue&type=template&id=6d8bf851&\"\nimport script from \"./ClusterSpendBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ClusterSpendBarChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { storeToRefs, useTenantStore, useWaitStore } from '@/stores';\r\nimport {\r\n Granularity,\r\n ISpendByTagResult,\r\n ITagSpendLine\r\n} from '@/models';\r\nimport { watch, computed, defineComponent, ref, ComputedRef } from 'vue';\r\nimport { getTagUsage } from '@/lib/Api';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport NamespaceSpendTable, { INamespaceSpendTableItemViewModel, convertTagResultToNamespaceSpend } from '@/components/Domain.Kubernetes/NamespaceSpendTable.vue';\r\nimport ClusterSpendBarChart, {\r\n convertAllocationsToDatasets,\r\n IClickEvent,\r\n} from '@/components/Domain.Kubernetes/ClusterSpendBarChart.vue';\r\nimport { ChartData } from 'chart.js/auto';\r\nimport { IClusterSpendDataPoint } from '@/chartjs/createClusterSpendBarChart';\r\nimport DateRangeButtonToggle, { IDateRangeViewModel } from '@/components/Domain.Usage/DateRangeButtonToggle.vue';\r\nimport DateKey from '@/lib/DateKey';\r\nimport moment from '@/lib/moment';\r\n\r\ninterface IClusterSpendBreakdown {\r\n cluster: string,\r\n total: number,\r\n namespaces: INamespaceSpendTableItemViewModel[],\r\n clusterAllocationDatasets: ChartData<'bar', IClusterSpendDataPoint[], string>\r\n}\r\n\r\ninterface IClusterSpendItemViewModel {\r\n cluster: string;\r\n total: number;\r\n allocations: { [allocation: string]: number };\r\n}\r\n\r\nexport default defineComponent({\r\n components: { DateRangeButtonToggle, ClusterSpendBarChart, NamespaceSpendTable },\r\n title() {\r\n return this.$t('dashboard.title');\r\n },\r\n setup() {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n\r\n const clusterSpendData = ref(null);\r\n const panelState = ref([]);\r\n const dateRange = ref({ dateRangeKey: '30d', fromDate: null, toDate: moment.utc().toDate() });\r\n const effectiveDateRange = ref<[] | [Date] | [Date, Date]>([]);\r\n\r\n /**\r\n * Loads the cluster spend data, for all clusters within the time period\r\n *\r\n * @async\r\n * @function loadClusterSpend\r\n * @returns {Promise} - A Promise that resolves when the cluster spend data is loaded.\r\n */\r\n const loadClusterSpend = async (dateRange: IDateRangeViewModel): Promise => {\r\n await whilst('loadingClusterSpend', async () => {\r\n try {\r\n const key = new DateKey(dateRange.dateRangeKey);\r\n effectiveDateRange.value = key.getEffectiveDateRange(dateRange.fromDate, dateRange.toDate);\r\n if (effectiveDateRange.value?.length < 1) {\r\n toastError('Please select a date range to view cluster spend');\r\n return;\r\n }\r\n const tagUsageData: ISpendByTagResult = await getTagUsage(\r\n effectiveDateRange.value[0],\r\n effectiveDateRange.value.length > 1 ? effectiveDateRange.value[1] : effectiveDateRange.value[0],\r\n ['$KubernetesCluster', '$KubernetesAllocation', '$KubernetesNamespace'],\r\n Granularity.daily\r\n );\r\n\r\n if (!tagUsageData || tagUsageData.data.length === 0) {\r\n clusterSpendData.value = null;\r\n return;\r\n }\r\n\r\n clusterSpendData.value = tagUsageData;\r\n } catch (err) {\r\n toastError('There was an issue loading the cluster spend');\r\n clusterSpendData.value = null;\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Computes the per-cluster total spend based on the tag usage data.\r\n * Additionally, computes the total spend per allocation (utilised, unutilised, shared cost)\r\n * @returns {IClusterSpendItemViewModel[]} - An array of tag usage items\r\n */\r\n const clusterSpend : ComputedRef = computed(() => {\r\n if (!clusterSpendData.value?.data?.length) {\r\n return [];\r\n }\r\n const rowMap = new Map();\r\n clusterSpendData.value.data.forEach((item: ITagSpendLine) => {\r\n const cluster = item.rowDimensions[0];\r\n const allocation = item.rowDimensions[1];\r\n if (!allocation.tagValue) return;\r\n\r\n if (!rowMap.has(cluster.tagValue)) {\r\n const row: IClusterSpendItemViewModel = {\r\n cluster: cluster.tagValue,\r\n total: 0,\r\n allocations: {}\r\n };\r\n rowMap.set(cluster.tagValue, row);\r\n }\r\n const row = rowMap.get(cluster.tagValue);\r\n const totalSpend = Math.round(item.totalSpend * 100) / 100;\r\n if (!row.allocations[allocation.tagValue]) row.allocations[allocation.tagValue] = 0;\r\n row.total += totalSpend; // total per cluster\r\n row.allocations[allocation.tagValue] += totalSpend; // total per allocation\r\n });\r\n return [...rowMap.entries()].map(([, v]) => v);\r\n });\r\n\r\n /**\r\n * Represents a computed variable that holds an array of cluster spend breakdowns.\r\n * A cluster spend breakdown includes the total cluster cost, as well as costs per namespace\r\n * @name clustersViewModel\r\n * @type {ComputedRef}\r\n */\r\n const clustersViewModel : ComputedRef = computed(() => {\r\n if (!clusterSpendData.value?.data?.length) {\r\n return [];\r\n }\r\n\r\n const clusterMap = new Map();\r\n clusterSpendData.value.data.forEach((item : ITagSpendLine) => {\r\n const cluster = item.rowDimensions[0];\r\n if (clusterMap.has(cluster.tagValue)) return;\r\n\r\n const clusterSpendItem = clusterSpend.value.find((item: IClusterSpendItemViewModel) => item.cluster === cluster.tagValue);\r\n if (!clusterSpendItem) return;\r\n\r\n const clusterRow : IClusterSpendBreakdown = {\r\n cluster: cluster.tagValue,\r\n total: clusterSpendItem.total,\r\n namespaces: convertTagResultToNamespaceSpend(cluster.tagValue, clusterSpendData.value),\r\n clusterAllocationDatasets: convertAllocationsToDatasets(clusterSpendItem.allocations)\r\n };\r\n\r\n clusterMap.set(cluster.tagValue, clusterRow);\r\n });\r\n\r\n return [...clusterMap.entries()].map(([, v]) => v);\r\n });\r\n\r\n /**\r\n * Creates human-readable format of the effective date range\r\n * @name effectiveDates\r\n * @type {ComputedRef<{ fromDate: string, toDate: string }>}\r\n */\r\n const effectiveDates : ComputedRef<{ fromDate: string, toDate: string}> = computed(() => {\r\n if (effectiveDateRange.value.length < 1) return { fromDate: \"\", toDate: \"\" };\r\n\r\n const fromDate = moment.utc(effectiveDateRange.value[0]).format(\"DD MMMM YYYY\");\r\n const toDate = effectiveDateRange.value.length > 1 ? moment.utc(effectiveDateRange.value[1]).format(\"DD MMMM YYYY\") : fromDate;\r\n return { fromDate, toDate };\r\n });\r\n\r\n watch(clustersViewModel, (newClusters : IClusterSpendBreakdown[]) => {\r\n if (newClusters.length === 1) {\r\n panelState.value = [0]; // if we only have one cluster, default its panel to expanded\r\n }\r\n });\r\n\r\n watch(dateRange, async (dateRange: IDateRangeViewModel) => {\r\n await loadClusterSpend(dateRange);\r\n }, { immediate: true });\r\n\r\n return {\r\n dateRange,\r\n effectiveDates,\r\n clusters: clustersViewModel,\r\n clusterSpend,\r\n panelState,\r\n clusterSpendData,\r\n currencyCode,\r\n loadClusterSpend,\r\n wait: { is, whilst }\r\n };\r\n },\r\n\r\n methods: {\r\n handleClusterSpendChartClick(event: IClickEvent) {\r\n this.$router.push(`/kubernetes/tagkeys/${encodeURIComponent(\r\n '$KubernetesAllocation'\r\n )}/tag/${encodeURIComponent(\r\n '$KubernetesAllocation'\r\n )}:${encodeURIComponent(\r\n event.allocation.toLowerCase()\r\n )}?tagKeyValues=${encodeURIComponent(\r\n '$KubernetesCluster'\r\n )}:${encodeURIComponent(\r\n event.cluster.toLowerCase()\r\n )}`\r\n );\r\n },\r\n handleUpdateDateRange($event: IDateRangeViewModel) {\r\n this.dateRange = $event;\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/kubernetes');\r\n this.$title = this.$t('dashboard.title');\r\n }\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./KubernetesDashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./KubernetesDashboard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./KubernetesDashboard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./KubernetesDashboard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./KubernetesDashboard.vue?vue&type=template&id=10d92e74&scoped=true&\"\nimport script from \"./KubernetesDashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./KubernetesDashboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./KubernetesDashboard.vue?vue&type=style&index=0&id=10d92e74&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10d92e74\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./KubernetesDashboard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Passthrough.vue?vue&type=template&id=4f083804&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('tagsOverview.title'),\"icon\":\"local_offer\"}}),(_vm.isDeprecationNoticeEnabled)?_c('Banner',{attrs:{\"lines\":\"one\",\"icon\":\"warning\",\"color\":\"secondary\"},scopedSlots:_vm._u([{key:\"text\",fn:function(){return [_vm._v(\" Deprecation Notice: This page is deprecated and will be removed in a future release. Please use the Custom Reports page. \")]},proxy:true}],null,false,1819889845)}):_vm._e(),_c('v-container',[_c('v-expansion-panels',{attrs:{\"open\":\"\"},model:{value:(_vm.filterPanels),callback:function ($$v) {_vm.filterPanels=$$v},expression:\"filterPanels\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{scopedSlots:_vm._u([{key:\"default\",fn:function({ open }){return [_c('v-list',[_c('v-list-item',{staticClass:\"pa-0 ma-0\"},[_c('v-list-item-content',[_c('v-list-item-title',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"filter_alt\")]),_vm._v(_vm._s(_vm.$t('tagsOverview.titles.reportFilters'))+\" \")],1)],1),(!open && _vm.$wait.is('loadingTagSpend'))?_c('v-list-item-avatar',[_c('v-progress-circular',{attrs:{\"color\":\"secondary\",\"indeterminate\":\"\",\"small\":\"\"}})],1):_vm._e()],1)],1)]}}])}),_c('v-expansion-panel-content',[_c('v-form',{model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-autocomplete',{attrs:{\"label\":_vm.$t('tagsOverview.primaryTagKey'),\"items\":_vm.tagKeys,\"item-text\":\"name\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.primaryTagRules,\"chips\":\"\",\"autofocus\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_c('v-chip',_vm._b({attrs:{\"input-value\":data.selected,\"small\":\"\"},on:{\"click\":data.select}},'v-chip',data.attrs,false),[_vm._v(_vm._s(data.item.name))])]}}]),model:{value:(_vm.primaryTag),callback:function ($$v) {_vm.primaryTag=$$v},expression:\"primaryTag\"}}),_c('v-autocomplete',{attrs:{\"label\":_vm.$t('tagsOverview.additionalTagKeys'),\"items\":_vm.tagKeys,\"item-text\":\"name\",\"rules\":_vm.additionalTagRules,\"outlined\":\"\",\"dense\":\"\",\"multiple\":\"\",\"chips\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_c('v-chip',_vm._b({attrs:{\"input-value\":data.selected,\"close\":\"\",\"small\":\"\"},on:{\"click\":data.select,\"click:close\":function($event){return _vm.remove(data.item.name)}}},'v-chip',data.attrs,false),[_vm._v(_vm._s(data.item.name))])]}}]),model:{value:(_vm.additionalTags),callback:function ($$v) {_vm.additionalTags=$$v},expression:\"additionalTags\"}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}}),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('tagsOverview.dates.start'),\"value\":_vm.startDate,\"rules\":_vm.startDateRules,\"outlined\":\"\",\"noTitle\":true,\"type\":\"month\"},model:{value:(_vm.startDate),callback:function ($$v) {_vm.startDate=$$v},expression:\"startDate\"}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}}),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('tagsOverview.dates.end'),\"value\":_vm.endDate,\"rules\":_vm.endDateRules,\"outlined\":\"\",\"noTitle\":true,\"type\":\"month\"},model:{value:(_vm.endDate),callback:function ($$v) {_vm.endDate=$$v},expression:\"endDate\"}})],1)],1),_c('v-divider'),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"9\"}}),_c('v-col',{attrs:{\"cols\":\"3 text-center\"}},[_c('v-btn',{attrs:{\"disabled\":_vm.valid === false || _vm.$wait.is('loadingTagSpend'),\"loading\":_vm.$wait.is('loadingTagSpend'),\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.getTagSpendData()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(_vm._s(_vm.$t('tagsOverview.runReport'))+\" \")],1)],1)],1)],1)],1)],1)],1),_c('content-card',{staticClass:\"my-2\",attrs:{\"title\":_vm.$t('tagsOverview.titles.totalSpend')}},[_c('template',{slot:\"title-actions\"},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$refs['tag-spend-table'].exportCsv()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_download\")]),_vm._v(\" \"+_vm._s(_vm.$t('tagsOverview.export'))+\" \")],1)],1),_c('TagSpendAreaChart',{attrs:{\"data\":_vm.tagChartItems}}),_c('v-divider',{staticClass:\"my-3\"}),_c('SpendUsageTable',{ref:\"tag-spend-table\",staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"segregate-by\":_vm.segregatedBy.join(','),\"currency-code\":'AUD',\"hide-intelligence\":\"\",\"prefix\":\"/tagoverview\"}})],2)],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ISpendByTagResult, ISpendResult, ISpendAndConsumptionGroup } from '@/models';\r\nimport * as CssVariables from '@/lib/CssVariables';\r\nimport { ChartData, Point, Chart, ChartDataset } from 'chart.js/auto'\r\nimport { formatCurrency } from '@/lib/Currencies';\r\nimport { LEGACY_COLORS_RGB } from './legacy'\r\nimport './dayJsAdapter';\r\nimport htmlLegendPlugin from './legendPlugin';\r\n\r\nconst PREFIX_PAD = 100;\r\n\r\nexport const convertTagSpendResponseToDatasets = (tagSpendResult: ISpendResult): ChartData<'bar', Point[], string> => {\r\n const datasets: ChartDataset<'bar', Point[]>[] = [];\r\n let i = 0;\r\n for (const grouping of tagSpendResult.groupings) {\r\n const color = LEGACY_COLORS_RGB[i % LEGACY_COLORS_RGB.length];\r\n const data = grouping.usageRecords.map(r => ({\r\n x: new Date(r.usageDate).getTime(),\r\n y: r.charges\r\n }))\r\n datasets.push({\r\n data,\r\n label: grouping.name,\r\n backgroundColor: `rgb(${color})`,\r\n borderColor: 'white',\r\n borderWidth: 1,\r\n order: (PREFIX_PAD + i),\r\n }); \r\n i++;\r\n }\r\n return {\r\n labels: [],\r\n datasets\r\n };\r\n};\r\n\r\nexport interface IClickEvent {\r\n index: number;\r\n name: string;\r\n}\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n onClick?: (event: IClickEvent) => void;\r\n}\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions, containerId: string): Chart => {\r\n const { currencyCode, onClick } = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(CssVariables.ContrastLinesVariable);\r\n const contrastText = style.getPropertyValue(CssVariables.ContrastTextVariable);\r\n const chart = new Chart(chartItem, {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options: {\r\n borderColor: 'rgba(0,0, 0, 0)',\r\n plugins: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: containerId,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: contrastText\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(item) {\r\n return [item.dataset.label];\r\n },\r\n afterLabel(item) {\r\n const dataset = item.dataset;\r\n const points: Point[] = dataset.data as any;\r\n const hoverPoint: Point = points[item.dataIndex];\r\n const datasetTotal = points.map((a: Point) => a.y).reduce((a, b) => a + b);\r\n const datasetAverage = datasetTotal / dataset.data.length;\r\n const index: (Point | undefined)[] = this.chart.config.data.datasets.map(ds => ds.data[item.dataIndex]);\r\n const indexTotal = index.map(p => p?.y || 0).reduce((a, b) => a + b);\r\n const percentageOfIndexTotal = (hoverPoint.y / (indexTotal || hoverPoint.y) * 100);\r\n const percentageOfAverage = ((hoverPoint.y - datasetAverage) / datasetAverage * 100);\r\n return [\r\n `Total: ${formatCurrency(hoverPoint.y, currencyCode)}`,\r\n `${percentageOfIndexTotal.toFixed(2)}% of period (${formatCurrency(indexTotal, currencyCode)})`,\r\n `${percentageOfAverage > 0 ? '+' + percentageOfAverage.toFixed(2) : percentageOfAverage.toFixed(2)}% vs. average`\r\n ]\r\n },\r\n },\r\n mode: 'point'\r\n }\r\n },\r\n hover: {\r\n mode: 'dataset',\r\n\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n interaction: {\r\n intersect: false,\r\n },\r\n onClick(event, [element], chart) {\r\n if (!element) return;\r\n const dataset = chart.data.datasets[element.datasetIndex];\r\n if (!dataset) return;\r\n if (onClick) {\r\n onClick({\r\n index: dataset.order,\r\n name: dataset.label\r\n });\r\n }\r\n },\r\n scales: {\r\n x: {\r\n type: \"time\",\r\n stacked: true,\r\n ticks: {\r\n color: contrastText\r\n },\r\n grid: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n },\r\n axis: 'x',\r\n time: {\r\n unit: 'month'\r\n }\r\n },\r\n y: {\r\n type: 'linear',\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return formatCurrency(value, currencyCode);\r\n }\r\n },\r\n grid: {\r\n color: contrastLines\r\n },\r\n min: 0,\r\n axis: 'y',\r\n title: {\r\n text: `Cost (${currencyCode})`,\r\n color: contrastText,\r\n display: true\r\n },\r\n stack: 'y',\r\n display: true,\r\n }\r\n }\r\n },\r\n plugins: [htmlLegendPlugin]\r\n });\r\n return chart;\r\n};","\r\nimport { defineComponent, ref, onMounted, watch } from 'vue';\r\nimport { useTenantStore, storeToRefs } from '@/stores';\r\nimport createTagSpendAreaChart, {\r\n convertTagSpendResponseToDatasets,\r\n IClickEvent\r\n} from '@/chartjs/createTagSpendAreaChart';\r\nexport { convertTagSpendResponseToDatasets, IClickEvent };\r\n\r\nexport default defineComponent({\r\n props: {\r\n data: Object,\r\n },\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.style.height = \"400px\";\r\n canvas.value.classList.add('chart-canvas');\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = '400px';\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n\r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n\r\n const chart = createTagSpendAreaChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n onClick(event) {\r\n emit('click', event);\r\n },\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n '$vuetify.theme.dark': {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagSpendAreaChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagSpendAreaChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagSpendAreaChart.vue?vue&type=template&id=8e6cff7a&\"\nimport script from \"./TagSpendAreaChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagSpendAreaChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-banner',_vm._g(_vm._b({attrs:{\"color\":_vm.color,\"icon\":_vm.icon,\"single-line\":_vm.singleLine,\"sticky\":_vm.sticky,\"value\":_vm.value},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},'v-banner',_vm.$attrs,false),_vm.$listeners),[_c('v-banner-text',[_vm._t(\"text\")],2),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Banner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Banner.vue?vue&type=template&id=1f7c7782&\"\nimport script from \"./Banner.vue?vue&type=script&lang=js&\"\nexport * from \"./Banner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { getTagUsage, getAllTagKeys, getSpend } from '@/lib/Api';\r\nimport moment from '@/lib/moment';\r\nimport TagSpendTable, {\r\n convertSpendByTagResultToDimensions,\r\n convertSpendByTagResultToItems,\r\n} from '@/components/Domain.Tags/TagSpendTable.vue';\r\nimport TagSpendAreaChart, { convertTagSpendResponseToDatasets } from '@/components/Domain.Tags/TagSpendAreaChart.vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { defineComponent } from 'vue';\r\nimport { ISpendByTagResult, Granularity, SpendFieldNames, PluralEntityType } from '@/models';\r\nimport {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport Banner from '@/components/Common/Banner.vue';\r\nimport Config from '@/lib/Config';\r\n\r\ninterface ITagOverviewParamsViewModel {\r\n granularity: Granularity.daily | Granularity.monthly;\r\n min: Date;\r\n max: Date;\r\n dimensions: string[];\r\n}\r\n\r\nexport default defineComponent({\r\n components: {\r\n TagSpendAreaChart,\r\n SpendUsageTable,\r\n Banner\r\n },\r\n title(ctx) {\r\n return ctx.$t('tagsOverview.title');\r\n },\r\n data() {\r\n const usageOptions: SpendUsageOptions = {\r\n dateRangeKey: '3m',\r\n forecastRangeKey: '3m'\r\n };\r\n return {\r\n filterPanels: 0,\r\n primaryTag: null,\r\n additionalTags: [],\r\n tagKeys: [],\r\n startDate: moment().subtract(6, 'months'),\r\n startMenu: false,\r\n endDate: moment(),\r\n endMenu: false,\r\n tagTableItems: [],\r\n tagTableDimensions: [],\r\n tagChartItems: { labels: [], datasets: [] },\r\n valid: false,\r\n periodRules: [(v) => !!v || 'Date period is required'],\r\n startDateRules: [\r\n () => {\r\n const startDate = moment.utc((this as any).startDate).startOf('month');\r\n const endDate = moment.utc((this as any).endDate).endOf('month');\r\n if (startDate.isBefore(endDate)) return true;\r\n else return 'Start date must be before or equal to end date';\r\n },\r\n ],\r\n endDateRules: [\r\n () => {\r\n const startDate = moment.utc((this as any).startDate).startOf('month');\r\n const endDate = moment.utc((this as any).endDate).endOf('month');\r\n if (startDate.isBefore(endDate)) return true;\r\n else return 'End date must be after or equal to start date';\r\n },\r\n ],\r\n primaryTagRules: [(v) => !!v || 'Primary tag is required'],\r\n additionalTagRules: [(v) => v.length < 3 || 'Max 2 additional tags supported'],\r\n usageOptions,\r\n usageTableItems: null,\r\n isDeprecationNoticeEnabled: Config.isDeprecationNoticeEnabled(),\r\n };\r\n },\r\n async mounted() {\r\n this.getTagKeys();\r\n },\r\n computed: {\r\n params(): ITagOverviewParamsViewModel {\r\n const tags: string[] = [];\r\n tags.push(this.primaryTag);\r\n if (this.additionalTags && this.additionalTags.length > 0) {\r\n for (const tag of this.additionalTags) {\r\n tags.push(tag);\r\n }\r\n }\r\n return {\r\n granularity: Granularity.monthly,\r\n min: moment.utc(this.startDate, \"MMMM 'YY\").startOf('month').toDate(),\r\n max: moment.utc(this.endDate, \"MMMM 'YY\").endOf('month').toDate(),\r\n dimensions: tags,\r\n };\r\n },\r\n segregatedBy() {\r\n const segregatedBy = this.params.dimensions.filter(d => d).map((d) => `tags/${d}`);\r\n return segregatedBy;\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n getTagKeys: waitFor('loadingTagKeys', async function loadTagKeys() {\r\n try {\r\n this.tagKeys = await getAllTagKeys().then((k) => k.data);\r\n } catch (err) {\r\n toastError('There was an issue loading the Tag Keys.');\r\n this.tagKeys = [];\r\n }\r\n }),\r\n getTagSpendData: waitFor('loadingTagSpend', async function loadTagSpend() {\r\n try {\r\n this.filterPanels = null;\r\n const params = convertSpendOptionsToQuery(this.usageOptions as SpendUsageOptions);\r\n if (!params) return;\r\n params.fromDate = moment.utc(this.startDate).startOf('month').toDate().toISOString();\r\n params.toDate = moment.utc(this.endDate).endOf('month').toDate().toISOString();\r\n\r\n const usageResponse = await getSpend({\r\n ...params,\r\n segregateBy: this.segregatedBy,\r\n fields: [SpendFieldNames.Charges, SpendFieldNames.Spend],\r\n });\r\n\r\n this.usageTableItems = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n this.segregatedBy,\r\n usageResponse,\r\n );\r\n this.tagChartItems = convertTagSpendResponseToDatasets(usageResponse);\r\n\r\n } catch (err) {\r\n toastError('There was an issue loading the data.');\r\n this.tagTableItems = [];\r\n this.tagTableDimensions = [];\r\n this.tagChartItems = [];\r\n this.filterPanels = 0;\r\n }\r\n }),\r\n remove(item) {\r\n const index = this.additionalTags.indexOf(item);\r\n if (index >= 0) this.additionalTags.splice(index, 1);\r\n },\r\n handleDialogChange(isOpen) {\r\n if (isOpen) return;\r\n this.$router.push('/tagoverview');\r\n this.$title = this.$t('tagsOverview.title');\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagOverview.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagOverview.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagOverview.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagOverview.vue?vue&type=template&id=cea09af4&\"\nimport script from \"./TagOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagOverview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagOverview.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('Customers'),\"icon\":\"content_copy\",\"extended\":\"\",\"extension-height\":10}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"fab\":\"\",\"absolute\":\"\",\"depressed\":\"\",\"bottom\":\"\",\"large\":\"\",\"right\":\"\"},on:{\"click\":function($event){return _vm.exportCustomerCsv()}}},[_c('v-icon',[_vm._v(\"cloud_download\")])],1)],1),_c('widget-grid',{staticClass:\"mt-7\"},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md3\":\"\"}},[_c('figure-card',{attrs:{\"title\":_vm._f(\"currency\")(_vm.totalRevenue,_vm.tenantStore.currencyCode),\"description\":_vm.tenantStore.hasTenantFeature('HideProfit') ? _vm.$t('views.customerUsage.cards.totalCost') : _vm.$t('views.customerUsage.cards.totalRevenue'),\"caption\":_vm.$t('views.customerUsage.dateRangeFormat', {\n startPeriodString: _vm.startPeriodString,\n endPeriodString: _vm.endPeriodString,\n })}})],1),(!_vm.tenantStore.hasTenantFeature('HideProfit'))?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md3\":\"\"}},[_c('figure-card',{attrs:{\"title\":_vm._f(\"currency\")(_vm.totalProfit,_vm.tenantStore.currencyCode),\"description\":_vm.$t('views.customerUsage.cards.totalProfit'),\"caption\":_vm.$t('views.customerUsage.dateRangeFormat', {\n startPeriodString: _vm.startPeriodString,\n endPeriodString: _vm.endPeriodString,\n })}})],1):_vm._e(),(!_vm.tenantStore.hasTenantFeature('HideProfit'))?_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md3\":\"\"}},[_c('figure-card',{attrs:{\"title\":`${_vm.totalMargin ? _vm.totalMargin.toFixed(2) : 0}%`,\"description\":_vm.$t('views.customerUsage.cards.margin'),\"caption\":_vm.$t('views.customerUsage.dateRangeFormat', {\n startPeriodString: _vm.startPeriodString,\n endPeriodString: _vm.endPeriodString,\n })}})],1):_vm._e(),_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md3\":\"\"}},[_c('figure-card',{attrs:{\"title\":_vm.numberCustomers,\"description\":_vm.$t('views.customerUsage.cards.totalCustomers'),\"caption\":_vm.$t('views.customerUsage.dateRangeFormat', {\n startPeriodString: _vm.startPeriodString,\n endPeriodString: _vm.endPeriodString,\n })}})],1),_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('content-card',{attrs:{\"title\":\"Spend by Month\"}},[_c('customers-chart',{attrs:{\"data\":_vm.chartDatasets}})],1)],1),_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('customers-table',{ref:\"customers-table\",attrs:{\"items\":_vm.summary ? _vm.summary.customers : [],\"currencyCode\":_vm.tenantStore.currencyCode,\"loading\":_vm.$wait.is('loadingCustomerStats'),\"hideProfit\":_vm.tenantStore.hasTenantFeature('HideProfit')}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ICustomerUsageSummaryModel } from '@/models';\r\nimport * as CssVariables from '@/lib/CssVariables';\r\nimport { ChartData, Point, Chart, ChartDataset } from 'chart.js/auto';\r\nimport { formatCurrency } from '@/lib/Currencies';\r\nimport { LEGACY_COLORS_RGB } from './legacy';\r\nimport './dayJsAdapter';\r\nimport pattern from 'patternomaly';\r\nimport htmlLegendPlugin from './legendPlugin';\r\n\r\nconst PREFIX_PAD = 100;\r\nconst MARGIN_DATASET_ORDER = 98;\r\nconst PROFIT_DATASET_ORDER = 99;\r\n\r\nexport const convertCustomerUsageSummaryToDatasets = (\r\n usageResult: ICustomerUsageSummaryModel,\r\n showProfit: boolean\r\n): ChartData<'bar' | 'line', Point[], string> => {\r\n const datasets: ChartDataset<'bar' | 'line', Point[]>[] = [];\r\n usageResult.customers.forEach((g, i) => {\r\n const color = LEGACY_COLORS_RGB[i % LEGACY_COLORS_RGB.length];\r\n const customerDataset: ChartDataset<'bar', Point[]> = {\r\n data: [],\r\n label: g.customerName + \"'s Cost\",\r\n backgroundColor: `rgb(${color})`,\r\n borderColor: 'white',\r\n borderWidth: 1,\r\n order: PREFIX_PAD + i,\r\n };\r\n customerDataset.data = g.monthlyChargeSummaries.map((u) => ({\r\n x: new Date(u.year, u.month - 1, 1).getTime(),\r\n y: u.cost - u.profit,\r\n }));\r\n datasets.push(customerDataset);\r\n });\r\n if (showProfit) {\r\n const marginDataset: ChartDataset<'line', Point[]> = {\r\n type: 'line',\r\n data: [],\r\n label: 'Margin',\r\n backgroundColor: 'rgba(255, 0, 0, 0.8)',\r\n borderColor: 'rgb(75, 192, 192)',\r\n fill: false,\r\n tension: 0.1,\r\n order: MARGIN_DATASET_ORDER,\r\n yAxisID: 'y2',\r\n };\r\n const profitDataset: ChartDataset<'bar', Point[]> = {\r\n data: [],\r\n label: 'Total Profit',\r\n backgroundColor: pattern.draw('zigzag', '#17becf'),\r\n order: PROFIT_DATASET_ORDER,\r\n borderWidth: 1,\r\n borderColor: 'white',\r\n };\r\n usageResult.monthlyChargeTotals.forEach((t) => {\r\n const date = new Date(t.year, t.month - 1, 1);\r\n marginDataset.data.push({ x: date.getTime(), y: t.margin });\r\n profitDataset.data.push({ x: date.getTime(), y: t.profit });\r\n });\r\n marginDataset.data = marginDataset.data.sort((a, b) => b.x - a.x);\r\n profitDataset.data = profitDataset.data.sort((a, b) => b.x - a.x);\r\n datasets.push(marginDataset);\r\n datasets.push(profitDataset);\r\n }\r\n return {\r\n labels: [],\r\n datasets,\r\n };\r\n};\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n}\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions, containerId: string): Chart => {\r\n const { currencyCode } = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(CssVariables.ContrastLinesVariable);\r\n const contrastText = style.getPropertyValue(CssVariables.ContrastTextVariable);\r\n const chart = new Chart(chartItem, {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: [],\r\n },\r\n options: {\r\n borderColor: 'rgba(0,0, 0, 0)',\r\n plugins: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: containerId,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: contrastText,\r\n },\r\n },\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n interaction: {\r\n intersect: true,\r\n mode: 'point',\r\n },\r\n scales: {\r\n x: {\r\n type: 'time',\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n },\r\n grid: {\r\n color: 'rgba(0, 0, 0, 0)',\r\n },\r\n axis: 'x',\r\n time: {\r\n unit: 'month',\r\n },\r\n },\r\n y: {\r\n type: 'linear',\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return formatCurrency(value, currencyCode);\r\n },\r\n },\r\n grid: {\r\n color: contrastLines,\r\n },\r\n min: 0,\r\n axis: 'y',\r\n title: {\r\n text: `Cost (${currencyCode})`,\r\n color: contrastText,\r\n display: true,\r\n },\r\n stack: 'y',\r\n display: true,\r\n },\r\n y2: {\r\n type: 'linear',\r\n stacked: false,\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return value.toFixed(2) + '%';\r\n },\r\n },\r\n position: 'right',\r\n grid: {\r\n drawOnChartArea: false, // only want the grid lines for one axis to show up\r\n },\r\n },\r\n },\r\n },\r\n plugins: [htmlLegendPlugin],\r\n });\r\n return chart;\r\n};\r\n","\r\nimport { defineComponent, ref, onMounted, watch } from \"vue\";\r\nimport { useTenantStore, storeToRefs } from \"@/stores\";\r\nimport createCustomerUsageBarChart, {\r\n convertCustomerUsageSummaryToDatasets,\r\n} from \"@/chartjs/createCustomerUsageBarChart\";\r\nexport { convertCustomerUsageSummaryToDatasets };\r\n\r\nexport default defineComponent({\r\n props: {\r\n data: Object,\r\n },\r\n setup(p) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.style.height = \"400px\";\r\n canvas.value.classList.add('chart-canvas');\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = '400px';\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n\r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n\r\n const chart = createCustomerUsageBarChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n \"$vuetify.theme.dark\": {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerUsageBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerUsageBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomerUsageBarChart.vue?vue&type=template&id=387b5a48&\"\nimport script from \"./CustomerUsageBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomerUsageBarChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":\"Customers\",\"caption\":`Total: ${_vm.items.length}`}},[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.transformedItems,\"items-per-page\":15,\"sort-by\":_vm.sortBy,\"loading\":_vm.loading},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event}},scopedSlots:_vm._u([{key:`item.thisMonthRevenue`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.thisMonthRevenue,_vm.currencyCode))+\" \")]}},{key:`item.thisMonthCost`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.thisMonthCost,_vm.currencyCode))+\" \")]}},{key:`item.thisMonthProfit`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.thisMonthProfit,_vm.currencyCode))+\" \")]}},{key:`item.thisMonthMargin`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.thisMonthMargin.toFixed(2))+\"% \")]}},{key:`item.lastMonthRevenue`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.lastMonthRevenue,_vm.currencyCode))+\" \")]}},{key:`item.lastMonthCost`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.lastMonthCost,_vm.currencyCode))+\" \")]}},{key:`item.lastMonthProfit`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.lastMonthProfit,_vm.currencyCode))+\" \")]}},{key:`item.lastMonthMargin`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.lastMonthMargin.toFixed(2))+\"% \")]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomerTable.vue?vue&type=template&id=6ace8a1f&\"\nimport script from \"./CustomerTable.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomerTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { getCustomerSummary } from \"@/lib/Api\";\r\nimport CustomersChart, {\r\n convertCustomerUsageSummaryToDatasets,\r\n} from \"@/components/View.CustomerUsage/CustomerUsageBarChart.vue\";\r\nimport CustomersTable from \"@/components/View.CustomerUsage/CustomerTable.vue\";\r\nimport Downloader from \"@/lib/Downloader\";\r\nimport EventBus from \"@/lib/EventBus\";\r\nimport moment from \"@/lib/moment\";\r\nimport { useTenantStore } from \"@/stores/tenant\";\r\nimport { mapStores } from \"pinia\";\r\nimport { defineComponent } from \"vue\";\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t(\"views.customerUsage.title\");\r\n },\r\n components: {\r\n CustomersChart,\r\n CustomersTable,\r\n },\r\n methods: {\r\n exportCustomerCsv() {\r\n const table = this.$refs[\"customers-table\"];\r\n const headers = table.headers;\r\n const headerValues = headers.map((i) => i.value);\r\n const csvValues = table.transformedItems.map((i) => headerValues.map((k) => i[k]));\r\n csvValues.unshift(headers.map((i) => i.text));\r\n Downloader.exportCSV(csvValues, this.$t(\"views.customerUsage.exportFileName\"));\r\n },\r\n },\r\n data() {\r\n return {\r\n summary: null,\r\n chartDatasets: { labels: [], datasets: [] },\r\n startPeriod: moment.utc().subtract(6, \"months\").startOf(\"month\").toDate(),\r\n endPeriod: moment.utc().toDate(),\r\n };\r\n },\r\n computed: {\r\n totalRevenue() {\r\n if (!this.summary) return 0.0;\r\n return this.summary.totalRevenue;\r\n },\r\n totalProfit() {\r\n if (!this.summary) return 0.0;\r\n return this.summary.totalProfit;\r\n },\r\n totalMargin() {\r\n if (!this.summary) return 0.0;\r\n return this.summary.totalMargin;\r\n },\r\n numberCustomers() {\r\n if (!this.summary) return 0.0;\r\n return this.summary.customers.length;\r\n },\r\n startPeriodString() {\r\n return moment.utc(this.startPeriod).format(\"MMM YYYY\");\r\n },\r\n endPeriodString() {\r\n return moment.utc(this.endPeriod).format(\"MMM YYYY\");\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n async created() {\r\n try {\r\n this.$wait.start(\"loadingCustomerStats\");\r\n const data = await getCustomerSummary(this.startPeriod, this.endPeriod);\r\n this.summary = data;\r\n this.chartDatasets = convertCustomerUsageSummaryToDatasets(data, !this.tenantStore.hasTenantFeature('HideProfit'));\r\n } catch (err) {\r\n EventBus.$emit(\"$toast.error\", \"There was an error loading your customer summary.\");\r\n } finally {\r\n this.$wait.end(\"loadingCustomerStats\");\r\n }\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersUsage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersUsage.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersUsage.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersUsage.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomersUsage.vue?vue&type=template&id=74e3455e&\"\nimport script from \"./CustomersUsage.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomersUsage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomersUsage.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('regionOverview.title'),\"icon\":\"location_on\"}}),_c('v-container',[_c('region-chart-card',{attrs:{\"items\":_vm.filteredRegionMapData},on:{\"click\":function($event){return _vm.handleChartClick($event)}}}),_c('regions-table-card',{staticClass:\"mt-3\",attrs:{\"loading\":_vm.$wait.is(['loadingRegions', 'loadingRegionTotals']),\"items\":_vm.filteredRegions,\"currency-code\":_vm.tenantStore.currencyCode},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-text-field',{staticClass:\"mr-1 pb-0 pr-7 shrink\",attrs:{\"hide-details\":\"false\",\"type\":\"number\",\"persistent-hint\":\"\",\"solo-inverted\":\"\",\"flat\":\"\",\"prepend-icon\":\"filter_list\",\"prepend-inner-icon\":\"attach_money\",\"label\":_vm.$t('regionOverview.filterNumber'),\"clearable\":\"\"},model:{value:(_vm.filterValue),callback:function ($$v) {_vm.filterValue=_vm._n($$v)},expression:\"filterValue\"}})]},proxy:true}])}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('chart-card',{attrs:{\"chart\":_vm.chartOptions,\"constructor-type\":\"mapChart\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ContrastTextVariable, VuetifyPrimaryBase } from '@/lib/CssVariables';\r\n\r\nexport const createMapChart = (options: any) => {\r\n const { events } = options;\r\n return {\r\n chart: {\r\n backgroundColor: 'transparent',\r\n map: 'custom/world'\r\n },\r\n exporting: { enabled: false },\r\n credits: { enabled: false },\r\n title: { text: '' },\r\n mapNavigation: { enabled: false },\r\n legend: {\r\n itemStyle: {\r\n color: `var(${ContrastTextVariable})`,\r\n },\r\n itemHoverStyle: {\r\n color: `var(${ContrastTextVariable})`\r\n },\r\n navigation: {\r\n style: {\r\n color: `var(${ContrastTextVariable})`,\r\n },\r\n activeColor: VuetifyPrimaryBase\r\n },\r\n },\r\n colorAxis: [],\r\n plotOptions: {\r\n series: {\r\n point: {\r\n events: {\r\n click: function clickEventHandler() {\r\n if (events && events['pointClicked']) {\r\n events['pointClicked'](this);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n series: [{\r\n name: 'Countries',\r\n color: '#E0E0E0',\r\n enableMouseTracking: false,\r\n showInLegend: false\r\n }]\r\n };\r\n};\r\n\r\nexport const createMapSeriesRecord = (groupingName: string, suffix: string, prefix: string = null) => {\r\n const colorLookup = {\r\n Azure: '#0078d4',\r\n Amazon: '#ec912d8c'\r\n } as any;\r\n const record = {\r\n type: 'mapbubble',\r\n name: groupingName,\r\n joinBy: null,\r\n data: [], // createMapSeriesChildRecord\r\n minSize: 15,\r\n maxSize: '10%',\r\n tooltip: suffix === 'intensity'\r\n ? {\r\n pointFormatter() {\r\n if (this.z < 0.0015) {\r\n return `${this.name}: Very Low`;\r\n } else if (this.z < 0.0030) {\r\n return `${this.name}: Low`;\r\n } else if (this.z < 0.0045) {\r\n return `${this.name}: Medium`;\r\n } else if (this.z < 0.0060) {\r\n return `${this.name}: High`;\r\n } else {\r\n return `${this.name}: Very High`;\r\n }\r\n }\r\n } \r\n : {\r\n pointFormatter() {\r\n return `${prefix ?? ''}${this.name}: ${this.z.toFixed(2)} ${suffix}`;\r\n }\r\n }\r\n };\r\n if (colorLookup[groupingName]) {\r\n record['color'] = colorLookup[groupingName];\r\n }\r\n return record;\r\n}\r\n\r\nexport const createMapSeriesChildRecord = (correlationId: string, areaName: string, groupingName: string, lat: number, lon: number, value: number) => {\r\n return {\r\n name: areaName,\r\n $$id: correlationId,\r\n provider: groupingName,\r\n lat,\r\n lon,\r\n z: value\r\n };\r\n}\r\n\r\nexport const createCarbonColorAxis = (max: number) => {\r\n return {\r\n min: 0,\r\n max,\r\n stops: [\r\n [0, '#5effa2'],\r\n [0.3, '#045737'],\r\n [0.6, '#cc820c'],\r\n [1, '#85071a']\r\n ]\r\n };\r\n}","\r\nimport { defineComponent, ref, watch } from \"vue\";\r\nimport * as ChartFactory from \"@/highcharts/MapFactory\";\r\nimport { IRegionCostResult, IRegionResult } from \"@/models\";\r\n\r\nexport interface IRegionClickedEventData {\r\n regionName: string;\r\n providerType: string;\r\n}\r\n\r\nexport const convertRegionResultsToChartSeries = (\r\n costs: IRegionCostResult,\r\n regions: IRegionResult[],\r\n currencyCode: string,\r\n currencySymbol: string\r\n) => {\r\n const regionTotals = costs.data.reduce((agg, val) => {\r\n const key = `${val.providerType}:${val.regionName}`.toUpperCase();\r\n agg[key] = val.totalCost;\r\n return agg;\r\n }, {});\r\n const series = Object.values(\r\n regions.reduce((obj, region) => {\r\n const regionTotalKey = `${region.providerType}:${region.name}`.toUpperCase();\r\n if (!regionTotals[regionTotalKey]) return obj;\r\n\r\n const providerType = region.providerType;\r\n const regionData = (obj[providerType] =\r\n obj[providerType] || ChartFactory.createMapSeriesRecord(providerType, currencyCode, currencySymbol));\r\n\r\n if (region.lat) {\r\n regionData.data.push(\r\n ChartFactory.createMapSeriesChildRecord(\r\n region.id,\r\n region.name || \"Unknown\",\r\n providerType,\r\n region.lat,\r\n region.long,\r\n regionTotals[regionTotalKey]\r\n )\r\n );\r\n }\r\n return obj;\r\n }, {})\r\n );\r\n series.unshift({\r\n name: \"Countries\",\r\n color: \"#E0E0E0\",\r\n enableMouseTracking: false,\r\n showInLegend: false,\r\n });\r\n return series;\r\n};\r\n\r\nexport default defineComponent({\r\n props: { items: Array },\r\n setup(p, { emit }) {\r\n const chartOptions = ref(\r\n ChartFactory.createMapChart({\r\n events: {\r\n pointClicked(eventData) {\r\n const outgoingEventData: IRegionClickedEventData = {\r\n regionName: eventData.name,\r\n providerType: eventData.series.name,\r\n };\r\n emit(\"click\", outgoingEventData);\r\n },\r\n },\r\n })\r\n );\r\n watch(\r\n () => p.items,\r\n (items: any) => {\r\n chartOptions.value.series = items;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n return { chartOptions };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionUsageChartCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionUsageChartCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegionUsageChartCard.vue?vue&type=template&id=351e30f8&\"\nimport script from \"./RegionUsageChartCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionUsageChartCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('content-card',{attrs:{\"title\":_vm.title || _vm.$t('regionsTableCard.title'),\"caption\":_vm.$t('regionsTableCard.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_vm._t(\"title-actions\")]},proxy:true}],null,true)},[_c('regions-table',_vm._g(_vm._b({},'regions-table',_vm.$props,false),_vm.$listeners))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc,\"search\":_vm.searchText},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event},\"update:search\":function($event){_vm.searchText=$event}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-toolbar',{staticClass:\"mb-3\",attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-text-field',{staticClass:\"mr-1\",attrs:{\"solo-inverted\":\"\",\"flat\":\"\",\"prepend-inner-icon\":\"search\",\"hide-details\":\"\",\"placeholder\":_vm.$t('regionsTable.search.placeholder'),\"label\":_vm.$t('regionsTable.search.title')},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]},proxy:true},{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('regionsTable.noRegions'))+\" \")]},proxy:true},{key:`item.geography`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/regionoverview/geographies/${item.providerType}:${item.geography}`}},[_vm._v(\" \"+_vm._s(item.geography)+\" \")])]}},{key:`item.name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/regionoverview/regions/${item.providerType}:${item.name}`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:`item.currentMonth`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.currentMonth,_vm.currencyCode))+\" \")]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { IRegionCostResult, IRegionResult } from '@/models';\r\n\r\nexport const convertRegionResultsToViewItems = (\r\n costs: IRegionCostResult,\r\n regions: IRegionResult[]\r\n): IRegionTableItemViewModel[] => {\r\n const regionTotals = costs.data.reduce((agg, val) => {\r\n const key = `${val.providerType}:${val.regionName}`.toUpperCase();\r\n agg[key] = val.totalCost;\r\n return agg;\r\n }, {});\r\n return regions.map((r) => ({\r\n ...r,\r\n currentMonth: regionTotals[r.id],\r\n }));\r\n};\r\n\r\nexport interface IRegionTableItemViewModel {\r\n geography: string;\r\n name: string;\r\n currentMonth: number;\r\n providerType: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n items: Array,\r\n loading: Boolean,\r\n currencyCode: String,\r\n },\r\n setup() {\r\n const sortedBy = ref('currentMonth');\r\n const sortedDesc = ref(true);\r\n const itemsPerPage = ref(10);\r\n const searchText = ref(null);\r\n return { sortedBy, sortedDesc, itemsPerPage, searchText };\r\n },\r\n data() {\r\n return {\r\n headers: [\r\n {\r\n text: this.$t('regionsTable.geography.title'),\r\n value: 'geography',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('name'),\r\n value: 'name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('regionsTable.currentMonth.title'),\r\n value: 'currentMonth',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('regionsTable.providerType.title'),\r\n value: 'providerType',\r\n sortable: true,\r\n },\r\n ],\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegionsTable.vue?vue&type=template&id=568c5c76&scoped=true&\"\nimport script from \"./RegionsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RegionsTable.vue?vue&type=style&index=0&id=568c5c76&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"568c5c76\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegionsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport RegionsTable, { convertRegionResultsToViewItems } from '@/components/Domain.Regions/RegionsTable.vue';\r\nexport { convertRegionResultsToViewItems };\r\nimport { defineComponent } from 'vue';\r\nexport default defineComponent({\r\n components: { RegionsTable },\r\n props: { ...RegionsTable.props, title: String },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTableCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTableCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTableCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsTableCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegionsTableCard.vue?vue&type=template&id=340a234c&\"\nimport script from \"./RegionsTableCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionsTableCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegionsTableCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport RegionChartCard, {\r\n IRegionClickedEventData,\r\n convertRegionResultsToChartSeries,\r\n} from '@/components/Domain.Regions/RegionUsageChartCard.vue';\r\nimport RegionsTableCard, { convertRegionResultsToViewItems } from '@/components/Domain.Regions/RegionsTableCard.vue';\r\nimport moment from '@/lib/moment';\r\nimport { IRegionCostResult, IRegionResult } from '@/models';\r\nimport { defineComponent } from 'vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport CurrencyService from '@/lib/Currencies';\r\nimport { Fragment } from 'vue-fragment';\r\n\r\n\r\nexport default defineComponent({\r\n props: ['me'],\r\n components: { RegionsTableCard, RegionChartCard },\r\n title(ctx) {\r\n return ctx.$t('regionOverview.title');\r\n },\r\n data() {\r\n return {\r\n regions: [],\r\n regionMapData: [],\r\n filteredRegions: [],\r\n filteredRegionMapData: [],\r\n filterValue: null,\r\n };\r\n },\r\n created() {\r\n this.loadDataForView();\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n handleChartClick(data: IRegionClickedEventData) {\r\n const { providerType, regionName } = data;\r\n this.$router.push(`/regionoverview/regions/${providerType}:${regionName}`);\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/regionoverview');\r\n this.$title = this.$t('regionOverview.title');\r\n },\r\n async loadDataForView() {\r\n const [regions, costs, symbol] = await Promise.all([this.getAllRegions(), this.getRegionTotals(), CurrencyService.getCurrencySymbol(this.tenantStore.currencyCode)]);\r\n this.regions = convertRegionResultsToViewItems(costs, regions).filter(x => x.currentMonth > 0);\r\n this.filteredRegions = this.regions;\r\n this.regionMapData = convertRegionResultsToChartSeries(costs, regions, this.tenantStore.currencyCode, symbol);\r\n this.filteredRegionMapData = this.regionMapData;\r\n },\r\n getAllRegions: waitFor('loadingRegions', async function (): Promise {\r\n try {\r\n return await ApiV2.http.get('/api/regions').then((r) => r.data);\r\n } catch (error) {\r\n toastError(this.$t('regionOverview.error.loadingRegions'));\r\n }\r\n }),\r\n getRegionTotals: waitFor('loadingRegionTotals', async function (): Promise {\r\n try {\r\n const params = {\r\n min: moment.utc().add(-30, 'days').startOf('day').format(),\r\n max: moment.utc().endOf('day').format(),\r\n };\r\n return await ApiV2.http.get('/api/region/cost', { params }).then((r) => r.data);\r\n } catch (error) {\r\n toastError(this.$t('regionOverview.error.loadingRegionTotals'));\r\n }\r\n }),\r\n },\r\n watch: {\r\n filterValue: {\r\n handler(val) {\r\n if(val == \"\" || val == 0 ){\r\n this.filteredRegions = this.regions;\r\n this.filteredRegionMapData = this.regionMapData;\r\n return;\r\n }\r\n this.filteredRegions = this.regions.filter(x => x.currentMonth > val);\r\n // cheap and dirty deep clone\r\n const list = JSON.parse(JSON.stringify( this.regionMapData )).filter(x => (x.data && x.data?.some(y => y.z > val)) || !x.data);\r\n list.forEach(element => {\r\n if(element.data) {\r\n element.data = element.data.filter(x => x.z > val);\r\n }\r\n });\r\n this.filteredRegionMapData = list;\r\n }\r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionOverview.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionOverview.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionOverview.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegionOverview.vue?vue&type=template&id=0e352584&\"\nimport script from \"./RegionOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionOverview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegionOverview.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('carbonDashboard.title'),\"icon\":\"co2\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":_vm.$t('carbonDashboard.titles.currentProjected', { thisMonthName: _vm.thisMonthName }),\"subtitle\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.currentTotalCo2E.toFixed(3))+\" t CO2e \")]},proxy:true},{key:\"subtitle\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.currentTotalKwH.toFixed(3))+\" kWh \")]},proxy:true}])}),_c('title-sheet',{attrs:{\"title\":_vm.$t('carbonDashboard.titles.previousTotal', { lastMonthName: _vm.lastMonthName }),\"subtitle\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.lastMonthCo2e.toFixed(3))+\" t CO2e \")]},proxy:true},{key:\"subtitle\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.lastMonthKwH.toFixed(3))+\" kWh \")]},proxy:true}])}),(_vm.tenantStore.features.includes('Recommendations/View'))?_c('title-sheet',{staticClass:\"hover_pointer\",attrs:{\"title\":_vm.$t('dashboard.titles.potentialSavings'),\"subtitle\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleSavingsClicked()}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s((_vm.recommendationSummary.maximumEstimateImpactEmissions || 0.0).toFixed(4))+\"t CO2e \"),(_vm.recommendationSummary.includesElevatedSavings === true)?_c('span',[_vm._v(\"*\")]):_vm._e()]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('credential-status-icon',{attrs:{\"value\":_vm.recommendationStatus ? _vm.recommendationStatus.credentialStatus : null}}),_vm._v(\" \"+_vm._s(_vm.recommendationStatusText)+\" \")]},proxy:true}],null,false,1102994316)}):_vm._e()],1),_c('content-card',{attrs:{\"title\":_vm.$t('carbonDashboard.titles.cumulative'),\"title-icon\":\"co2\",\"loading\":_vm.$wait.is('getTenantMonthlyCO2e')}},[_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.fixedCarbonOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}})],1),_c('content-card',{staticClass:\"my-2\",attrs:{\"title\":\"Emissions by hierarchy\"}},[_c('tag-carbon-table',{attrs:{\"items\":_vm.tagTableItems,\"dimensions\":_vm.tagTableDimensions,\"currency-code\":_vm.tenantStore.currencyCode,\"loading\":_vm.$wait.is('loadingTagSpend')}})],1)],1),_c('CarbonMissingFooter'),_c('router-view',{on:{\"input\":_vm.handleDialogChange}}),_c('v-dialog',{attrs:{\"max-width\":\"500\"},model:{value:(_vm.isUsageDatasetWarningOpen),callback:function ($$v) {_vm.isUsageDatasetWarningOpen=$$v},expression:\"isUsageDatasetWarningOpen\"}},[_c('v-card',{attrs:{\"color\":\"#385F73\",\"dark\":\"\"}},[_c('v-card-title',{staticClass:\"text-h5\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"support_agent\")]),_vm._v(\" Upgrade to Cost and usage data\")],1),_c('v-card-subtitle',{staticClass:\"mt-1\"},[_vm._v(\"Your current plan does not support cost and usage data, which means you can't access granular recommendations. If you want insights on how to reduce emissions and save money please contact support for an upgraded plan.\")]),_c('v-card-actions',[_c('back-button',{on:{\"click\":function($event){_vm.isUsageDatasetWarningOpen = false}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"href\":`mailto:${_vm.supportEmail}?subject=Support`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Contact\")],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\r\n Granularity,\r\n ICO2EAndConsumptionGroup,\r\n ICO2EResult,\r\n IForecastCo2eResult,\r\n ISpendAndConsumptionGroup,\r\n ISpendResult,\r\n} from \"@/models\";\r\nimport * as CssVariables from \"@/lib/CssVariables\";\r\nimport { Chart, ChartData, ChartDataset, Point } from \"chart.js/auto\";\r\nimport { LEGACY_COLORS_RGB } from \"./legacy\";\r\nimport pattern from \"patternomaly\";\r\nimport \"./dayJsAdapter\";\r\nimport htmlLegendPlugin from \"./legendPlugin\";\r\n\r\nexport type ReverseLookup = { [index: number]: string };\r\n\r\nconst TOTAL_ENERGY_ORDER = 1;\r\nconst PREFIX_PAD = 100;\r\nconst OTHERS_DATASET_ORDER = 99998;\r\nconst PROJECTIONS_DATASET_ORDER = 99999;\r\n\r\nexport interface IConvertUsageReportOpts {\r\n labelSuffix?: string | null;\r\n stackGroup?: string | null;\r\n colorsArray?: string[] | null;\r\n}\r\n\r\nexport const convertUsageResponseToEmissionsDatasets = (\r\n usageResult: ISpendResult | null,\r\n opts?: IConvertUsageReportOpts,\r\n): [ChartData<\"bar\" | \"line\", Point[], string>, ReverseLookup] => {\r\n const { labelSuffix, stackGroup, colorsArray } = opts || {};\r\n const datasets: ChartDataset<\"bar\" | \"line\", Point[]>[] = [];\r\n const lookup: ReverseLookup = {};\r\n const colours = colorsArray ? colorsArray : LEGACY_COLORS_RGB;\r\n (usageResult?.groupings || []).reverse().forEach((g, i) => {\r\n lookup[i + PREFIX_PAD] = g.id;\r\n const color = colours[i % colours.length];\r\n const fullColor = `rgb(${color})`;\r\n const dataset: ChartDataset<\"bar\", Point[]> = {\r\n data: [],\r\n label: (g.type === \"\" ? \"Tenant\" : g.name) +\r\n (labelSuffix ? ` (${labelSuffix})` : \"\"),\r\n backgroundColor: g.isOther\r\n ? pattern.draw(\"diagonal\", \"#87db79\", \"#313e4d\")\r\n : fullColor,\r\n borderColor: \"white\",\r\n hoverBackgroundColor: g.isOther\r\n ? pattern.draw(\"diagonal\", \"#FF10F0\", \"#313e4d\")\r\n : \"#FF10F0\",\r\n borderWidth: 1,\r\n order: g.isOther ? OTHERS_DATASET_ORDER : (PREFIX_PAD + i),\r\n stack: stackGroup ? stackGroup : \"stack0\",\r\n };\r\n g.usageRecords.forEach((u) => {\r\n dataset.data.push({\r\n x: new Date(u.usageDate).getTime(),\r\n y: u.cO2e,\r\n });\r\n });\r\n datasets.push(dataset);\r\n });\r\n const energyDataset: ChartDataset<\"line\", Point[]> = {\r\n data: usageResult.aggregateRecords.map((u) => ({\r\n x: new Date(u.usageDate).getTime(),\r\n y: u.kWh,\r\n })),\r\n label: \"Total Energy (kWh)\" + (labelSuffix ? ` (${labelSuffix})` : \"\"),\r\n type: \"line\",\r\n borderWidth: 3,\r\n backgroundColor: \"rgba(255, 0, 0, 0.8)\",\r\n borderColor: \"rgba(255, 0, 0, 0.8)\",\r\n fill: false,\r\n tension: 0.1,\r\n yAxisID: \"y2\",\r\n order: TOTAL_ENERGY_ORDER,\r\n };\r\n datasets.push(energyDataset);\r\n return [{\r\n labels: [],\r\n datasets,\r\n }, lookup];\r\n};\r\n\r\nexport const convertCO2eResponseToDatasets = (\r\n usageResult: ICO2EResult | null,\r\n hideKwh = false,\r\n): [ChartData<\"bar\" | \"line\", Point[], string>, ReverseLookup] => {\r\n const datasets: ChartDataset<\"bar\" | \"line\", Point[]>[] = [];\r\n const lookup: ReverseLookup = {};\r\n (usageResult?.groupings || []).reverse().forEach((g, i) => {\r\n lookup[i + PREFIX_PAD] = g.id;\r\n const color = LEGACY_COLORS_RGB[i % LEGACY_COLORS_RGB.length];\r\n const fullColor = `rgb(${color})`;\r\n const dataset: ChartDataset<\"bar\", Point[]> = {\r\n data: [],\r\n label: g.name,\r\n backgroundColor: g.isOther\r\n ? pattern.draw(\"diagonal\", \"#87db79\", \"#313e4d\")\r\n : fullColor,\r\n borderColor: \"white\",\r\n hoverBackgroundColor: g.isOther\r\n ? pattern.draw(\"diagonal\", \"#FF10F0\", \"#313e4d\")\r\n : \"#FF10F0\",\r\n borderWidth: 1,\r\n order: g.isOther ? OTHERS_DATASET_ORDER : (PREFIX_PAD + i),\r\n };\r\n g.records.forEach((u) => {\r\n dataset.data.push({\r\n x: new Date(u.usageDate).getTime(),\r\n y: u.cO2E,\r\n });\r\n });\r\n datasets.push(dataset);\r\n });\r\n if (!hideKwh) {\r\n const energyDataset: ChartDataset<\"line\", Point[]> = {\r\n data: usageResult.aggregateRecords.map((u) => ({\r\n x: new Date(u.usageDate).getTime(),\r\n y: u.kwH,\r\n })),\r\n label: \"Total Energy (kWh)\",\r\n type: \"line\",\r\n borderWidth: 3,\r\n backgroundColor: \"rgba(255, 0, 0, 0.8)\",\r\n borderColor: \"rgba(255, 0, 0, 0.8)\",\r\n fill: false,\r\n tension: 0.1,\r\n yAxisID: \"y2\",\r\n order: TOTAL_ENERGY_ORDER,\r\n };\r\n datasets.push(energyDataset);\r\n }\r\n return [{\r\n labels: [],\r\n datasets,\r\n }, lookup];\r\n};\r\n\r\nexport const convertProjectionsResponseToDataset = (\r\n projectionsResult: IForecastCo2eResult | null,\r\n): ChartData<\"bar\", Point[], string> => {\r\n const dataset: ChartDataset<\"bar\", Point[]> = {\r\n data: [],\r\n label: \"Forecast\",\r\n backgroundColor: pattern.draw(\"diagonal\", \"#3d3a60\", \"#fff\"),\r\n borderColor: \"white\",\r\n borderWidth: 1,\r\n order: PROJECTIONS_DATASET_ORDER,\r\n };\r\n (projectionsResult?.forecasts || []).forEach((u) => {\r\n const forecastTimestamp = new Date(u.usageDate).getTime();\r\n dataset.data.push({\r\n x: forecastTimestamp,\r\n y: u.forecast,\r\n });\r\n });\r\n return {\r\n labels: [],\r\n datasets: [dataset],\r\n };\r\n};\r\n\r\nexport interface IClickEvent {\r\n index: number;\r\n name: string;\r\n isOther: boolean;\r\n}\r\n\r\nexport interface IOptions {\r\n onClick?: (event: IClickEvent) => void;\r\n granularity: Granularity.daily | Granularity.monthly;\r\n type?: \"bar\" | \"line\";\r\n maxDate?: string;\r\n hideKwh: boolean;\r\n}\r\n\r\nexport default (\r\n chartItem: HTMLCanvasElement,\r\n options: IOptions,\r\n containerId: string,\r\n): Chart => {\r\n const { onClick, granularity, type, maxDate } = options;\r\n\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(\r\n CssVariables.ContrastLinesVariable,\r\n );\r\n const contrastText = style.getPropertyValue(\r\n CssVariables.ContrastTextVariable,\r\n );\r\n const onClickProcessor = (_, [element], chart) => {\r\n if (!element) return;\r\n const dataset = chart.data.datasets[element.datasetIndex];\r\n if (\r\n !dataset || dataset.order === PROJECTIONS_DATASET_ORDER ||\r\n dataset.order === TOTAL_ENERGY_ORDER\r\n ) return;\r\n if (onClick) {\r\n onClick({\r\n index: dataset.order,\r\n isOther: dataset.order === OTHERS_DATASET_ORDER,\r\n name: dataset.label,\r\n });\r\n }\r\n };\r\n const scales: any = {\r\n x: {\r\n type: \"time\",\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n },\r\n grid: {\r\n color: \"rgba(0, 0, 0, 0)\",\r\n },\r\n axis: \"x\",\r\n time: {\r\n unit: granularity == Granularity.monthly ? \"month\" : \"day\",\r\n },\r\n bounds: \"ticks\",\r\n max: new Date(maxDate ?? Date.now()).getTime(),\r\n },\r\n y: {\r\n type: \"linear\",\r\n stacked: true,\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return `${value.toFixed(4)} t CO2e`;\r\n },\r\n },\r\n grid: {\r\n color: contrastLines,\r\n },\r\n min: 0,\r\n axis: \"y\",\r\n title: {\r\n text: `Emissions (t CO2e)`,\r\n color: contrastText,\r\n display: true,\r\n },\r\n stack: \"y\",\r\n display: true,\r\n },\r\n };\r\n if (!options.hideKwh) {\r\n scales.y2 = {\r\n type: \"linear\",\r\n stacked: false,\r\n title: {\r\n text: \"Energy (kWh)\",\r\n display: true,\r\n color: contrastText,\r\n },\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return value.toFixed(2) + \" kWh\";\r\n },\r\n },\r\n position: \"right\",\r\n grid: {\r\n drawOnChartArea: false, // only want the grid lines for one axis to show up\r\n },\r\n };\r\n }\r\n const chart = new Chart(chartItem, {\r\n type: type || \"bar\",\r\n data: {\r\n labels: [],\r\n datasets: [],\r\n },\r\n options: {\r\n borderColor: \"rgba(0,0, 0, 0)\",\r\n plugins: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: containerId,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: contrastText,\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(item) {\r\n return [item.dataset.label];\r\n },\r\n afterLabel(item) {\r\n const dataset = item.dataset;\r\n const points: Point[] = dataset.data as any;\r\n const hoverPoint: Point = points[item.dataIndex];\r\n const datasetTotal = points.map((a: Point) => a.y)\r\n .reduce((a, b) => a + b);\r\n const datasetAverage = datasetTotal /\r\n dataset.data.length;\r\n const percentageOfAverage =\r\n (hoverPoint.y - datasetAverage) /\r\n datasetAverage * 100;\r\n return [\r\n `Total: ${hoverPoint.y.toFixed(8)} t CO2e`,\r\n `${\r\n percentageOfAverage > 0\r\n ? \"+\" + percentageOfAverage.toFixed(2)\r\n : percentageOfAverage.toFixed(2)\r\n }% vs. average`,\r\n ];\r\n },\r\n },\r\n mode: \"point\",\r\n },\r\n },\r\n interaction: {\r\n intersect: true,\r\n mode: \"dataset\",\r\n },\r\n onHover(event, [element]) {\r\n let newCursor = \"default\";\r\n if (element) {\r\n const dataset = chart.data.datasets[element.datasetIndex];\r\n if (\r\n dataset &&\r\n dataset.order !== PROJECTIONS_DATASET_ORDER &&\r\n dataset.order !== TOTAL_ENERGY_ORDER\r\n ) {\r\n newCursor = \"pointer\";\r\n }\r\n }\r\n (event.native.target as HTMLElement).style.cursor = newCursor;\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n onClick(_, [element], chart) {\r\n onClickProcessor(_, [element], chart);\r\n },\r\n scales,\r\n },\r\n plugins: [htmlLegendPlugin],\r\n });\r\n return chart;\r\n};\r\n","\r\nimport { defineComponent, ref, onMounted, watch } from 'vue';\r\nimport createEmissionBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToEmissionsDatasets,\r\n IClickEvent,\r\n ReverseLookup,\r\n} from '@/chartjs/createEmissionBarChart';\r\nimport { Granularity } from '@/models';\r\nexport {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToEmissionsDatasets,\r\n IClickEvent,\r\n ReverseLookup,\r\n};\r\n\r\nexport default defineComponent({\r\n props: {\r\n granularity: String,\r\n data: Object,\r\n height: String,\r\n maxDate: String,\r\n hideKwh: Boolean\r\n },\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n\r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.classList.add('chart-canvas');\r\n if (p.height === '100%') {\r\n canvas.value.classList.add('fill-height-srsly');\r\n root.value.classList.add('fill-height');\r\n canvasContainer.value.classList.add('fill-height-srsly');\r\n } else {\r\n canvas.value.style.height = p.height || '400px';\r\n }\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = p.height || '400px';\r\n \r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n const chart = createEmissionBarChart(canvas.value, {\r\n granularity: p.granularity as Granularity.daily | Granularity.monthly,\r\n onClick(event) {\r\n emit('click', event);\r\n },\r\n maxDate: p.maxDate,\r\n hideKwh: p.hideKwh || false\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n '$vuetify.theme.dark': {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CarbonBarChart.vue?vue&type=template&id=5ef842bf&\"\nimport script from \"./CarbonBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonBarChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"footer-props\":{\n itemsPerPageOptions: [25, 50, 100, -1],\n }},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(!_vm.items)?_c('div',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"query_builder\")]),_vm._v(\"Waiting for query\")],1):_c('div',[_c('v-icon',{attrs:{\"color\":\"warning\",\"left\":\"\"}},[_vm._v(\"warning\")]),_c('span',{staticClass:\"warning--text\"},[_vm._v(\"There is no data for this tag\")])],1)]},proxy:true},{key:`item.tagKey1`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/explore/tagkeys/${encodeURIComponent(item.tagKey1.tagKey)}/tag/${encodeURIComponent(\n item.tagKey1.tagKey\n )}:${encodeURIComponent(item.tagKey1.tagValue)}/carbon`}},[_vm._v(_vm._s(item.tagKey1.tagValue))])]}},{key:`item.tagKey2`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/explore/tagkeys/${encodeURIComponent(item.tagKey2.tagKey)}/tag/${encodeURIComponent(\n item.tagKey2.tagKey\n )}:${encodeURIComponent(item.tagKey2.tagValue)}/carbon`}},[_vm._v(_vm._s(item.tagKey2.tagValue))])]}},{key:`item.tagKey3`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/explore/tagkeys/${encodeURIComponent(item.tagKey3.tagKey)}/tag/${encodeURIComponent(\n item.tagKey3.tagKey\n )}:${encodeURIComponent(item.tagKey3.tagValue)}/carbon`}},[_vm._v(_vm._s(item.tagKey3.tagValue))])]}},_vm._l((_vm.usageHeaders),function(slot,i){return {key:`item.${slot.value}`,fn:function({ item }){return [_c('p',{key:i,staticClass:\"pa-0 ma-0\"},[_vm._v(\" \"+_vm._s((item.co2e[slot.value] || 0).toFixed(8))+\" t CO2e \"),_c('br'),_c('span',{staticClass:\"text-caption grey--text\"},[_vm._v(\" \"+_vm._s((item.kwH[slot.value] || 0).toFixed(4))+\" kWh \")])])]}}})],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Downloader from '@/lib/Downloader';\r\nimport moment from '@/lib/moment';\r\nimport { IAllTagsRequestResult, ICO2EByTagResult, ITagDimension } from '@/models';\r\n\r\nexport const convertAllTagsResultToLookup = (result: IAllTagsRequestResult): { [tagId: string]: string } => {\r\n return result.data.reduce((obj, item) => {\r\n obj[`${item.key}:${item.value}`] = item.id;\r\n return obj;\r\n }, {});\r\n};\r\n\r\nexport const convertCarbonByTagResultToDimensions = (result: ICO2EByTagResult): ITagDimension[] => {\r\n if (!result?.data?.length) return [];\r\n return result.data[0].rowDimensions;\r\n};\r\n\r\nexport interface ITagCarbonTableItemViewModel {\r\n tagKey1: ITagDimension;\r\n tagKey2: ITagDimension | null;\r\n tagKey3: ITagDimension | null;\r\n co2e: { [usageKey: string]: number };\r\n kwH: { [usageKey: string]: number };\r\n}\r\n\r\nexport const convertCarbonByTagResultToItems = (result: ICO2EByTagResult): ITagCarbonTableItemViewModel[] => {\r\n if (!result?.data?.length) {\r\n return [];\r\n }\r\n const rowMap = new Map();\r\n result.data.forEach((item) => {\r\n const usageKey = item.usageDate.substring(0, 7);\r\n const rowKey = ''.concat(\r\n item.rowDimensions[0].tagValue,\r\n item.rowDimensions[1] != null ? item.rowDimensions[1].tagValue : '_null',\r\n item.rowDimensions[2] != null ? item.rowDimensions[2].tagValue : '_null'\r\n );\r\n const co2e = item.co2e;\r\n const kwH = item.kwH;\r\n if (!rowMap.has(rowKey)) {\r\n const row1: ITagCarbonTableItemViewModel = {\r\n tagKey1: item.rowDimensions[0],\r\n tagKey2: item.rowDimensions[1] != null ? item.rowDimensions[1] : null,\r\n tagKey3: item.rowDimensions[2] != null ? item.rowDimensions[2] : null,\r\n co2e: { [usageKey]: co2e },\r\n kwH: { [usageKey]: kwH },\r\n };\r\n rowMap.set(rowKey, row1);\r\n } else {\r\n const row = rowMap.get(rowKey);\r\n row.co2e[usageKey] = co2e;\r\n row.kwH[usageKey] = kwH;\r\n }\r\n });\r\n return [...rowMap.entries()].map(([, v]) => v);\r\n};\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n dimensions: Array,\r\n currencyCode: String,\r\n loading: Boolean,\r\n },\r\n computed: {\r\n usageHeaders() {\r\n return this.headers.filter((h) => !h.value.startsWith('tagKey'));\r\n },\r\n headers() {\r\n if (!this.dimensions || !this.items) return [];\r\n\r\n const headers = [];\r\n this.dimensions.forEach((d: ITagDimension | undefined | null, i: number) => {\r\n if (d) {\r\n headers.push({\r\n text: d.tagKey,\r\n value: `tagKey${i + 1}`,\r\n sortable: true,\r\n index: new Date(-8640000000000000 + i),\r\n });\r\n }\r\n });\r\n\r\n const headerMap = new Set();\r\n this.items.forEach((item: ITagCarbonTableItemViewModel) => {\r\n Object.keys({ ...item.co2e, ...item.kwH }).forEach((key) => {\r\n if (!headerMap.has(key)) {\r\n headerMap.add(key);\r\n headers.push({\r\n text: key,\r\n value: key,\r\n sortable: false,\r\n index: moment.utc(key).toDate(),\r\n });\r\n }\r\n });\r\n });\r\n return headers.sort((a, b) => a.index - b.index);\r\n },\r\n },\r\n methods: {\r\n exportCsv() {\r\n const headerValues: string[] = this.headers.map((i) => i.value);\r\n const csvValues: string[][] = this.items.map((record: ITagCarbonTableItemViewModel) =>\r\n headerValues.map((header: string) => {\r\n if (header.startsWith('tagKey')) {\r\n const dimension = record[header] as ITagDimension;\r\n return dimension.tagValue;\r\n } else {\r\n return record.co2e[header];\r\n }\r\n })\r\n );\r\n csvValues.unshift(this.headers.map((i) => i.text));\r\n Downloader.exportCSV(csvValues, `TagOverview.csv`);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagCarbonTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagCarbonTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagCarbonTable.vue?vue&type=template&id=126b43bc&\"\nimport script from \"./TagCarbonTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagCarbonTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-footer',[_vm._v(\" Best efforts are made to keep emissions data up to date and accurate, however not all products can be accounted for. To see a breakdown of the total unaccounted emissions data please click here: \"),_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){_vm.isViewingDialog = true}}},[_vm._v(\"View Report\")]),_vm._v(\". \")]),_c('CarbonMissingMappingDialog',{model:{value:(_vm.isViewingDialog),callback:function ($$v) {_vm.isViewingDialog=$$v},expression:\"isViewingDialog\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('CarbonMissingMappingCard',{attrs:{\"loading\":_vm.$wait.is('deleteAccount'),\"items\":_vm.items,\"title\":_vm.$t('carbonMissingMappingDialog.title'),\"subtitle\":_vm.$t('carbonMissingMappingDialog.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer')]},proxy:true}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Product\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Un-accounted spend\")])])]),_c('tbody',_vm._l((_vm.items),function(item,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(item.productName))]),_c('td',[_vm._v(_vm._s(_vm._f(\"currency\")(item.spend,_vm.currencyCode)))])])}),0)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport { useTenantStore } from \"@/stores/tenant\";\r\nimport { storeToRefs } from \"pinia\";\r\nexport default defineComponent({\r\n props: {\r\n loading: Boolean,\r\n items: Array,\r\n title: String,\r\n subtitle: String,\r\n },\r\n setup(_, { emit }) {\r\n const handleInput = (val) => {\r\n emit(\"input\", val);\r\n };\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n return {\r\n valid: ref(false),\r\n currencyCode,\r\n handleInput,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CarbonMissingMappingCard.vue?vue&type=template&id=188cc089&\"\nimport script from \"./CarbonMissingMappingCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonMissingMappingCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CarbonMissingMappingCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CarbonMissingMappingCard from \"@/components/Domain.Carbon/CarbonMissingMappingCard.vue\";\r\nimport { defineComponent, ref, watch } from \"vue\";\r\nimport { getMissingCo2eReport } from \"@/lib/Api\";\r\nimport { ISpendParameters, Granularity } from \"@/models\";\r\nexport default defineComponent({\r\n components: { CarbonMissingMappingCard },\r\n props: {\r\n value: Boolean,\r\n },\r\n setup(p) {\r\n const fromDate = new Date();\r\n fromDate.setMonth(fromDate.getMonth() - 3);\r\n const fixedParameters: Partial = {\r\n fromDate: fromDate.toISOString(),\r\n toDate: new Date().toISOString(),\r\n granularity: Granularity.monthly,\r\n };\r\n const items = ref([]);\r\n watch(\r\n () => p.value,\r\n async (val, oldVal) => {\r\n if (!val || oldVal) return;\r\n getMissingCo2eReport(fixedParameters).then((r) => {\r\n items.value = r;\r\n });\r\n },\r\n { immediate: true }\r\n );\r\n\r\n return { items };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingDialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingMappingDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CarbonMissingMappingDialog.vue?vue&type=template&id=6191d0ff&\"\nimport script from \"./CarbonMissingMappingDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonMissingMappingDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CarbonMissingMappingDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport CarbonMissingMappingDialog from \"@/components/Domain.Carbon/CarbonMissingMappingDialog.vue\";\r\n\r\nexport default defineComponent({\r\n components: { CarbonMissingMappingDialog },\r\n setup() {\r\n const isViewingDialog = ref(false);\r\n return { isViewingDialog };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonMissingFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CarbonMissingFooter.vue?vue&type=template&id=586b72c8&\"\nimport script from \"./CarbonMissingFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonMissingFooter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { defineComponent } from 'vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport moment from '@/lib/moment';\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n} from '@/components/Domain.Carbon/CarbonBarChart.vue';\r\nimport { convertSpendOptionsToQuery } from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport TagCarbonTable, {\r\n convertCarbonByTagResultToDimensions,\r\n convertCarbonByTagResultToItems,\r\n} from '@/components/Domain.Tags/TagCarbonTable.vue';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { ICO2EByTagResult, Granularity } from '@/models';\r\nimport { getCO2e, getForecastCO2e } from '@/lib/Api';\r\nimport CarbonMissingFooter from '@/components/Domain.Carbon/CarbonMissingFooter.vue';\r\nimport Config from '@/lib/Config';\r\n\r\nexport default defineComponent({\r\n props: ['me'],\r\n title(ctx) {\r\n return ctx.$t('carbonDashboard.title');\r\n },\r\n components: {\r\n CarbonBarChart,\r\n TagCarbonTable,\r\n CarbonMissingFooter,\r\n },\r\n created() {\r\n this.getTagCarbonData();\r\n this.getFixedCO2EForTenant(this.fixedCarbonOptions);\r\n this.getRecommendationSummary();\r\n this.getRecommendationStatus();\r\n },\r\n data() {\r\n return {\r\n thisMonthName: moment.utc().format('MMMM'),\r\n lastMonthName: moment.utc().add(-1, 'months').format('MMMM'),\r\n\r\n currentTotalCo2E: 0.0,\r\n currentTotalKwH: 0.0,\r\n lastMonthCo2e: 0.0,\r\n lastMonthKwH: 0.0,\r\n\r\n cummulativeCo2E: 0.0,\r\n cummulativeKwH: 0.0,\r\n\r\n fixedCarbonOptions: {\r\n dateRangeKey: '12m',\r\n granularity: Granularity.monthly,\r\n topXResults: 30,\r\n segregateBy: 'products',\r\n },\r\n newChartData: { datasets: [], labels: [] },\r\n maxDate: undefined,\r\n datasetIndexes: null,\r\n tagTableItems: [],\r\n tagTableDimensions: [],\r\n recommendationSummary: {},\r\n recommendationStatus: {},\r\n\r\n isUsageDatasetWarningOpen: false,\r\n supportEmail: Config.get().SUPPORT_EMAIL,\r\n };\r\n },\r\n watch: {\r\n carbonOptions: {\r\n handler(options) {\r\n if (!options) return;\r\n if (this.$wait.is('getTenantMonthlyCO2E')) return;\r\n this.getCO2EForTenant(options);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n recommendationStatusText() {\r\n if (this.$wait.is('getRecommendationStatus') || !this.recommendationStatus) {\r\n return this.$t('dashboard.recommendationStatus.loading');\r\n }\r\n const value = this.recommendationStatus.credentialStatus;\r\n if (value === undefined) {\r\n return this.$t('dashboard.recommendationStatus.unknown');\r\n }\r\n if (value === 0 || value === 'Unavailable') {\r\n return this.$t('dashboard.recommendationStatus.unavailable');\r\n }\r\n if (value === 1 || value === 'AllGood') {\r\n return this.$t('dashboard.recommendationStatus.allGood');\r\n }\r\n if (value === 2 || value === 'PartiallyGood') {\r\n return this.$t('dashboard.recommendationStatus.partiallyGood');\r\n }\r\n if (value === 3 || value === 'ActionRequired') {\r\n return this.$t('dashboard.recommendationStatus.actionRequired');\r\n }\r\n return this.$t('dashboard.recommendationStatus.unknown');\r\n },\r\n },\r\n methods: {\r\n getFixedCO2EForTenant: waitFor('getTenantMonthlyCO2E', async function getFixedCO2EForTenant(options) {\r\n const usageParams = convertSpendOptionsToQuery(options);\r\n if (!usageParams) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(options.segregateBy, usageParams),\r\n getForecastCO2e(usageParams, options.dateRangeKey),\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(carbonResponse);\r\n this.datasetIndexes = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n this.newChartData = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n this.maxDate = forecastResponse?.maxUsageDate || usageParams.toDate;\r\n this.cummulativeCo2E = carbonResponse.totalCO2E;\r\n this.cummulativeKwH = carbonResponse.totalKwH;\r\n const tm = moment.utc();\r\n const lm = moment.utc().add(-1, 'months');\r\n this.currentTotalCo2E = carbonResponse.monthlyCO2ETotals?.[tm.format('YYYY')]?.[tm.format('MM')] || 0.0;\r\n this.currentTotalKwH = carbonResponse.monthlyKwHTotals?.[tm.format('YYYY')]?.[tm.format('MM')] || 0.0;\r\n this.lastMonthCo2e = carbonResponse.monthlyCO2ETotals?.[lm.format('YYYY')]?.[lm.format('MM')] || 0.0;\r\n this.lastMonthKwH = carbonResponse.monthlyKwHTotals?.[lm.format('YYYY')]?.[lm.format('MM')] || 0.0;\r\n }),\r\n getTagCarbonData: waitFor('loadingTagCarbon', async function loadTagSpend() {\r\n try {\r\n const min = moment.utc().add(-3, 'months').startOf('month').toISOString();\r\n const max = moment.utc().endOf('month').toISOString();\r\n const dims = this.tenantStore.getHierarchy().join(',');\r\n const tagUsageData: ICO2EByTagResult = await ApiV2.http\r\n .get(`/api/report/tagoverview/co2e?min=${min}&max=${max}&dimensions=${dims}`)\r\n .then((resp) => resp.data);\r\n this.tagTableItems = convertCarbonByTagResultToItems(tagUsageData);\r\n this.tagTableDimensions = convertCarbonByTagResultToDimensions(tagUsageData);\r\n } catch (err) {\r\n toastError('There was an issue loading the data.');\r\n this.tagTableItems = [];\r\n this.tagTableDimensions = [];\r\n this.tagChartItems = [];\r\n this.filterPanels = 0;\r\n }\r\n }),\r\n handleDatasetClicked({ index, isOther }) {\r\n if (isOther) {\r\n this.fixedCarbonOptions.topXResults = this.fixedCarbonOptions.topXResults + 10;\r\n } else if (this.fixedCarbonOptions.segregateBy?.startsWith('tags') || false) {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n const tag = `${encodeURIComponent(this.tagKey)}:${encodeURIComponent(datasetGroupId)}`;\r\n this.$router.push(`/emissions/overview/tagkeys/${encodeURIComponent(this.tagKey)}/tag/${tag}/carbon`);\r\n } else {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n this.$router.push(\r\n `/emissions/overview/${this.fixedCarbonOptions.segregateBy}/${datasetGroupId}/carbon`\r\n );\r\n }\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/emissions/overview');\r\n this.$title = this.$t('carbonDashboard.title');\r\n },\r\n getRecommendationSummary: waitFor('getRecommendationSummary', async function getRecommendationSummary() {\r\n if (this.tenantStore.features.includes('Recommendations/View')) {\r\n this.recommendationSummary = await ApiV2.http\r\n .get('/api/recommendations/summary')\r\n .then((r) => r.data.data);\r\n } else {\r\n this.recommendationSummary = {};\r\n }\r\n }),\r\n getRecommendationStatus: waitFor('getRecommendationStatus', async function getRecommendationStatus() {\r\n if (this.tenantStore.features.includes('Recommendations/View')) {\r\n this.recommendationStatus = await ApiV2.http\r\n .get('/api/recommendations/credentialstatus')\r\n .then((r) => r.data);\r\n } else {\r\n this.recommendationStatus = {};\r\n }\r\n }),\r\n handleSavingsClicked() {\r\n const { hasUsageDataset } = useDatasetState(this.tenantStore);\r\n if (hasUsageDataset) {\r\n if (this.recommendationStatus.credentialStatus > 1) {\r\n this.$router.push('/settings');\r\n } else {\r\n this.$router.push('/recommendations');\r\n }\r\n } else {\r\n this.isUsageDatasetWarningOpen = true;\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Overview.vue?vue&type=template&id=3b15f206&\"\nimport script from \"./Overview.vue?vue&type=script&lang=ts&\"\nexport * from \"./Overview.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Overview.vue?vue&type=style&index=0&id=3b15f206&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Overview.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('emissionsExplorer.title'),\"icon\":\"insights\",\"extended\":\"\"}},[_c('v-tabs',{attrs:{\"background-color\":\"transparent\",\"align-with-title\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.tabs),function(t){return _c('v-tab',{key:t.key,attrs:{\"to\":t.to,\"disabled\":_vm.$wait.is('gettingCarbonRecords')}},[(t.icon)?_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(_vm._s(t.icon))]):_vm._e(),_vm._v(\" \"+_vm._s(t.title)+\" \")],1)}),1)],1),_c('v-container',[_c('content-card',{attrs:{\"title\":_vm.chartTitle,\"title-icon\":\"co2\",\"loading\":_vm.$wait.is('gettingCarbonRecords')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"aria-label\":\"Star explorer tab\",\"title\":\"Star explorer tab\",\"role\":\"button\"},on:{\"click\":function($event){_vm.starred = !_vm.starred}}},[_c('v-icon',{attrs:{\"color\":_vm.starred ? 'yellow' : undefined}},[_vm._v(\"star\")])],1)]},proxy:true}])},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{attrs:{\"loading\":_vm.$wait.is('gettingCarbonRecords'),\"date-supported-keys\":['30d', '60d', '6m', 'custom'],\"hide-segregation\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.carbonOptions),callback:function ($$v) {_vm.carbonOptions=$$v},expression:\"carbonOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.carbonOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{attrs:{\"items\":_vm.groupingItems,\"currency-code\":_vm.tenantStore.currencyCode,\"segregate-by\":_vm.carbonOptions.segregateBy,\"name-header-title\":_vm.currentHeaderName,\"tag-key\":_vm.tagKey}})],1)],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{staticClass:\"my-2\"},[(!_vm.hideExport)?_c('template',{slot:\"title-actions\"},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.exportCsv()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_download\")]),_vm._v(\" \"+_vm._s(_vm.$t('carbonTable.exportText.btnText'))+\" \")],1)],1):_vm._e(),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.records,\"loading\":_vm.loading,\"dense\":\"\",\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"items-per-page\":_vm.itemsPerPage,\"hide-default-footer\":_vm.hideDefaultFooter},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event}},scopedSlots:_vm._u([{key:`item.name`,fn:function({ item }){return [(_vm.segregateBy === 'meters')?_c('p',{staticClass:\"pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(item.name)+\" \"),_c('br'),_c('span',{staticClass:\"text-caption grey--text\"},[_vm._v(\" \"+_vm._s(item.unit)+\" \")])]):(item.isOther || _vm.items.noFollow || _vm.disableLinks)?_c('span',[_vm._v(\" \"+_vm._s(item.name))]):(_vm.segregateBy == 'tags')?_c('router-link',{attrs:{\"to\":`/emissions/explore/tagkeys/${encodeURIComponent(_vm.tagKey)}/tag/${encodeURIComponent(\n item.id\n )}/carbon`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")]):_c('router-link',{attrs:{\"to\":`/emissions/explore/${_vm.segregateBy}/${item.id}/carbon`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:`item.totalCO2e`,fn:function({ item }){return [_c('p',{staticClass:\"pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(item.totalCO2e.toFixed(8))+\" t CO2e \"),_c('br'),(!_vm.hideKwh)?_c('span',{staticClass:\"text-caption grey--text\"},[_vm._v(\" \"+_vm._s((item.totalKwH || 0).toFixed(4))+\" kWh \")]):_vm._e()])]}},_vm._l((_vm.monthSlots),function(slot,i){return {key:slot.itemSlotName,fn:function({ item }){return [_c('p',{key:i + '_p',staticClass:\"pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(item[slot.itemValuePropName].toFixed(8))+\" t CO2e \"),_c('br'),(!_vm.hideKwh)?_c('span',{staticClass:\"text-caption grey--text\"},[_vm._v(\" \"+_vm._s((item[slot.itemValuePropName + '_kWh'] || 0).toFixed(4))+\" kWh \")]):_vm._e()])]}}})],null,true)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport moment from '@/lib/moment';\r\nimport Downloader from '@/lib/Downloader';\r\nimport { ISpendParameters, ICO2EResult, ICO2EAndConsumptionGroup, ISpendResult, ISpendAndConsumptionGroup } from '@/models';\r\n\r\nexport interface ICarbonTableItemViewModel {\r\n id: string;\r\n name: string;\r\n totalCO2e: number;\r\n totalKwH: number;\r\n isOther: boolean;\r\n totalConsumption: number;\r\n unit: string;\r\n}\r\n\r\nexport interface ICarbonTableSlotViewModel {\r\n header: string;\r\n year: string;\r\n month: string;\r\n itemSlotName: string;\r\n itemValuePropName: string;\r\n}\r\n\r\nexport interface ICarbonTableRecordsViewModel {\r\n monthSlots: ICarbonTableSlotViewModel[];\r\n records: ICarbonTableItemViewModel[];\r\n}\r\n\r\nexport function convertToEmissionsItemRecords(params:ISpendParameters, response: ISpendResult | null): ICarbonTableRecordsViewModel {\r\n const monthSlots = slotsForMonthColumns(params);\r\n\r\n const records = [];\r\n for (const r of response.groupings) {\r\n const record: ICarbonTableItemViewModel | { [key: string]: number } = {\r\n id: r.id,\r\n name: r.name,\r\n totalCO2e: r.totalCo2e || 0.0,\r\n totalKwH: r.totalKwH || 0.0,\r\n totalConsumption: r.totalConsumption,\r\n isOther: r.isOther,\r\n unit: r.unit || '',\r\n };\r\n for (const slot of monthSlots) {\r\n const monthlyCO2eForYear = (r.monthlyCO2eTotals || {})[slot.year] || {};\r\n const monthlyKwHForYear = (r.monthlyKwHTotals || {})[slot.year] || {};\r\n if (monthlyCO2eForYear) {\r\n record[slot.itemValuePropName] = monthlyCO2eForYear[slot.month] || 0;\r\n record[slot.itemValuePropName + '_kWh'] = monthlyKwHForYear[slot.month] || null;\r\n } else {\r\n record[slot.itemValuePropName] = 0;\r\n record[slot.itemValuePropName + '_kWh'] = null;\r\n }\r\n }\r\n records.push(record);\r\n }\r\n\r\n return { monthSlots, records };\r\n}\r\n\r\nexport function convertToItemRecords(\r\n params: ISpendParameters,\r\n response: ICO2EResult\r\n): ICarbonTableRecordsViewModel {\r\n const monthSlots = slotsForMonthColumns(params);\r\n\r\n const records = [];\r\n for (const r of response.groupings) {\r\n const record: ICarbonTableItemViewModel | { [key: string]: number } = {\r\n id: r.id,\r\n name: r.name,\r\n totalCO2e: r.totalCo2e,\r\n totalKwH: r.totalKwH,\r\n totalConsumption: r.totalConsumption,\r\n isOther: r.isOther,\r\n unit: r.unit || '',\r\n };\r\n for (const slot of monthSlots) {\r\n const monthlyCO2eForYear = (r.monthlyCO2eTotals || {})[slot.year] || {};\r\n const monthlyKwHForYear = (r.monthlyKwHTotals || {})[slot.year] || {};\r\n if (monthlyCO2eForYear) {\r\n record[slot.itemValuePropName] = monthlyCO2eForYear[slot.month] || 0;\r\n record[slot.itemValuePropName + '_kWh'] = monthlyKwHForYear[slot.month] || null;\r\n } else {\r\n record[slot.itemValuePropName] = 0;\r\n record[slot.itemValuePropName + '_kWh'] = null;\r\n }\r\n }\r\n records.push(record);\r\n }\r\n\r\n return { monthSlots, records };\r\n}\r\n\r\nfunction slotsForMonthColumns(params: ISpendParameters): ICarbonTableSlotViewModel[] {\r\n const fromDate = moment.utc(params.fromDate);\r\n const toDate = moment.utc(params.toDate);\r\n const fromMonth = moment.utc(params.fromDate).startOf('month');\r\n const toMonth = moment.utc(params.toDate).startOf('month');\r\n\r\n const slots = [];\r\n let date = fromMonth;\r\n for (let i = 0; !date.isAfter(toMonth); ++i) {\r\n const monthYear = date.format('MMM YYYY');\r\n const endOfMonth = date.endOf('month');\r\n\r\n let partialFromDayOfMonth;\r\n if (fromDate.isAfter(date, 'day')) {\r\n // The filter from date is after the start of this month.\r\n partialFromDayOfMonth = fromDate.format('D');\r\n }\r\n\r\n let partialToDayOfMonth;\r\n if (toDate.isBefore(endOfMonth, 'day')) {\r\n // The filter to date is before the end of this month.\r\n partialToDayOfMonth = toDate.format('D');\r\n }\r\n\r\n let header: string;\r\n if (partialFromDayOfMonth && partialToDayOfMonth) {\r\n // This month is partial on both sides.\r\n header = `${partialFromDayOfMonth}-${partialToDayOfMonth} ${monthYear}`;\r\n } else if (partialFromDayOfMonth) {\r\n // This month is partial, starting somewhere in the middle.\r\n header = `${partialFromDayOfMonth}-${endOfMonth.format('D')} ${monthYear}`;\r\n } else if (partialToDayOfMonth) {\r\n // This month is partial, ending somewhere in the middle.\r\n header = `${date.format('D')}-${partialToDayOfMonth} ${monthYear}`;\r\n } else {\r\n // This is a full month's worth of charges.\r\n header = monthYear;\r\n }\r\n\r\n const slot = {\r\n header,\r\n // Keys for navigating the API response:\r\n year: date.format('YYYY'),\r\n month: date.format('MM'),\r\n // Vue data table slots:\r\n itemSlotName: `item.month${i}`,\r\n itemValuePropName: `month${i}`,\r\n };\r\n slots.push(slot);\r\n date = date.add(1, 'M');\r\n }\r\n return slots;\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Object,\r\n loading: Boolean,\r\n segregateBy: String,\r\n nameHeaderTitle: String,\r\n tagKey: String,\r\n cardTitleText: String,\r\n itemsPerPage: {\r\n type: Number,\r\n default: 10,\r\n },\r\n disableLinks: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n hideDefaultFooter: Boolean,\r\n hideExport: Boolean,\r\n hideKwh: Boolean\r\n },\r\n data() {\r\n return {\r\n sortBy: 'totalCO2e',\r\n sortDesc: true,\r\n };\r\n },\r\n computed: {\r\n headers() {\r\n const headers = [{ text: this.nameHeaderTitle || 'Name', value: 'name' }];\r\n const monthSlots = this.items?.monthSlots || [];\r\n for (const slot of monthSlots) {\r\n headers.push({ text: slot.header, value: slot.itemValuePropName });\r\n }\r\n headers.push({ text: 'Total', value: 'totalCO2e' });\r\n return headers;\r\n },\r\n records() {\r\n return this.items?.records || [];\r\n },\r\n monthSlots() {\r\n return this.items?.monthSlots || [];\r\n },\r\n },\r\n methods: {\r\n exportCsv() {\r\n const headerValues = this.headers.map((i) => i.value);\r\n const csvValues = this.records.map((i) => headerValues.map((k) => i[k]));\r\n csvValues.unshift(this.headers.map((i) => i.text));\r\n Downloader.exportCSV(csvValues, 'usage-by-' + this.segregateBy + '.csv');\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CarbonTable.vue?vue&type=template&id=6f7cd5fc&\"\nimport script from \"./CarbonTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import Dexie, { Table } from 'dexie';\r\nimport { stringToUint, blobToString } from '@/lib/Uint';\r\n\r\nexport interface IKeyedBlobModel {\r\n key: string;\r\n value: Blob;\r\n}\r\n\r\nexport class KeyedBlobsDb extends Dexie {\r\n blobs!: Table;\r\n constructor() {\r\n super('keyedBlobs');\r\n this.version(1).stores({\r\n blobs: 'key',\r\n });\r\n }\r\n\r\n async listBlobsWithPrefix(prefix: string): Promise<[string, Blob][]> {\r\n const blobs = await this.blobs.where('key').startsWith(prefix).toArray();\r\n return blobs.map((b) => [b.key, b.value]);\r\n }\r\n\r\n async getBlob(key: string): Promise {\r\n return await this.blobs.get(key).then((r) => r?.value || null);\r\n }\r\n\r\n async getJson(key:string): Promise {\r\n const blob = await this.getBlob(key);\r\n if (!blob) return null;\r\n const json = await blob.text();\r\n return JSON.parse(json);\r\n }\r\n\r\n async putJson(key:string, data:TType): Promise {\r\n const jsonString = JSON.stringify(data);\r\n const jsonBlob = new Blob([jsonString], { type: 'application/json' });\r\n return this.putBlob(key, jsonBlob);\r\n }\r\n\r\n async putBlob(key: string, value: Blob): Promise {\r\n await this.blobs.put({ key, value }, key);\r\n }\r\n\r\n async listDocsWithPrefix(prefix: string): Promise<[string, TType][]> {\r\n const blobs = await this.listBlobsWithPrefix(prefix);\r\n const docs: [string, TType][] = [];\r\n for (const [key, blob] of blobs) {\r\n const buffer = await blob.arrayBuffer();\r\n const array = new Uint8Array(buffer).toString();\r\n const doc = JSON.parse(array) as TType;\r\n docs.push([key, doc]);\r\n }\r\n return docs;\r\n }\r\n\r\n async getDoc(key: string): Promise {\r\n const blob = await this.getBlob(key);\r\n if (!blob) return null;\r\n const stringBlob = (await blobToString(blob)) as string;\r\n\r\n return JSON.parse(stringBlob);\r\n }\r\n\r\n async putDoc(key: string, doc: TType): Promise {\r\n const array = await stringToUint(JSON.stringify(doc));\r\n const blob = new Blob([array]);\r\n await this.putBlob(key, blob);\r\n }\r\n\r\n async changeDoc(\r\n key: string,\r\n p: { changeFn?: (doc: TType) => TType | void; initFn: () => TType }\r\n ): Promise {\r\n // TODO: Want to use dexie tx's just hitting issue w/ `blob.arrayBuffer` promise.\r\n const { changeFn, initFn } = p;\r\n\r\n let doc1: TType = await this.getDoc(key),\r\n doc2 = doc1;\r\n\r\n let inited = false;\r\n if (!doc1) {\r\n doc1 = initFn();\r\n inited = true;\r\n }\r\n let changed = false;\r\n if (changeFn) {\r\n const result = changeFn(doc1);\r\n if (result) {\r\n doc2 = result;\r\n changed = true;\r\n }\r\n }\r\n if (inited || (doc2 && changed)) {\r\n await this.putDoc(key, doc2 || doc1);\r\n }\r\n const final = doc2 || doc1;\r\n return final;\r\n }\r\n}\r\n\r\nexport default new KeyedBlobsDb();\r\n","import KeyedBlobs from \"@/databases/KeyedBlobsDb\";\r\n\r\nexport interface IUserPreferences {\r\n costExplorerTab?: string | number | null;\r\n starredCostExplorerTab?: string | number | null;\r\n}\r\n\r\nexport const getUserPreferences = async (): Promise => {\r\n return KeyedBlobs.getJson(\"CC:UserPreferences\");\r\n};\r\n\r\nexport const setUserPreferences = async (preferences: IUserPreferences) => {\r\n return KeyedBlobs.putJson(\"CC:UserPreferences\", preferences);\r\n};\r\n","\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n} from '@/components/Domain.Carbon/CarbonBarChart.vue';\r\nimport CarbonTable, { convertToItemRecords } from '@/components/Domain.Carbon/CarbonTable.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n calculateOptionsDescription,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { defineComponent } from 'vue';\r\nimport { Granularity, PluralEntityType } from '@/models';\r\nimport { getCO2e, getForecastCO2e } from '@/lib/Api';\r\nimport { setUserPreferences, getUserPreferences } from '@/lib/UserPreferences';\r\n\r\nconst getSegregateByFromRoute = (route) => {\r\n let path = route.path.toLowerCase();\r\n if (route.params.baseTenantId) {\r\n path = path\r\n .split('/')\r\n .filter((x) => x != route.params.baseTenantId)\r\n .join('/');\r\n }\r\n if (path.startsWith('/emissions/explore/services')) {\r\n return 'services';\r\n } else if (path.startsWith('/emissions/explore/subscriptions')) {\r\n return 'subscriptions';\r\n } else if (path.startsWith('/emissions/explore/cloudaccounts')) {\r\n return 'cloudaccounts';\r\n } else if (path.startsWith('/emissions/explore/products')) {\r\n return 'products';\r\n } else if (path.startsWith('/emissions/explore/tagkeys')) {\r\n return 'tags';\r\n } else if (path.startsWith('/emissions/explore/productcategories')) {\r\n return 'productcategories';\r\n } else {\r\n return 'subscriptions';\r\n }\r\n};\r\n\r\nexport default defineComponent({\r\n components: { CarbonBarChart, SpendUsageOptionsToolbarForm, CarbonTable },\r\n title(ctx) {\r\n return ctx.$t('emissionsExplorer.title');\r\n },\r\n data() {\r\n return {\r\n tab: null,\r\n tagKey: this.$route.params.tagkey,\r\n carbonOptions: {\r\n dateRangeKey: '60d',\r\n granularity: Granularity.daily,\r\n topXResults: 25,\r\n segregateBy: getSegregateByFromRoute(this.$route),\r\n },\r\n carbonRecords: {},\r\n groupingItems: {},\r\n datasetIndexes: {},\r\n newChartData: { labels: [], datasets: [] },\r\n maxDate: undefined,\r\n starred: false,\r\n };\r\n },\r\n watch: {\r\n carbonOptions: {\r\n handler(options) {\r\n if (!options) return;\r\n if (this.$wait.is('gettingCarbonRecords')) return;\r\n this.getCarbonRecords(options);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n $route: {\r\n async handler(route) {\r\n if (!route) return;\r\n this.tagKey = route.params.tagkey;\r\n const newSegregateBy = getSegregateByFromRoute(route);\r\n if (this.carbonOptions.segregateBy !== newSegregateBy) {\r\n this.carbonRecords = null;\r\n this.groupingItems = null;\r\n this.carbonOptions.segregateBy = newSegregateBy;\r\n }\r\n const newTabKey = this.tabKey;\r\n const preferences = await getUserPreferences();\r\n preferences.costExplorerTab = newTabKey;\r\n this.starred = preferences.starredCostExplorerTab === preferences.costExplorerTab;\r\n await setUserPreferences(preferences);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n async starred(isStarred) {\r\n const preferences = await getUserPreferences();\r\n preferences.starredCostExplorerTab = isStarred\r\n ? this.tabKey\r\n : this.tabKey === preferences.starredCostExplorerTab\r\n ? null\r\n : preferences.starredCostExplorerTab;\r\n await setUserPreferences(preferences);\r\n },\r\n tagKey: {\r\n handler(newTagKey, oldTagKey) {\r\n if (!oldTagKey) return;\r\n this.getCarbonRecords(this.carbonOptions);\r\n },\r\n },\r\n },\r\n computed: {\r\n tabKey() {\r\n const newSegregateBy = getSegregateByFromRoute(this.$route);\r\n return newSegregateBy?.startsWith('tags') || false\r\n ? `tagkeys/${encodeURIComponent(this.tagKey)}`\r\n : newSegregateBy.toLowerCase();\r\n },\r\n chartTitle() {\r\n return calculateOptionsDescription(this.carbonOptions, (...params) => this.$t(...params));\r\n },\r\n currentHeaderName() {\r\n return this.headerName(this.carbonOptions.segregateBy);\r\n },\r\n tabs() {\r\n const prefix = this.$route.params.baseTenantId ? `/${this.$route.params.baseTenantId}` : '';\r\n const tabs = [\r\n {\r\n title: this.$t('emissionsExplorer.tabs.products'),\r\n key: 'products',\r\n to: `${prefix}/emissions/explore/products`,\r\n icon: 'shopping_cart',\r\n },\r\n {\r\n title: this.$t('emissionsExplorer.tabs.resources'),\r\n key: 'resources',\r\n to: `${prefix}/emissions/explore/services`,\r\n icon: 'memory',\r\n },\r\n {\r\n title: this.$t('emissionsExplorer.tabs.subscriptions'),\r\n key: 'subscriptions',\r\n to: `${prefix}/emissions/explore/subscriptions`,\r\n icon: 'cloud_queue',\r\n },\r\n {\r\n title: this.$t('emissionsExplorer.tabs.cloudaccounts'),\r\n key: 'cloudaccounts',\r\n to: `${prefix}/emissions/explore/cloudaccounts`,\r\n icon: 'cloud_download',\r\n },\r\n ];\r\n if (this.tenantStore.tagKey1) {\r\n tabs.push({\r\n title: this.tenantStore.tagKey1,\r\n key: this.tenantStore.tagKey1,\r\n to: `${prefix}/emissions/explore/tagkeys/${encodeURIComponent(this.tenantStore.tagKey1)}`,\r\n icon: 'sell',\r\n });\r\n }\r\n if (this.tenantStore.tagKey2) {\r\n tabs.push({\r\n title: this.tenantStore.tagKey2,\r\n key: this.tenantStore.tagKey2,\r\n to: `${prefix}/emissions/explore/tagkeys/${encodeURIComponent(this.tenantStore.tagKey2)}`,\r\n icon: 'sell',\r\n });\r\n }\r\n if (this.tenantStore.tagKey3) {\r\n tabs.push({\r\n title: this.tenantStore.tagKey3,\r\n key: this.tenantStore.tagKey3,\r\n to: `${prefix}/emissions/explore/tagkeys/${encodeURIComponent(this.tenantStore.tagKey3)}`,\r\n icon: 'sell',\r\n });\r\n }\r\n return tabs;\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n handleDialogChange(isOpen) {\r\n const prefix = this.$route.params.baseTenantId ? `/${this.$route.params.baseTenantId}` : '';\r\n if (isOpen) return;\r\n if (this.carbonOptions.segregateBy === PluralEntityType.tags) {\r\n this.$router.push(`${prefix}/emissions/explore/tagkeys/${encodeURIComponent(this.tagKey)}`);\r\n } else {\r\n this.$router.push(`/emissions/explore/${this.carbonOptions.segregateBy}`);\r\n }\r\n this.$title = this.$t('emissionsExplorer.title');\r\n },\r\n headerName(by) {\r\n return this.$t('emissionsExplorer.headers.' + by);\r\n },\r\n getCarbonRecords: waitFor('gettingCarbonRecords', async function getCarbonRecords(options: SpendUsageOptions) {\r\n const params = convertSpendOptionsToQuery(options);\r\n if (!params) return;\r\n const segregateBy = this.carbonOptions.segregateBy as PluralEntityType;\r\n if (segregateBy === PluralEntityType.tags) {\r\n params.tagKeyValue = this.tagKey ? `${this.tagKey}:` : null;\r\n }\r\n const [carbonResponse, projectionResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey),\r\n ]);\r\n const projectionsDataset = convertProjectionsResponseToDataset(projectionResponse);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(carbonResponse);\r\n this.newChartData = {\r\n labels: [...usageDataset.labels, ...projectionsDataset.labels],\r\n datasets: [...usageDataset.datasets, ...projectionsDataset.datasets],\r\n };\r\n this.maxDate = projectionResponse?.maxUsageDate || params.toDate;\r\n this.datasetIndexes = datasetIndexes;\r\n this.groupingItems = convertToItemRecords(params, carbonResponse);\r\n }),\r\n handleDatasetClicked({ index, isOther }) {\r\n if (isOther) {\r\n this.carbonOptions.topXResults = this.carbonOptions.topXResults + 10;\r\n } else if (this.carbonOptions.segregateBy?.startsWith('tags') || false) {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n const tag = `${encodeURIComponent(this.tagKey)}:${encodeURIComponent(datasetGroupId)}`;\r\n this.$router.push(`/emissions/explore/tagkeys/${encodeURIComponent(this.tagKey)}/tag/${tag}/carbon`);\r\n } else {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n this.$router.push(`/emissions/explore/${this.carbonOptions.segregateBy}/${datasetGroupId}/carbon`);\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Explorer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Explorer.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Explorer.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Explorer.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Explorer.vue?vue&type=template&id=5f2cc739&\"\nimport script from \"./Explorer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Explorer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Explorer.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport * as ChartFactory from '@/highcharts/MapFactory';\r\nimport { IRegionCO2EResult, IRegionResult } from '@/models';\r\n\r\nexport interface IRegionClickedEventData {\r\n regionName: string;\r\n providerType: string;\r\n}\r\n\r\nexport enum SupportedSlices {\r\n co2e = 'co2e',\r\n kwh = 'kwh',\r\n intensity = 'intensity',\r\n}\r\n\r\nexport const convertRegionResultsToChartSeries = (\r\n costs: IRegionCO2EResult,\r\n regions: IRegionResult[],\r\n type: SupportedSlices\r\n) => {\r\n const regionTotals = costs.data.reduce((agg, val) => {\r\n const key = `${val.providerType}:${val.regionName}`.toUpperCase();\r\n if (type === SupportedSlices.co2e) agg[key] = val.co2e;\r\n else if (type === SupportedSlices.kwh) agg[key] = val.kwH;\r\n else if (type === SupportedSlices.intensity) agg[key] = val.co2e / val.kwH || 0;\r\n return agg;\r\n }, {});\r\n let suffix: string;\r\n if (type === SupportedSlices.co2e) suffix = 'CO2e';\r\n else if (type === SupportedSlices.intensity) suffix = 'intensity';\r\n else if (type === SupportedSlices.kwh) suffix = 'kWh';\r\n const series = Object.values(\r\n regions.reduce((obj, region) => {\r\n const regionTotalKey = `${region.providerType}:${region.name}`.toUpperCase();\r\n if (!regionTotals[regionTotalKey]) return obj;\r\n\r\n const providerType = region.providerType;\r\n const regionData = (obj[providerType] =\r\n obj[providerType] || ChartFactory.createMapSeriesRecord(providerType, suffix));\r\n\r\n if (region.lat) {\r\n regionData.data.push(\r\n ChartFactory.createMapSeriesChildRecord(\r\n region.id,\r\n region.name || 'Unknown',\r\n providerType,\r\n region.lat,\r\n region.long,\r\n regionTotals[regionTotalKey]\r\n )\r\n );\r\n }\r\n return obj;\r\n }, {})\r\n );\r\n series.unshift({\r\n name: 'Countries',\r\n color: '#E0E0E0',\r\n enableMouseTracking: false,\r\n showInLegend: false,\r\n });\r\n return series;\r\n};\r\n\r\nexport default defineComponent({\r\n props: { items: Array, intensity: Boolean },\r\n setup(p, { emit }) {\r\n const FIXED_OPTIONS = ChartFactory.createMapChart({\r\n events: {\r\n pointClicked(eventData) {\r\n const outgoingEventData: IRegionClickedEventData = {\r\n regionName: eventData.name,\r\n providerType: eventData.series.name,\r\n };\r\n emit('click', outgoingEventData);\r\n },\r\n },\r\n });\r\n const standardOptions = ref({ ...FIXED_OPTIONS });\r\n const intensityOptions = ref({ ...FIXED_OPTIONS, colorAxis: [ChartFactory.createCarbonColorAxis(0.00064)] });\r\n const hideForAMoment = ref(false);\r\n watch(\r\n () => p.items,\r\n (items: any) => {\r\n standardOptions.value.series = items;\r\n intensityOptions.value.series = items;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n return { standardOptions, intensityOptions, hideForAMoment };\r\n },\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('carbonMap.title'),\"icon\":\"location_on\"}}),_c('v-container',[_c('region-chart-card',{attrs:{\"items\":_vm.regionMapData,\"intensity\":_vm.tab === 0},on:{\"click\":function($event){return _vm.handleChartClick($event)}},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab',[_vm._v(\"Energy Intensity\")]),_c('v-tab',[_vm._v(\"Energy Consumption\")]),_c('v-tab',[_vm._v(\"Emissions\")])],1)]},proxy:true}])}),_c('regions-carbon-table-card',{staticClass:\"mt-3\",attrs:{\"loading\":_vm.$wait.is(['loadingRegions', 'loadingRegionTotals']),\"items\":_vm.regions}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('chart-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.intensity),expression:\"intensity\"}],attrs:{\"chart\":_vm.intensityOptions,\"constructor-type\":\"mapChart\"},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)}),_c('chart-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.intensity),expression:\"!intensity\"}],attrs:{\"chart\":_vm.standardOptions,\"constructor-type\":\"mapChart\"},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionCarbonChartCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionCarbonChartCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegionCarbonChartCard.vue?vue&type=template&id=f1a8b5b8&\"\nimport script from \"./RegionCarbonChartCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionCarbonChartCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('content-card',{attrs:{\"title\":_vm.title || _vm.$t('regionsCarbonTableCard.title'),\"caption\":_vm.$t('regionsCarbonTableCard.subtitle')}},[_c('regions-carbon-table',_vm._g(_vm._b({},'regions-carbon-table',_vm.$props,false),_vm.$listeners))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc,\"search\":_vm.searchText},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event},\"update:search\":function($event){_vm.searchText=$event}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-toolbar',{staticClass:\"mb-3\",attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-text-field',{staticClass:\"mr-1\",attrs:{\"solo-inverted\":\"\",\"flat\":\"\",\"prepend-inner-icon\":\"search\",\"hide-details\":\"\",\"placeholder\":_vm.$t('regionsCarbonTable.search.placeholder'),\"label\":_vm.$t('regionsCarbonTable.search.title')},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]},proxy:true},{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('regionsCarbonTable.noRegions'))+\" \")]},proxy:true},{key:`item.geography`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/emissions/map/geographies/${item.providerType}:${item.geography}/carbon`}},[_vm._v(\" \"+_vm._s(item.geography)+\" \")])]}},{key:`item.name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/emissions/map/regions/${item.providerType}:${item.name}/carbon`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:`item.currentMonthCO2e`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.currentMonthCO2e.toFixed(4))+\" t CO2e \")]}},{key:`item.currentMonthKwH`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.currentMonthKwH.toFixed(4))+\" kWh \")]}},{key:`item.currentMonthIntensity`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(((item.currentMonthCO2e / item.currentMonthKwH) || 0).toFixed(5))+\" \")]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { IRegionCO2EResult, IRegionResult } from '@/models';\r\n\r\nexport const convertRegionResultsToViewItems = (\r\n emissions: IRegionCO2EResult,\r\n regions: IRegionResult[]\r\n): IRegionTableItemViewModel[] => {\r\n const regionTotals = emissions.data.reduce((agg, val) => {\r\n const key = `${val.providerType}:${val.regionName}`.toUpperCase();\r\n agg[key] = { co2e: val.co2e, kwH: val.kwH };\r\n return agg;\r\n }, {});\r\n return regions.map((r) => {\r\n let total = regionTotals[r.id];\r\n if (!total) total = { kwH: 0, co2e: 0 };\r\n return {\r\n ...r,\r\n currentMonthCO2e: total.co2e,\r\n currentMonthKwH: total.kwH,\r\n };\r\n }).filter(r => r.currentMonthCO2e > 0);\r\n};\r\n\r\nexport interface IRegionTableItemViewModel {\r\n geography: string;\r\n name: string;\r\n currentMonthCO2e: number;\r\n currentMonthKwH: number;\r\n providerType: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n items: Array,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const sortedBy = ref('currentMonthCO2e');\r\n const sortedDesc = ref(true);\r\n const itemsPerPage = ref(10);\r\n const searchText = ref(null);\r\n return { sortedBy, sortedDesc, itemsPerPage, searchText };\r\n },\r\n data() {\r\n return {\r\n headers: [\r\n {\r\n text: this.$t('regionsCarbonTable.geography.title'),\r\n value: 'geography',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('name'),\r\n value: 'name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('regionsCarbonTable.currentMonthCO2e.title'),\r\n value: 'currentMonthCO2e',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('regionsCarbonTable.currentMonthKwH.title'),\r\n value: 'currentMonthKwH',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('regionsCarbonTable.currentMonthIntensity.title'),\r\n value: 'currentMonthIntensity',\r\n sortable: false,\r\n },\r\n {\r\n text: this.$t('regionsCarbonTable.providerType.title'),\r\n value: 'providerType',\r\n sortable: true,\r\n },\r\n ],\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegionsCarbonTable.vue?vue&type=template&id=0d9964de&scoped=true&\"\nimport script from \"./RegionsCarbonTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionsCarbonTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RegionsCarbonTable.vue?vue&type=style&index=0&id=0d9964de&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d9964de\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegionsCarbonTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport RegionsCarbonTable, { convertRegionResultsToViewItems } from '@/components/Domain.Regions/RegionsCarbonTable.vue';\r\nexport { convertRegionResultsToViewItems };\r\nimport { defineComponent } from 'vue';\r\nexport default defineComponent({\r\n components: { RegionsCarbonTable },\r\n props: { ...RegionsCarbonTable.props, title: String },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTableCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTableCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTableCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionsCarbonTableCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RegionsCarbonTableCard.vue?vue&type=template&id=59d7a465&\"\nimport script from \"./RegionsCarbonTableCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegionsCarbonTableCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RegionsCarbonTableCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport RegionChartCard, {\r\n IRegionClickedEventData,\r\n convertRegionResultsToChartSeries,\r\n SupportedSlices,\r\n} from '@/components/Domain.Regions/RegionCarbonChartCard.vue';\r\nimport RegionsCarbonTableCard, {\r\n convertRegionResultsToViewItems,\r\n} from '@/components/Domain.Regions/RegionsCarbonTableCard.vue';\r\nimport moment from '@/lib/moment';\r\nimport { IRegionCO2EResult, IRegionResult } from '@/models';\r\nimport { defineComponent } from 'vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nexport default defineComponent({\r\n props: ['me'],\r\n components: { RegionChartCard, RegionsCarbonTableCard },\r\n title(ctx) {\r\n return ctx.$t('carbonMap.title');\r\n },\r\n data() {\r\n return {\r\n emissionsResult: null,\r\n regionsResult: null,\r\n tab: 2,\r\n };\r\n },\r\n created() {\r\n this.loadDataForView();\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n regionMapData() {\r\n if (!this.emissionsResult || !this.regionsResult) return [];\r\n const values = [SupportedSlices.intensity, SupportedSlices.kwh, SupportedSlices.co2e];\r\n return convertRegionResultsToChartSeries(this.emissionsResult, this.regionsResult, values[this.tab]);\r\n },\r\n regions() {\r\n if (!this.emissionsResult || !this.regionsResult) return [];\r\n return convertRegionResultsToViewItems(this.emissionsResult, this.regionsResult);\r\n },\r\n },\r\n methods: {\r\n handleChartClick(data: IRegionClickedEventData) {\r\n const { providerType, regionName } = data;\r\n this.$router.push(`/emissions/map/regions/${providerType}:${regionName}`);\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/emissions/map');\r\n this.$title = this.$t('carbonMap.title');\r\n },\r\n async loadDataForView() {\r\n const [regions, costs] = await Promise.all([this.getAllRegions(), this.getRegionTotals()]);\r\n this.regionsResult = regions;\r\n this.emissionsResult = costs;\r\n },\r\n getAllRegions: waitFor('loadingRegions', async function (): Promise {\r\n try {\r\n return await ApiV2.http.get('/api/regions').then((r) => r.data);\r\n } catch (error) {\r\n toastError(this.$t('carbonDashboard.error.loadingRegions'));\r\n }\r\n }),\r\n getRegionTotals: waitFor('loadingRegionTotals', async function (): Promise {\r\n try {\r\n const params = {\r\n min: moment.utc().add(-30, 'days').startOf('day').format(),\r\n max: moment.utc().endOf('day').format(),\r\n };\r\n return await ApiV2.http.get('/api/region/co2e', { params }).then((r) => r.data);\r\n } catch (error) {\r\n toastError(this.$t('carbonDashboard.error.loadingRegionTotals'));\r\n }\r\n }),\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Map.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=dec941f4&\"\nimport script from \"./Map.vue?vue&type=script&lang=ts&\"\nexport * from \"./Map.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Map.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('Customers'),\"icon\":\"content_copy\",\"extended\":\"\",\"extension-height\":10}}),_c('widget-grid',[_c('v-flex',{attrs:{\"xs12\":\"\"}},[_c('content-card',{attrs:{\"title\":\"Customers\",\"caption\":`${this.period}`},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('text-date-picker',{attrs:{\"value\":_vm.toDate,\"hide-details\":\"\",\"label\":_vm.$t('views.customersManage.currentperiodending'),\"flat\":\"\",\"outlined\":\"\",\"prepend-icon\":null,\"min\":_vm.minPeriod,\"max\":_vm.maxPeriod,\"type\":\"month\"},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}}),(_vm.tenantStore.hasPermission('CanManageBilling'))?_c('create-customer-dialog',{attrs:{\"loading\":_vm.$wait.is(['getTenantCustomers', 'addTenantCustomer'])},on:{\"http2xx\":_vm.handleSuccessfulCustomerChange},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-spacer'),_c('v-btn',_vm._g({attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add Customer \")],1)],1)]}}],null,false,1803124698)}):_vm._e()]},proxy:true}])},[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.customers,\"items-per-page\":15,\"sort-by\":_vm.sortBy,\"loading\":_vm.$wait.is('getTenantCustomers')},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event}},scopedSlots:_vm._u([{key:`item.name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`/customers/manage/${item.id}`}},[_vm._v(_vm._s(item.name))])]}},{key:`item.actions`,fn:function({ item }){return [(!item.IsMe)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',{attrs:{\"light\":\"\"}},[_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1)],1):_vm._e()]}},{key:`item.lastMonthRevenue`,fn:function({ item }){return [_c('div',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.lastMonthRevenue,_vm.tenantStore.currencyCode)))])]}},{key:`item.lastMonthCost`,fn:function({ item }){return [_c('div',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.lastMonthCost,_vm.tenantStore.currencyCode)))])]}},{key:`item.lastMonthOtherSpend`,fn:function({ item }){return [_c('div',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.lastMonthOtherSpend,_vm.tenantStore.currencyCode))+\" \")])]}},{key:`item.lastMonthMargin`,fn:function({ item }){return [_c('div',{class:item.lastMonthMargin < 0\n ? 'red--text text-right'\n : item.lastMonthMargin > 0\n ? 'green--text text-right'\n : ''},[_vm._v(\" \"+_vm._s(item.lastMonthMargin.toFixed(2))+\"% \")])]}},{key:`item.lastMonthProfit`,fn:function({ item }){return [_c('div',{class:item.lastMonthProfit < 0\n ? 'red--text text-right'\n : item.lastMonthProfit > 0\n ? 'green--text text-right'\n : ''},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.lastMonthProfit,_vm.tenantStore.currencyCode))+\" \")])]}},{key:`body.append`,fn:function(){return [(_vm.customers.length > 0)?_c('tr',[_c('th',[_vm._v(\"Totals\")]),_c('th',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.totalShared))]),_c('th',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.totalRevenue,_vm.tenantStore.currencyCode)))]),_c('th',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.totalCost,_vm.tenantStore.currencyCode)))]),(!_vm.tenantStore.hasTenantFeature('HideProfit'))?_c('th',{class:_vm.totalProfit < 0 ? 'text-right red--text' : 'text-right'},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.totalProfit,_vm.tenantStore.currencyCode))+\" \")]):_vm._e(),(!_vm.tenantStore.hasTenantFeature('HideProfit'))?_c('th',{staticClass:\"text-right\"},[_vm._v(\"-\")]):_vm._e(),_c('th',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.totalOther))]),_c('th',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.totalOtherSpend,_vm.tenantStore.currencyCode)))])]):_vm._e()]},proxy:true}],null,true)})],1)],1)],1),_c('delete-entity-dialog',{attrs:{\"entityType\":\"customer\",\"entityToDelete\":_vm.customerToDelete,\"resourceApi\":\"/api/customers\"},on:{\"http2xx\":_vm.endDeleteAccount},model:{value:(_vm.deleteCustomer),callback:function ($$v) {_vm.deleteCustomer=$$v},expression:\"deleteCustomer\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('createCustomer.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, loading, formId, reset }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('add-customer-button',{attrs:{\"value\":_vm.formData,\"clear\":reset,\"form\":formId,\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCustomerAdd($event))}}})]}}],null,true),model:{value:(_vm.isFormValid),callback:function ($$v) {_vm.isFormValid=$$v},expression:\"isFormValid\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('createCustomer.customerName.label'),\"rules\":[_vm.$rules.required()]},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('currency-combo-box',{attrs:{\"rules\":[ _vm.$rules.required() ]},model:{value:(_vm.displayCurrencyCode),callback:function ($$v) {_vm.displayCurrencyCode=$$v},expression:\"displayCurrencyCode\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('createCustomer.customerIsNotForProfit.label')},model:{value:(_vm.isNotForProfit),callback:function ($$v) {_vm.isNotForProfit=$$v},expression:\"isNotForProfit\"}})],1)]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"value\":_vm.value,\"href\":\"/api/customers\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(_vm._s(_vm.$t('addCustomerButton.submit'))+\" \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"addCustomerButton.errorMessage\": \"There was an error encountered while creating this customer. If everything looks right please contact support.\",\r\n \"addCustomerButton.submit\": \"Submit\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddCustomerButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddCustomerButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddCustomerButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddCustomerButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AddCustomerButton.vue?vue&type=template&id=08ca43c8&\"\nimport script from \"./AddCustomerButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AddCustomerButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AddCustomerButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createCustomer.title\": \"Create Customer\",\r\n \"createCustomer.customerName.label\": \"Customer Name\",\r\n \"createCustomer.successfulAdd\": \"Customer successfully added.\",\r\n \"createCustomer.customerIsNotForProfit.label\": \"Customer is a registered charity or not-for-profit.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCustomerDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCustomerDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCustomerDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCustomerDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateCustomerDialog.vue?vue&type=template&id=7c55012a&\"\nimport script from \"./CreateCustomerDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateCustomerDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateCustomerDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport CreateCustomerDialog from '@/views/CustomersManage/CreateCustomerDialog.vue';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport DeleteEntityDialog from '@/components/Common/DeleteEntityDialog.vue';\r\nimport { useTenantStore } from '../../stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport moment from '@/lib/moment';\r\n\r\nexport function sum(x, y) {\r\n return x + y;\r\n}\r\n\r\nexport default {\r\n title(ctx) {\r\n return ctx.$t('views.customersManage.title');\r\n },\r\n components: {\r\n CreateCustomerDialog,\r\n DeleteEntityDialog,\r\n },\r\n methods: {\r\n getTenantCustomers: waitFor('getTenantCustomers', async function getTenantCustomers() {\r\n let params = undefined; \r\n if(this.toDate) {\r\n params = {params: {startMonth: moment.utc(this.toDate).format(\"YYYY-MM-DD\")}}; \r\n } \r\n this.customers = await ApiV2.http.get(`api/customers`, params).then((r) => r.data);\r\n }),\r\n handleSuccessfulCustomerChange() {\r\n this.getTenantCustomers();\r\n },\r\n startDeleteAccount(customer) { \r\n this.customerToDelete = customer;\r\n this.deleteCustomer = true; \r\n },\r\n endDeleteAccount(flag) { \r\n this.deleteCustomer = flag;\r\n this.getTenantCustomers();\r\n }\r\n },\r\n data() {\r\n return {\r\n customers: [],\r\n sortBy: 'name',\r\n customerToDelete: null,\r\n deleteCustomer: false,\r\n toDate: new Date(),\r\n maxPeriod: moment.utc(new Date()).format(\"YYYY-MM-DD\"),\r\n minPeriod: moment.utc(new Date()).add(-13, 'month').format(\"YYYY-MM-DD\"),\r\n };\r\n },\r\n computed: {\r\n totalShared() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.numberOfSharedAccounts).reduce(sum, 0);\r\n },\r\n totalRevenue() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.lastMonthRevenue).reduce(sum, 0);\r\n },\r\n totalCost() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.lastMonthCost).reduce(sum, 0);\r\n },\r\n totalProfit() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.lastMonthProfit).reduce(sum, 0);\r\n },\r\n totalOther() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.numberOfOtherAccounts).reduce(sum, 0);\r\n },\r\n totalOtherSpend() {\r\n return !this.customers ? 0 : this.customers.map((item) => item.lastMonthOtherSpend).reduce(sum, 0);\r\n },\r\n period() {\r\n return !this.customers ? '' : this.customers.length > 0 ? '(Period ' + this.customers[0].period + ')' : '';\r\n },\r\n numberCustomers() {\r\n if (!this.customers) return 0.0;\r\n return this.customers.length;\r\n },\r\n headers() {\r\n const flagValue = this.tenantStore.hasTenantFeature('HideProfit') ?? false;\r\n const headers = flagValue === false ? [{ // Includes Profit, Revenue and Margin \r\n text: this.$t('views.customersManage.name'),\r\n value: 'name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.sharedAccounts'),\r\n align: 'end',\r\n value: 'numberOfSharedAccounts',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthRevenue'),\r\n align: 'end',\r\n value: 'lastMonthRevenue',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthCost'),\r\n align: 'end',\r\n value: 'lastMonthCost',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.profit'),\r\n align: 'end',\r\n value: 'lastMonthProfit',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthMargin'),\r\n align: 'end',\r\n value: 'lastMonthMargin',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.otherAccounts'),\r\n align: 'end',\r\n value: 'numberOfOtherAccounts',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthOther'),\r\n align: 'end',\r\n value: 'lastMonthOtherSpend',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('actions'),\r\n value: \"actions\",\r\n sortable: false\r\n }] : // No Profit, Revenue and Margin \r\n [{\r\n text: this.$t('views.customersManage.name'),\r\n value: 'name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.sharedAccounts'),\r\n align: 'end',\r\n value: 'numberOfSharedAccounts',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthCost'),\r\n align: 'end',\r\n value: 'lastMonthCost',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.otherAccounts'),\r\n align: 'end',\r\n value: 'numberOfOtherAccounts',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('views.customersManage.lastMonthOther'),\r\n align: 'end',\r\n value: 'lastMonthOtherSpend',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('actions'),\r\n value: \"actions\",\r\n sortable: false\r\n }];\r\n\r\n return headers;\r\n },\r\n ...mapStores(useTenantStore)\r\n },\r\n async created() {\r\n this.getTenantCustomers();\r\n },\r\n watch: {\r\n toDate: {\r\n handler: function() {\r\n this.getTenantCustomers();\r\n }\r\n } \r\n }\r\n} as any;\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersManage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersManage.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersManage.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomersManage.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomersManage.vue?vue&type=template&id=58e634da&\"\nimport script from \"./CustomersManage.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomersManage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomersManage.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('customerManage.title', { customerName: _vm.customer ? _vm.customer.name : '...' }),\"icon\":\"content_copy\",\"extended\":\"\",\"back-to\":\"/customers/manage/\",\"back-to-text\":\"Back to Customers\"}},[_c('v-tabs',{attrs:{\"align-with-title\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab',{key:\"shares\"},[_vm._v(\" Shared Data \")]),_c('v-tab',{key:\"permissions\"},[_vm._v(\" Features \")]),_c('v-tab',{key:\"users\"},[_vm._v(\" Access Management \")])],1)],1),_c('v-container',[_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{key:\"shares\"},[_c('shared-data',{attrs:{\"customerId\":_vm.customerId,\"customer\":_vm.customer},on:{\"getTenantCustomers\":function($event){return _vm.getTenantCustomers()},\"loadCustomer\":function($event){return _vm.loadCustomer()}}})],1),_c('v-tab-item',{key:\"permissions\"},[_c('features',{attrs:{\"customerId\":_vm.customerId,\"tenantFeatures\":_vm.tenantFeatures}})],1),_c('v-tab-item',{key:\"users\"},[_c('users',{attrs:{\"customerId\":_vm.customerId,\"customer\":_vm.customer}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('views.users.title'),\"caption\":_vm.$t('views.users.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('users.inviteUserOrGroup'))+\" \")],1)]}}])},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startCreateAccount()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mail\")])],1),_c('v-list-item-title',[_vm._v(\"Invite new user\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startAddUserGroup()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"person_add\")])],1),_c('v-list-item-title',[_vm._v(\"Grant permissions to group\")])],1)],1)],1)]},proxy:true},{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},[_c('users-table',{attrs:{\"items\":_vm.userItems,\"loading\":_vm.$wait.is('getUsers')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [(!item.IsMe)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[(item.type === 'User')?_c('v-list',{attrs:{\"light\":\"\"}},[(!item.isTenantCreator)?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1):_c('v-list',{attrs:{\"light\":\"\"}},[(!item.isTenantCreator)?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditUserGroup(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteUserGroup(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1)],1):_c('span',[_vm._v(\"N/A\")])]}}],null,true)})],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('set-user-card',{attrs:{\"loading\":_vm.$wait.is('createUser'),\"value\":_vm.userToEdit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),(!_vm.userToEdit)?_c('add-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('createUser'),expression:\"'createUser'\"}],attrs:{\"value\":form,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":`api/customers/${_vm.customerId}/users`},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}}):_c('update-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('createUser'),expression:\"'createUser'\"}],attrs:{\"value\":form,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":`api/customers/${_vm.customerId}/users`},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.createOrUpdateUser),callback:function ($$v) {_vm.$set(_vm.dialogs, \"createOrUpdateUser\", $$v)},expression:\"dialogs.createOrUpdateUser\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('SetUserGroupPermissionsCard',{attrs:{\"value\":_vm.userGroupToEdit,\"loading\":_vm.$wait.is('addingUserGroup'),\"groups\":_vm.userGroups,\"disabled\":_vm.userGroupToEdit ? { groupId: true } : null},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, loading, isValid }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"form\":formId,\"disabled\":loading || !isValid,\"loading\":loading},on:{\"click\":function($event){return _vm.tryAddOrUpdateGroup(form, close)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit \")],1)]}}],null,true)})]}}]),model:{value:(_vm.dialogs.addUserGroupPermission),callback:function ($$v) {_vm.$set(_vm.dialogs, \"addUserGroupPermission\", $$v)},expression:\"dialogs.addUserGroupPermission\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-user-card',{attrs:{\"loading\":_vm.$wait.is('deleteUser'),\"value\":_vm.userToDelete,\"title\":_vm.$t('users.DeleteUserTitle'),\"subtitle\":_vm.$t('users.DeleteUserSubtitle'),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deleteUser'),expression:\"'deleteUser'\"}],attrs:{\"value\":_vm.userToDelete,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":`api/customers/${_vm.customerId}/delegatedusergroups`},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.deleteUser),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteUser\", $$v)},expression:\"dialogs.deleteUser\"}}),_c('DeleteEntityDialog',{attrs:{\"entityToDelete\":_vm.userGroupToRemove,\"entityType\":\"User Group\",\"resourceApi\":`api/customers/${_vm.customerId}/delegatedusergroups`},on:{\"http2xx\":function($event){return _vm.getUsers()}},model:{value:(_vm.dialogs.deleteUserGroup),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteUserGroup\", $$v)},expression:\"dialogs.deleteUserGroup\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setUserCard.title'),\"subtitle\":_vm.$t('setUserCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId }){return [_vm._t(\"actions\",null,{\"form\":_vm.formData,\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":_vm.reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-text-field',{attrs:{\"disabled\":(_vm.disabled && _vm.disabled.Email) || _vm.isEditMode,\"rules\":[_vm.$rules.required(), _vm.$rules.email()],\"required\":\"\",\"label\":_vm.$t('email')},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-list',[_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.canRead),callback:function ($$v) {_vm.canRead=$$v},expression:\"canRead\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setUserCard.canRead.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setUserCard.canRead.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canContribute),callback:function ($$v) {_vm.canContribute=$$v},expression:\"canContribute\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setUserCard.canContribute.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setUserCard.canContribute.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canAdminister),callback:function ($$v) {_vm.canAdminister=$$v},expression:\"canAdminister\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setUserCard.canAdminister.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setUserCard.canAdminister.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canManageBilling),callback:function ($$v) {_vm.canManageBilling=$$v},expression:\"canManageBilling\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setUserCard.canManageBilling.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setUserCard.canManageBilling.subtitle')))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n{\r\n \"en\": {\r\n \"setUserCard.title\": \"Set User Details\",\r\n \"setUserCard.subtitle\": \"Please enter the details for this user. New users will be sent an invite email directly.\",\r\n \"setUserCard.canRead.title\": \"Reader\",\r\n \"setUserCard.canRead.subtitle\": \"Can read all non-administrative data in this tenant.\",\r\n \"setUserCard.canContribute.title\": \"Contributor\",\r\n \"setUserCard.canContribute.subtitle\": \"Can perform non-administrative write functions like setting spend limits and adding annotations.\",\r\n \"setUserCard.canAdminister.title\": \"Administrator\",\r\n \"setUserCard.canAdminister.subtitle\": \"Can read and write administrative data, such as adding users to a tenant and creating new cloud connections.\",\r\n \"setUserCard.canManageBilling.title\": \"Billing Administrator\",\r\n \"setUserCard.canManageBilling.subtitle\": \"Can manage billing functions of the tenant.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetUserCard.vue?vue&type=template&id=7ddd46b3&\"\nimport script from \"./SetUserCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetUserCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetUserCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:`item.permissions`,fn:function({ item }){return [(!item.permissions)?_c('span',[_vm._v(\"-\")]):_vm._e(),(item.permissions.includes('CanManageBilling'))?_c('span',[_vm._v(\" Billing Administrator \")]):(item.permissions.includes('CanAdminister'))?_c('span',[_vm._v(\" Tenant Administrator \")]):(item.permissions.includes('CanContribute'))?_c('span',[_vm._v(\" Contributor \")]):_c('span',[_vm._v(\" Read-only \")])]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { IUser, IUserGroup } from '@/models';\r\n\r\nexport const convertToUserItems = (users: IUser[], userGroups: IUserGroup[]) => {\r\n const userResp = (users || []).map((u) => ({\r\n id: u.id,\r\n email: u.email,\r\n fullName: u.fullName,\r\n type: 'User',\r\n permissions: u.permissions,\r\n }));\r\n const userGroupResp = (userGroups || []).map((ug) => ({\r\n id: ug.id,\r\n email: null,\r\n fullName: ug.name,\r\n permissions: ug.permissions,\r\n type: 'Group',\r\n }));\r\n return userResp.concat(userGroupResp);\r\n};\r\n\r\nexport default {\r\n props: ['items', 'loading'],\r\n data() {\r\n return {\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n };\r\n },\r\n computed: {\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'fullName',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('type'),\r\n value: 'type',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('permissions'),\r\n value: 'permissions',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('actions'),\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UsersTable.vue?vue&type=template&id=6a8de916&scoped=true&\"\nimport script from \"./UsersTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./UsersTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UsersTable.vue?vue&type=style&index=0&id=6a8de916&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a8de916\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"email\")]),_vm._v(\"Invite \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddUserButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddUserButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddUserButton.vue?vue&type=template&id=1ba9b5fc&\"\nimport script from \"./AddUserButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AddUserButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateUserButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateUserButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateUserButton.vue?vue&type=template&id=07b55308&\"\nimport script from \"./UpdateUserButton.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateUserButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"error\",\"depressed\":\"\",\"disabled\":!_vm.valid || _vm.loading,\"loading\":_vm.loading,\"form\":_vm.form},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"clear\")]),_vm._v(\"Delete \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUserButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteUserButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeleteUserButton.vue?vue&type=template&id=a1d6e690&\"\nimport script from \"./DeleteUserButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteUserButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setPermissionsCard.title'),\"subtitle\":_vm.$t('setPermissionsCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId }){return [_vm._t(\"actions\",null,{\"form\":_vm.formData,\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":_vm.reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-select',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.groupId,\"items\":_vm.groups,\"label\":\"Group\",\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.groupId),callback:function ($$v) {_vm.groupId=$$v},expression:\"groupId\"}}),_c('v-list',[_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.canRead),callback:function ($$v) {_vm.canRead=$$v},expression:\"canRead\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canRead.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canRead.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canContribute),callback:function ($$v) {_vm.canContribute=$$v},expression:\"canContribute\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canContribute.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canContribute.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canAdminister),callback:function ($$v) {_vm.canAdminister=$$v},expression:\"canAdminister\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canAdminister.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canAdminister.subtitle')))])],1)],1),_c('v-list-item',[_c('v-list-item-action',[_c('v-switch',{model:{value:(_vm.canManageBilling),callback:function ($$v) {_vm.canManageBilling=$$v},expression:\"canManageBilling\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canManageBilling.title')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.$t('setPermissionsCard.canManageBilling.subtitle')))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n{\r\n \"en\": {\r\n \"setPermissionsCard.title\": \"Set Permissions\",\r\n \"setPermissionsCard.subtitle\": \"Indicate the level of permissions this entity should have over this tenant.\",\r\n \"setPermissionsCard.canRead.title\": \"Reader\",\r\n \"setPermissionsCard.canRead.subtitle\": \"Can read all non-administrative data in this tenant.\",\r\n \"setPermissionsCard.canContribute.title\": \"Contributor\",\r\n \"setPermissionsCard.canContribute.subtitle\": \"Can perform non-administrative write functions like setting spend limits and adding annotations.\",\r\n \"setPermissionsCard.canAdminister.title\": \"Administrator\",\r\n \"setPermissionsCard.canAdminister.subtitle\": \"Can read and write administrative data, such as adding users to a tenant and creating new cloud connections.\",\r\n \"setPermissionsCard.canManageBilling.title\": \"Billing Administrator\",\r\n \"setPermissionsCard.canManageBilling.subtitle\": \"Can manage billing functions of the tenant.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupPermissionsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupPermissionsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupPermissionsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupPermissionsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetUserGroupPermissionsCard.vue?vue&type=template&id=193b456d&\"\nimport script from \"./SetUserGroupPermissionsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetUserGroupPermissionsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetUserGroupPermissionsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.users.title\": \"Access Management\",\r\n \"views.users.subtitle\": \"The users and groups that have some level of access of this tenant.\",\r\n \"users.inviteUserOrGroup\": \"Add User / Group\",\r\n \"users\": \"Users\",\r\n \"users.DeleteUserTitle\": \"Delete User\",\r\n \"users.DeleteUserSubtitle\": \"This user will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=29767b5b&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Users.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('content-card',{attrs:{\"title\":\"Shared Data\",\"caption\":'The cloud connections you are actively sharing with this customer.'},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanManageBilling'))?{key:\"title-actions\",fn:function(){return [_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"to\":_vm.createNewShare}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" New Share \")],1)],1)]},proxy:true}:null],null,true)},[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.customer.sharedDataCloudAccounts,\"items-per-page\":15,\"sort-by\":_vm.sortBy,\"loading\":_vm.$wait.is('getTenantCustomers')},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event}},scopedSlots:_vm._u([{key:`item.rules.currentMarkup.markupPercentage`,fn:function({ item }){return [(item.rules && item.rules.currentMarkup && item.rules.currentMarkup.markupPercentage)?_c('div',{class:item.rules.currentMarkup.markupPercentage < 0\n ? 'red--text text-right'\n : item.rules.currentMarkup.markupPercentage > 0\n ? 'green--text text-right'\n : ''},[_vm._v(\" \"+_vm._s(item.rules.currentMarkup.markupPercentage.toFixed(2))+\"% \")]):_vm._e()]}},{key:`item.current90DayMargin`,fn:function({ item }){return [(item.current90DayMargin)?_c('div',{class:item.current90DayMargin < 0\n ? 'red--text text-right'\n : item.current90DayMargin > 0\n ? 'green--text text-right'\n : ''},[_vm._v(\" \"+_vm._s(item.current90DayMargin.toFixed(2))+\"% \")]):_vm._e()]}},{key:`item.rules.origin`,fn:function({ item }){return [(item.rules && item.rules.origin)?_c('div',[_vm._v(_vm._s(item.rules.origin))]):_c('div',[_vm._v(\"Your Cost\")])]}},{key:`item.Actions`,fn:function({ item }){return [(_vm.tenantStore.hasPermission('CanManageBilling'))?_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":`/copy/cloudaccounts/${item.parentCloudAccountId}?copy=${item.id}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Edit Share \")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteCopy(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Delete Share \")])],1)],1)],1)],1):_vm._e()]}}],null,true)}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"loading\":_vm.$wait.is('deletingCopy'),\"value\":_vm.copyToDelete,\"title\":_vm.$t('deleteCopyCard.title'),\"subtitle\":_vm.$t('deleteCopyCard.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, clear, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('delete-shared-copy-button',{attrs:{\"cloudAccountId\":_vm.copyToDelete ? _vm.copyToDelete.ParentCloudAccountId : null,\"value\":_vm.copyToDelete,\"valid\":isValid,\"clear\":clear,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.loadCustomer())}}})]}}],null,true)})]}}]),model:{value:(_vm.showDeleteCopy),callback:function ($$v) {_vm.showDeleteCopy=$$v},expression:\"showDeleteCopy\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/metadata/cloudaccounts/${_vm.cloudAccountId}/copies/${(_vm.value || {}).Id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteCloudAccountCopyButton.errorMessage\": \"There was an error encountered while deleting the shared cloud connection. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountCopyButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountCopyButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountCopyButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountCopyButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteCloudAccountCopyButton.vue?vue&type=template&id=36bfda8a&\"\nimport script from \"./DeleteCloudAccountCopyButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteCloudAccountCopyButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteCloudAccountCopyButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","enum TaxonomyType {\r\n manage = 'manage',\r\n settingsAzure = 'settingsAzure',\r\n settingsAzureCloudAccount = 'settingsAzureCloudAccount', \r\n settingsAWS = 'settingsAWS',\r\n settingsAWSCloudAccount = 'settingsAWSCloudAccount', \r\n settingsOracle = 'settingsOracle',\r\n settingsOracleCloudAccount = 'settingsOracleCloudAccount', \r\n settingsSnowflake = 'settingsSnowflake',\r\n settingsSnowflakeCloudAccount = 'settingsSnowflakeCloudAccount',\r\n}\r\n\r\nexport default TaxonomyType;","import { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { defineStore } from 'pinia';\r\n\r\nexport const useCloudAccountNavigationStore = defineStore({\r\n id: 'cloudAccountNavigation',\r\n state: (): ICloudAccountNavigation => ({\r\n taxonomyType: null,\r\n tenantId: null,\r\n cloudAccountId: null\r\n }), \r\n actions: {\r\n updateNavigationSource(navigationDetails :ICloudAccountNavigation) { \r\n this.taxonomyType = navigationDetails.taxonomyType;\r\n this.tenantId = navigationDetails.tenantId;\r\n this.cloudAccountId = navigationDetails.cloudAccountId;\r\n }\r\n },\r\n persist: true \r\n});","\r\nimport DeleteSharedCopyButton from '@/components/Settings.CloudAccounts/DeleteCloudAccountCopyButton.vue';\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\n\r\nexport default {\r\n props: ['customerId', 'customer'],\r\n components: {\r\n DeleteSharedCopyButton,\r\n },\r\n data() {\r\n return {\r\n showDeleteCopy: false,\r\n copyToDelete: null,\r\n sortBy: 'customerName',\r\n };\r\n },\r\n methods: {\r\n getTenantCustomers() {\r\n this.$emit('getTenantCustomers');\r\n },\r\n loadCustomer() {\r\n this.$emit('loadCustomer');\r\n },\r\n startDeleteCopy(item) {\r\n this.copyToDelete = { Name: item.name, Id: item.id, ParentCloudAccountId: item.parentCloudAccountId };\r\n this.showDeleteCopy = true;\r\n },\r\n },\r\n computed: {\r\n createNewShare() {\r\n return `/customers/manage/${this.customerId}/shareddata`;\r\n },\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('customerManage.sharedCloudAccountName'),\r\n value: 'name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('customerManage.sourceCloudAccount'),\r\n value: 'parentCloudAccountName',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('customerManage.origin'),\r\n value: 'rules.origin',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('customerManage.currentMarkup'),\r\n value: 'rules.currentMarkup.markupPercentage',\r\n align: 'end',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('customerManage.actualMargin'),\r\n value: 'current90DayMargin',\r\n align: 'end',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('customerManage.actions'),\r\n value: 'Actions',\r\n align: 'end',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n created() {\r\n const navigationHistory = {\r\n taxonomyType: TaxonomyType.manage,\r\n tenantId: this.customerId,\r\n cloudAccountId: null,\r\n };\r\n const store = useCloudAccountNavigationStore();\r\n store.updateNavigationSource(navigationHistory);\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SharedData.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SharedData.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SharedData.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SharedData.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SharedData.vue?vue&type=template&id=5eed277e&\"\nimport script from \"./SharedData.vue?vue&type=script&lang=ts&\"\nexport * from \"./SharedData.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SharedData.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('content-card',{attrs:{\"title\":\"Features\",\"caption\":'The features this customer has when viewing their usage data.'}},[_c('v-list',_vm._l((_vm.tenantFeatures),function(feature){return _c('v-list-item',{key:feature.featureId},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"disabled\":!_vm.tenantStore.hasPermission('CanManageBilling') || _vm.$wait.is(`togglingFeature${feature.featureId}`),\"loading\":_vm.$wait.is(`togglingFeature${feature.featureId}`)},on:{\"change\":function($event){return _vm.toggleFeature(feature.featureId, $event)}},model:{value:(feature.isEnabled),callback:function ($$v) {_vm.$set(feature, \"isEnabled\", $$v)},expression:\"feature.isEnabled\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',{attrs:{\"title\":feature.featureDescription}},[_vm._v(\" \"+_vm._s(feature.featureLabel)+\" \")])],1)],1)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Features.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Features.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Features.vue?vue&type=template&id=1458b22f&\"\nimport script from \"./Features.vue?vue&type=script&lang=js&\"\nexport * from \"./Features.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"customerManage.title\": \"Customer - {customerName}\", \r\n \"customerManage.failedToLoad\": \"There was an issue loading this customer.\" \r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerManage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerManage.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerManage.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomerManage.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomerManage.vue?vue&type=template&id=88642186&\"\nimport script from \"./CustomerManage.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomerManage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomerManage.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('nativeCarbonDashboard.title'),\"icon\":\"cc-icon-vendor-azure\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":_vm.$t('nativeCarbonDashboard.titles.currentProjected', { thisMonthName: _vm.thisMonthName })},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.currentTotalCo2E.toFixed(3))+\" t CO2e \")]},proxy:true}])}),_c('title-sheet',{attrs:{\"title\":_vm.$t('nativeCarbonDashboard.titles.previousTotal', { lastMonthName: _vm.lastMonthName })},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.lastMonthCo2e.toFixed(3))+\" t CO2e \")]},proxy:true}])}),(_vm.tenantStore.features.includes('Recommendations/View'))?_c('title-sheet',{staticClass:\"hover_pointer\",attrs:{\"title\":_vm.$t('dashboard.titles.potentialSavings')},nativeOn:{\"click\":function($event){return _vm.handleSavingsClicked()}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s((_vm.recommendationSummary.maximumEstimateImpactEmissions || 0.0).toFixed(4))+\"t CO2e \"),(_vm.recommendationSummary.includesElevatedSavings === true)?_c('span',[_vm._v(\"*\")]):_vm._e()]},proxy:true}],null,false,2720879452)}):_vm._e()],1),_c('content-card',{attrs:{\"title\":_vm.$t('nativeCarbonDashboard.titles.cumulative'),\"caption\":_vm.$t('nativeCarbonDashboard.subtitle'),\"title-icon\":\"co2\",\"loading\":_vm.$wait.is('getTenantMonthlyCO2e')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-select',{staticClass:\"mt-2 mr-2\",staticStyle:{\"width\":\"100px\"},attrs:{\"label\":\"Scope\",\"items\":['Scope1', 'Scope2', 'Scope3'],\"solo-inverted\":\"\"},model:{value:(_vm.scope),callback:function ($$v) {_vm.scope=$$v},expression:\"scope\"}})]},proxy:true}])},[_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.fixedCarbonOptions.granularity,\"hide-kwh\":\"\"},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{attrs:{\"items\":_vm.groupingItems,\"currency-code\":_vm.tenantStore.currencyCode,\"segregate-by\":_vm.fixedCarbonOptions.segregateBy,\"name-header-title\":_vm.$t('nativeCarbonDashboard.titles.cumulative'),\"tag-key\":null,\"hide-kwh\":\"\"}})],1)],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { defineComponent } from 'vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport moment from '@/lib/moment';\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n} from '@/components/Domain.Carbon/CarbonBarChart.vue';\r\nimport CarbonTable, { convertToItemRecords } from '@/components/Domain.Carbon/CarbonTable.vue';\r\nimport { convertSpendOptionsToQuery } from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { Granularity } from '@/models';\r\nimport { getNativeCO2e } from '@/lib/Api';\r\nimport Config from '@/lib/Config';\r\n\r\nexport default defineComponent({\r\n props: ['me'],\r\n title(ctx) {\r\n return ctx.$t('nativeCarbonDashboard.title');\r\n },\r\n components: {\r\n CarbonBarChart,\r\n CarbonTable\r\n },\r\n created() {\r\n this.getFixedCO2EForTenant(this.fixedCarbonOptions);\r\n this.getRecommendationSummary();\r\n this.getRecommendationStatus();\r\n },\r\n data() {\r\n return {\r\n thisMonthName: moment.utc().format('MMMM'),\r\n lastMonthName: moment.utc().add(-1, 'months').format('MMMM'),\r\n\r\n currentTotalCo2E: 0.0,\r\n currentTotalKwH: 0.0,\r\n lastMonthCo2e: 0.0,\r\n lastMonthKwH: 0.0,\r\n\r\n cummulativeCo2E: 0.0,\r\n cummulativeKwH: 0.0,\r\n\r\n scope: 'Scope1',\r\n\r\n fixedCarbonOptions: {\r\n dateRangeKey: '12m',\r\n granularity: Granularity.monthly,\r\n topXResults: 30,\r\n segregateBy: 'subscriptions',\r\n },\r\n newChartData: { datasets: [], labels: [] },\r\n maxDate: undefined,\r\n datasetIndexes: null,\r\n recommendationSummary: {},\r\n recommendationStatus: {},\r\n groupingItems: {},\r\n\r\n supportEmail: Config.get().SUPPORT_EMAIL,\r\n };\r\n },\r\n watch: {\r\n fixedCarbonOptions: {\r\n handler(options) {\r\n if (!options) return;\r\n if (this.$wait.is('getTenantMonthlyCO2E')) return;\r\n this.getFixedCO2EForTenant(options);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n scope: {\r\n handler() {\r\n if (!this.fixedCarbonOptions) return;\r\n if (this.$wait.is('getTenantMonthlyCO2E')) return;\r\n this.getFixedCO2EForTenant(this.fixedCarbonOptions);\r\n },\r\n immediate: false,\r\n }\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n recommendationStatusText() {\r\n if (this.$wait.is('getRecommendationStatus') || !this.recommendationStatus) {\r\n return this.$t('dashboard.recommendationStatus.loading');\r\n }\r\n const value = this.recommendationStatus.credentialStatus;\r\n if (value === undefined) {\r\n return this.$t('dashboard.recommendationStatus.unknown');\r\n }\r\n if (value === 0 || value === 'Unavailable') {\r\n return this.$t('dashboard.recommendationStatus.unavailable');\r\n }\r\n if (value === 1 || value === 'AllGood') {\r\n return this.$t('dashboard.recommendationStatus.allGood');\r\n }\r\n if (value === 2 || value === 'PartiallyGood') {\r\n return this.$t('dashboard.recommendationStatus.partiallyGood');\r\n }\r\n if (value === 3 || value === 'ActionRequired') {\r\n return this.$t('dashboard.recommendationStatus.actionRequired');\r\n }\r\n return this.$t('dashboard.recommendationStatus.unknown');\r\n },\r\n },\r\n methods: {\r\n getFixedCO2EForTenant: waitFor('getTenantMonthlyCO2E', async function getFixedCO2EForTenant(options) {\r\n const usageParams = convertSpendOptionsToQuery(options);\r\n if (!usageParams) return;\r\n const carbonResponse = await getNativeCO2e(options.segregateBy, usageParams, this.scope);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(carbonResponse, true);\r\n this.datasetIndexes = datasetIndexes;\r\n this.newChartData = {\r\n labels: [...usageDataset.labels],\r\n datasets: [...usageDataset.datasets],\r\n };\r\n this.maxDate = usageParams.toDate;\r\n this.cummulativeCo2E = carbonResponse.totalCO2E;\r\n this.cummulativeKwH = carbonResponse.totalKwH;\r\n const tm = moment.utc();\r\n const lm = moment.utc().add(-1, 'months');\r\n this.currentTotalCo2E = carbonResponse.monthlyCO2ETotals?.[tm.format('YYYY')]?.[tm.format('MM')] || 0.0;\r\n this.currentTotalKwH = carbonResponse.monthlyKwHTotals?.[tm.format('YYYY')]?.[tm.format('MM')] || 0.0;\r\n this.lastMonthCo2e = carbonResponse.monthlyCO2ETotals?.[lm.format('YYYY')]?.[lm.format('MM')] || 0.0;\r\n this.lastMonthKwH = carbonResponse.monthlyKwHTotals?.[lm.format('YYYY')]?.[lm.format('MM')] || 0.0;\r\n this.groupingItems = convertToItemRecords(usageParams, carbonResponse);\r\n }),\r\n handleDatasetClicked({ index, isOther }) {\r\n if (isOther) {\r\n this.fixedCarbonOptions.topXResults = this.fixedCarbonOptions.topXResults + 10;\r\n } else if (this.fixedCarbonOptions.segregateBy?.startsWith('tags') || false) {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n const tag = `${encodeURIComponent(this.tagKey)}:${encodeURIComponent(datasetGroupId)}`;\r\n this.$router.push(`/nativeemissions/overview/tagkeys/${encodeURIComponent(this.tagKey)}/tag/${tag}/carbon`);\r\n } else {\r\n const datasetGroupId = this.datasetIndexes[index];\r\n this.$router.push(\r\n `/nativeemissions/overview/${this.fixedCarbonOptions.segregateBy}/${datasetGroupId}/carbon`\r\n );\r\n }\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/nativeemissions/overview');\r\n this.$title = this.$t('nativeCarbonDashboard.title');\r\n },\r\n getRecommendationSummary: waitFor('getRecommendationSummary', async function getRecommendationSummary() {\r\n if (this.tenantStore.features.includes('Recommendations/View')) {\r\n this.recommendationSummary = await ApiV2.http\r\n .get('/api/recommendations/summary')\r\n .then((r) => r.data.data);\r\n } else {\r\n this.recommendationSummary = {};\r\n }\r\n }),\r\n getRecommendationStatus: waitFor('getRecommendationStatus', async function getRecommendationStatus() {\r\n if (this.tenantStore.features.includes('Recommendations/View')) {\r\n this.recommendationStatus = await ApiV2.http\r\n .get('/api/recommendations/credentialstatus')\r\n .then((r) => r.data);\r\n } else {\r\n this.recommendationStatus = {};\r\n }\r\n }),\r\n handleSavingsClicked() {\r\n const { hasUsageDataset } = useDatasetState(this.tenantStore);\r\n if (hasUsageDataset) {\r\n if (this.recommendationStatus.credentialStatus > 1) {\r\n this.$router.push('/settings');\r\n } else {\r\n this.$router.push('/recommendations');\r\n }\r\n } else {\r\n this.isUsageDatasetWarningOpen = true;\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=9a95d252&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&id=9a95d252&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dashboard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('settings.title'),\"icon\":\"settings\",\"extended\":\"\"}},[_c('v-tabs',{attrs:{\"background-color\":\"transparent\",\"align-with-title\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab',{attrs:{\"to\":\"/settings/general\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"dashboard\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.general\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/users\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"key\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.users\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/amazon\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-aws\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.amazon\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/azure\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-azure\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.azure\"))+\" \")],1),(_vm.isGoogleEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/google\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-gcp\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.google\"))+\" \")],1):_vm._e(),(_vm.isAlibabaEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/alibaba\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-alicloud\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.alibaba\"))+\" \")],1):_vm._e(),(_vm.isOracleEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/oracle\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-oci\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.oracle\"))+\" \")],1):_vm._e(),(_vm.isSnowflakeEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/snowflake\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cc-icon-vendor-snowflake\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.snowflake\"))+\" \")],1):_vm._e(),(_vm.isCustomAccountsEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/custom\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"publish\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.custom\"))+\" \")],1):_vm._e(),_c('v-tab',{attrs:{\"to\":\"/settings/groups\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"people\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.groups\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/mailinglists\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"publish\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.mailinglists\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/billing\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"credit_card\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.billing\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/apimanagement\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"vpn_key\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.apimanagement\"))+\" \")],1),(_vm.isTagMappingsEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/tagmappings\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"sell\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.tagmappings\"))+\" \")],1):_vm._e(),(_vm.isActionsEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/actions\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"code\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.actions\"))+\" \")],1):_vm._e(),_c('v-tab',{attrs:{\"to\":\"/settings/fxrates\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"currency_exchange\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.fxrates\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/dimensions\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"sell\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.dimensions\"))+\" \")],1),_c('v-tab',{attrs:{\"to\":\"/settings/webhooks\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"bolt\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.webhooks\"))+\" \")],1),(_vm.isAuditEnabled)?_c('v-tab',{attrs:{\"to\":\"/settings/audit\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"list\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.tabs.audit\"))+\" \")],1):_vm._e()],1)],1),_c('v-container',[_c('router-view',{attrs:{\"cloud-accounts\":_vm.cloudAccounts},on:{\"onCloudAccountsChanged\":_vm.getCloudAccounts}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"settings.title\": \"Settings\",\r\n \"settings.tabs.amazon\": \"Amazon\",\r\n \"settings.tabs.azure\": \"Azure\",\r\n \"settings.tabs.google\": \"Google\",\r\n \"settings.tabs.oracle\": \"Oracle\",\r\n \"settings.tabs.alibaba\": \"Alibaba\",\r\n \"settings.tabs.snowflake\": \"Snowflake\",\r\n \"settings.tabs.users\": \"Access Management\",\r\n \"settings.tabs.groups\": \"Groups\",\r\n \"settings.tabs.general\": \"General\",\r\n \"settings.tabs.billing\": \"Billing\",\r\n \"settings.tabs.apimanagement\": \"Api Keys\",\r\n \"settings.tabs.actions\": \"Actions\",\r\n \"settings.tabs.custom\":\"Custom\",\r\n \"settings.tabs.fxrates\":\"FX Rates\",\r\n \"settings.tabs.tagmappings\": \"Mapping Rules\",\r\n \"settings.tabs.mailinglists\": \"Mailing Lists\",\r\n \"settings.tabs.webhooks\": \"WebHooks\",\r\n \"settings.tabs.dimensions\": \"Dimensions\",\r\n \"settings.tabs.audit\": \"Audit\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IndexView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IndexView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IndexView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IndexView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./IndexView.vue?vue&type=template&id=73a0f4cb&\"\nimport script from \"./IndexView.vue?vue&type=script&lang=js&\"\nexport * from \"./IndexView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./IndexView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.amazon.title'),\"caption\":_vm.$t('settings.amazon.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('CreateAmazonAccountMenu',{on:{\"input\":function($event){return _vm.handleCreateNewAmazonAccount($event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"add\"))+\" \")],1)]}}])})]},proxy:true}])},[_c('amazon-ws-cloud-accounts-table',{attrs:{\"items\":_vm.amazonCloudAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit name\")))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit currencies\")))])],1)],1),(item.awsAssumeRoleCredential && _vm.supportsRoleBasedAccount && item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccountNew(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"settings.amazon.editNew\")))])],1)],1):_vm._e(),(item.awsIamUsageCredential && item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccountLegacy(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"settings.amazon.editLegacy\")))])],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{on:{\"click\":function($event){return _vm.copyCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"copy cloud connection\")))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"delete\")))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('CreateAmazonWsCloudAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAwsAccount),callback:function ($$v) {_vm.isCreatingAwsAccount=$$v},expression:\"isCreatingAwsAccount\"}}),_c('CreateAmazonAssumeRoleCloudAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAwsRoleBasedAccount),callback:function ($$v) {_vm.isCreatingAwsRoleBasedAccount=$$v},expression:\"isCreatingAwsRoleBasedAccount\"}}),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeletingAwsAccount),callback:function ($$v) {_vm.isDeletingAwsAccount=$$v},expression:\"isDeletingAwsAccount\"}}),_c('UpdateAmazonWsCredentialDialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAwsAccount),callback:function ($$v) {_vm.isEditingAwsAccount=$$v},expression:\"isEditingAwsAccount\"}}),_c('UpdateAmazonAssumeRoleCredentialsDialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAwsRoleBasedAccount),callback:function ($$v) {_vm.isEditingAwsRoleBasedAccount=$$v},expression:\"isEditingAwsRoleBasedAccount\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAwsAccountName),callback:function ($$v) {_vm.isEditingAwsAccountName=$$v},expression:\"isEditingAwsAccountName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-amazon-ws-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAwsAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAwsAccount'),expression:\"'creatingAwsAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Amazon' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-amazon-ws-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setAmazonWsCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" Configure your AWS Credentials. This setup can be a bit involved so we recommend reading our \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/AWS/`}},[_vm._v(\"AWS setup guide \")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n AwsIamUsageCredential: {\n ProviderId: _vm.accessKeyId,\n Token: _vm.secretAccessKey,\n Container: _vm.s3BucketName,\n RegionCode: _vm.regionCode,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.Name,\"rules\":_vm.nameRules,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. AKIAIOSFODNN7EXAMPLE\",\"label\":_vm.$t('setAmazonWsCredentialsCard.accessKeyId'),\"rules\":_vm.accessKeyIdRules,\"counter\":20,\"required\":\"\"},model:{value:(_vm.accessKeyId),callback:function ($$v) {_vm.accessKeyId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"accessKeyId\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\",\"append-icon\":_vm.showSecretAccessKey ? 'visibility_off' : 'visibility',\"type\":_vm.showSecretAccessKey ? 'text' : 'password',\"label\":_vm.$t('setAmazonWsCredentialsCard.secretAccessKey'),\"rules\":_vm.secretAccessKeyRules,\"counter\":40,\"required\":\"\"},on:{\"click:append\":() => (_vm.showSecretAccessKey = !_vm.showSecretAccessKey)},model:{value:(_vm.secretAccessKey),callback:function ($$v) {_vm.secretAccessKey=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"secretAccessKey\"}}),_c('s3-region-autocomplete',{attrs:{\"label\":_vm.$t('setAmazonWsCredentialsCard.regionCode'),\"rules\":[() => true]},model:{value:(_vm.regionCode),callback:function ($$v) {_vm.regionCode=$$v},expression:\"regionCode\"}}),_c('s3-bucket-autocomplete',{attrs:{\"accessKeyId\":_vm.accessKeyId,\"secretAccessKey\":_vm.secretAccessKey,\"region\":_vm.regionCode,\"label\":_vm.$t('setAmazonWsCredentialsCard.s3BucketName'),\"rules\":_vm.s3BucketNameRules},model:{value:(_vm.s3BucketName),callback:function ($$v) {_vm.s3BucketName=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"s3BucketName\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-autocomplete',{attrs:{\"value\":_vm.value,\"items\":_vm.matchingBuckets,\"loading\":_vm.loading,\"search-input\":_vm.search,\"rules\":_vm.rules,\"hide-no-data\":\"\",\"hide-selected\":\"\",\"label\":_vm.label,\"return-object\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [(!_vm.loading)?_c('v-icon',[_vm._v(\"search\")]):_c('v-progress-circular',{attrs:{\"width\":3,\"size\":\"24\",\"color\":\"primary\",\"indeterminate\":\"\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3BucketAutocomplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3BucketAutocomplete.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./S3BucketAutocomplete.vue?vue&type=template&id=b1d87eb8&\"\nimport script from \"./S3BucketAutocomplete.vue?vue&type=script&lang=js&\"\nexport * from \"./S3BucketAutocomplete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-autocomplete',{attrs:{\"value\":_vm.value,\"items\":_vm.matchingS3Regions,\"item-text\":\"name\",\"item-value\":\"code\",\"loading\":_vm.loading,\"search-input\":_vm.search,\"rules\":_vm.rules,\"hint\":!_vm.value ? _vm.$t('s3RegionAutocomplete.noRegionHint') : undefined,\"persistent-hint\":\"\",\"hide-no-data\":\"\",\"hide-selected\":\"\",\"label\":_vm.label,\"return-object\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event ? $event.code : null)},\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [(!_vm.loading)?_c('v-icon',[_vm._v(\"search\")]):_c('v-progress-circular',{attrs:{\"width\":3,\"size\":\"24\",\"color\":\"primary\",\"indeterminate\":\"\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"s3RegionAutocomplete.noRegionHint\": \"Please specify if your bucket is in a Chinese region.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3RegionAutocomplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3RegionAutocomplete.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3RegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./S3RegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./S3RegionAutocomplete.vue?vue&type=template&id=055f8da8&\"\nimport script from \"./S3RegionAutocomplete.vue?vue&type=script&lang=js&\"\nexport * from \"./S3RegionAutocomplete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./S3RegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setAmazonWsCredentialsCard.title\": \"Set AWS IAM Access Key Credentials\",\r\n \"setAmazonWsCredentialsCard.name.required\": \"An name for this cloud connection is required\",\r\n\r\n \"setAmazonWsCredentialsCard.accessKeyId\": \"Access Key ID\",\r\n \"setAmazonWsCredentialsCard.accessKeyId.required\": \"Access Key ID is required\",\r\n \"setAmazonWsCredentialsCard.accessKeyId.notKeyId\": \"Access Key IDs comprise of 20 alphanumeric uppercase characters\",\r\n\r\n \"setAmazonWsCredentialsCard.regionCode\": \"S3 Region\",\r\n\r\n \"setAmazonWsCredentialsCard.secretAccessKey\": \"Secret Access Key\",\r\n \"setAmazonWsCredentialsCard.secretAccessKey.required\": \"Secret Access Key is required\",\r\n \"setAmazonWsCredentialsCard.secretAccessKey.notSecretKey\": \"Secret Access Keys comprise of 40 upper and lower case characters\",\r\n\r\n \"setAmazonWsCredentialsCard.s3BucketName\": \"S3 Bucket Name (Reports)\",\r\n \"setAmazonWsCredentialsCard.s3BucketName.required\": \"S3 Bucket Name is required\",\r\n \"setAmazonWsCredentialsCard.s3BucketName.notBucketName\": \"The provided key is not a valid S3 bucket name\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAmazonWSCredentialsCard.vue?vue&type=template&id=3190db19&\"\nimport script from \"./SetAmazonWSCredentialsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAmazonWSCredentialsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAmazonWSCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonWSCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetAmazonWSCredentialsDialog.vue?vue&type=template&id=b1d795a8&\"\nimport script from \"./SetAmazonWSCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAmazonWSCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/metadata/cloudaccounts\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createCloudAccountButton.errorMessage\": \"There was an error encountered while creating this cloud connection. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCloudAccountButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCloudAccountButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostCloudAccountButton.vue?vue&type=template&id=3dc894f4&\"\nimport script from \"./PostCloudAccountButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PostCloudAccountButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonWSCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonWSCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAmazonWSCloudAccountDialog.vue?vue&type=template&id=32daa741&\"\nimport script from \"./CreateAmazonWSCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAmazonWSCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SetAmazonAssumeRoleCredentialsDialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAwsAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAwsAccount'),expression:\"'creatingAwsAccount'\"}],attrs:{\"value\":{ ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('SetAmazonAssumeRoleCredentialsCard',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.$t('setAmazonAssumeRoleCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" Configure your AWS Credentials. This setup can be a bit involved so we recommend reading our \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/AWS/`}},[_vm._v(\"AWS setup guide \")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n Type: _vm.cloudAccountType,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n AwsAssumeRoleCredential: {\n ClientDomain: _vm.externalId,\n ProviderId: _vm.roleArn,\n Token: _vm.sessionName,\n Container: _vm.s3BucketName,\n RegionCode: _vm.regionCode,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.Name,\"rules\":[ _vm.$rules.required() ],\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),(_vm.showPax8Option)?_c('v-checkbox',{attrs:{\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.isPax8Format'),\"disabled\":_vm.disabled && _vm.disabled.IsPax8},model:{value:(_vm.isPax8),callback:function ($$v) {_vm.isPax8=$$v},expression:\"isPax8\"}}):_vm._e(),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. arn:aws:iam::123456789012:role/RoleName\",\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.roleArn'),\"rules\":[ _vm.$rules.required(), _vm.$rules.test(/^arn:aws:iam::\\d{12}:role\\/[\\w+=,.@-]{1,64}$/) ],\"counter\":64,\"required\":\"\"},on:{\"change\":function($event){return _vm.tryPrefillExternalId()}},model:{value:(_vm.roleArn),callback:function ($$v) {_vm.roleArn=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"roleArn\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. 123456789012\",\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.externalId'),\"rules\":[ _vm.$rules.required(), _vm.$rules.test(/^[\\w-]{12,36}$/) ],\"counter\":12,\"required\":\"\"},model:{value:(_vm.externalId),callback:function ($$v) {_vm.externalId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"externalId\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. CloudCostAgent\",\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.sessionName'),\"rules\":[ _vm.$rules.required(), _vm.$rules.test(/^[\\w-]{2,64}$/) ],\"counter\":64,\"required\":\"\"},model:{value:(_vm.sessionName),callback:function ($$v) {_vm.sessionName=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"sessionName\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.regionCode'),\"rules\":[() => true],\"placeholder\":\"e.g. ap-southeast-2\"},model:{value:(_vm.regionCode),callback:function ($$v) {_vm.regionCode=$$v},expression:\"regionCode\"}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('setAmazonAssumeRoleCredentialsCard.s3BucketName'),\"rules\":_vm.s3BucketNameRules,\"placeholder\":\"e.g. my-usage-bucket\"},model:{value:(_vm.s3BucketName),callback:function ($$v) {_vm.s3BucketName=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"s3BucketName\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Config from '@/lib/Config';\r\nimport { defineComponent } from 'vue';\r\nimport { useTenantStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nconst DEFAULT_SESSION_NAME = 'CloudCostAgent';\r\nconst bucketNameRegex = /(?!^(\\d{1,3}\\.){3}\\d{1,3}$)(^[a-z0-9]([a-z0-9-]*(\\.[a-z0-9])?)*$)/;\r\nexport default defineComponent({\r\n props: ['loading', 'value', 'disabled'],\r\n data() {\r\n return {\r\n valid: false,\r\n docsUrl: Config.get().DOCS_URL,\r\n name: '',\r\n useTenantCurrencies: false,\r\n externalId: '',\r\n roleArn: '',\r\n sessionName: DEFAULT_SESSION_NAME,\r\n s3BucketName: '',\r\n isPax8: false,\r\n s3BucketNameRules: [\r\n (v) => !!v || this.$t('setAmazonAssumeRoleCredentialsCard.s3BucketName.required'),\r\n (v) => bucketNameRegex.test(v) || this.$t('setAmazonAssumeRoleCredentialsCard.s3BucketName.notBucketName'),\r\n ],\r\n regionCode: ''\r\n };\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.name = val.name;\r\n this.isPax8 = val.type === 'AmazonPax8';\r\n this.useTenantCurrencies = val.useTenantCurrencies;\r\n if (val.awsAssumeRoleCredential) {\r\n this.externalId = val.awsAssumeRoleCredential.clientDomain;\r\n this.roleArn = val.awsAssumeRoleCredential.providerId;\r\n this.sessionName = val.awsAssumeRoleCredential.token;\r\n this.regionCode = val.awsAssumeRoleCredential.regionCode;\r\n this.s3BucketName = val.awsAssumeRoleCredential.container;\r\n } else {\r\n this.externalId = '';\r\n this.roleArn = '';\r\n this.sessionName = DEFAULT_SESSION_NAME\r\n this.s3BucketName = '';\r\n this.regionCode = '';\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n showPax8Option() {\r\n return this.tenantStore.hasTenantFeature(\"Pax8Isolated\");\r\n },\r\n cloudAccountType() {\r\n return this.isPax8 ? 'AmazonPax8' : 'Amazon';\r\n }\r\n },\r\n methods: {\r\n tryPrefillExternalId() {\r\n if (this.externalId) return;\r\n if (!this.roleArn) return;\r\n if (!this.roleArn.startsWith('arn:aws:iam::')) return;\r\n const [,,,,externalId] = this.roleArn.split(':');\r\n if (!externalId) return;\r\n this.externalId = externalId;\r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=template&id=15943cde&\"\nimport script from \"./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAmazonAssumeRoleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetAmazonAssumeRoleCredentialsDialog.vue?vue&type=template&id=85b69f78&\"\nimport script from \"./SetAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAssumeRoleCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAssumeRoleCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAmazonAssumeRoleCloudAccountDialog.vue?vue&type=template&id=71294cdb&\"\nimport script from \"./CreateAmazonAssumeRoleCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAmazonAssumeRoleCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-amazon-ws-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAwsAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAwsAccount'),expression:\"'creatingAwsAccount'\"}],attrs:{\"type\":\"AwsIamUsageCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":`/api/metadata/cloudaccounts/${(_vm.value || {}).id}/${_vm.type}`,\"version\":\"v2\",\"value\":(_vm.value || {})[_vm.type || '']},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putCredentialButton.errorMessage\": \"There was an error encountered while updating the credentials of this cloud connection. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCredentialButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCredentialButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCredentialButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCredentialButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutCredentialButton.vue?vue&type=template&id=443b6f25&\"\nimport script from \"./PutCredentialButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PutCredentialButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutCredentialButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAmazonWSCredentialDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAmazonWSCredentialDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAmazonWSCredentialDialog.vue?vue&type=template&id=6e070c93&\"\nimport script from \"./UpdateAmazonWSCredentialDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAmazonWSCredentialDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SetAmazonAssumeRoleCredentialsDialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAwsAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true, IsPax8: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAwsAccount'),expression:\"'creatingAwsAccount'\"}],attrs:{\"type\":\"AwsAssumeRoleCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAmazonAssumeRoleCredentialsDialog.vue?vue&type=template&id=baf9cb5e&\"\nimport script from \"./UpdateAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAmazonAssumeRoleCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-cloud-account-card',{attrs:{\"loading\":_vm.$wait.is('deleteAccount'),\"value\":_vm.account,\"title\":_vm.$t('deleteCloudAccountDialog.title'),\"subtitle\":_vm.$t('deleteCloudAccountDialog.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deleteAccount'),expression:\"'deleteAccount'\"}],attrs:{\"value\":_vm.account,\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/metadata/cloudaccounts/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteCloudAccountButton.errorMessage\": \"There was an error encountered while deleting this cloud connection. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteCloudAccountButton.vue?vue&type=template&id=0af6d717&\"\nimport script from \"./DeleteCloudAccountButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteCloudAccountButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteCloudAccountDialog.title\": \"Delete Cloud Connection\",\r\n \"deleteCloudAccountDialog.subtitle\": \"Warning: This process is irreversible! Your cloud connection data will be deleted permanently and you will need to re-enter your credentials if you want to see your data again.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCloudAccountDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteCloudAccountDialog.vue?vue&type=template&id=20428412&\"\nimport script from \"./DeleteCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteCloudAccountDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('update-entity-name-card',{attrs:{\"value\":_vm.account,\"loading\":_vm.$wait.is('updatingAccountName')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('patch-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingAccountName'),expression:\"'updatingAccountName'\"}],attrs:{\"value\":_vm.account,\"patches\":[{ op: 'replace', path: 'Name', value: form.Name }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulRename(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"default\",null,{\"isValid\":_vm.valid,\"clear\":reset,\"formId\":formId,\"loading\":_vm.loading,\"form\":{ Name: _vm.entityName }})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"persistent-hint\":\"\",\"label\":_vm.$t('name'),\"required\":\"\"},model:{value:(_vm.entityName),callback:function ($$v) {_vm.entityName=$$v},expression:\"entityName\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntityNameCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntityNameCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateEntityNameCard.vue?vue&type=template&id=01bcfce6&\"\nimport script from \"./UpdateEntityNameCard.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateEntityNameCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":`/api/metadata/cloudaccounts/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchCloudAccountButton.errorMessage\": \"There was an error encountered while updating this cloud connection. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchCloudAccountButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchCloudAccountButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PatchCloudAccountButton.vue?vue&type=template&id=1fa5a4ec&\"\nimport script from \"./PatchCloudAccountButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PatchCloudAccountButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PatchCloudAccountButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditCloudAccountNameDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditCloudAccountNameDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditCloudAccountNameDialog.vue?vue&type=template&id=4f1f0a32&\"\nimport script from \"./EditCloudAccountNameDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditCloudAccountNameDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-cloud-account-currencies-card',{attrs:{\"value\":_vm.account,\"loading\":_vm.$wait.is('updatingAccountCurrencies')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('patch-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingAccountCurrencies'),expression:\"'updatingAccountCurrencies'\"}],attrs:{\"value\":{ Id: _vm.account ? _vm.account.id : null },\"patches\":[{ op: 'replace', path: 'UseTenantCurrencies', value: form.UseTenantCurrencies }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulRename(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setCloudAccountCurrenciesCard.title'),\"subtitle\":_vm.$t('setCloudAccountCurrenciesCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(formId, reset){return [_vm._t(\"actions\",null,{\"form\":{ UseTenantCurrencies: _vm.useTenantCurrencies },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-alert',{attrs:{\"color\":\"warning\",\"text\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" \"+_vm._s(_vm.$t('setCloudAccountCurrenciesCard.alert'))+\" \")],1),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setCloudAccountCurrenciesCard.title\": \"Set Currency Source\",\r\n \"setCloudAccountCurrenciesCard.subtitle\": \"Change the currency source of this cloud connection.\",\r\n \"setCloudAccountCurrenciesCard.alert\": \"Changes to the currency source of a cloud connection only apply to the current month on.\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCloudAccountCurrenciesCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCloudAccountCurrenciesCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCloudAccountCurrenciesCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetCloudAccountCurrenciesCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetCloudAccountCurrenciesCard.vue?vue&type=template&id=fe8c2d78&\"\nimport script from \"./SetCloudAccountCurrenciesCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetCloudAccountCurrenciesCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetCloudAccountCurrenciesCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditCloudAccountCurrenciesDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditCloudAccountCurrenciesDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditCloudAccountCurrenciesDialog.vue?vue&type=template&id=a2629d62&\"\nimport script from \"./EditCloudAccountCurrenciesDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditCloudAccountCurrenciesDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('amazonWSCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateRouteHistory(item)}}},[_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(item.Name)+\" \")])])]}},{key:`item.AWSConnectionAccessKeyId`,fn:function({ item }){return [_c('span',{class:item.AWSConnectionEnabled ? '' : 'error--text'},[_vm._v(\" \"+_vm._s(item.AWSConnectionAccessKeyId)+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.AWSConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(_vm._s(item.AWSConnectionEnabled ? 'done' : 'error'))])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.AWSConnectionEnabled ? _vm.$t('connected') : _vm.$t('amazonWSCloudAccountsTable.disconnectedUsageConnection'))+\" \")])])],1)]}},{key:`item.AWSConnectionExpiry`,fn:function({ item }){return [(!item.AWSConnectionExpiry)?_c('span',[_vm._v(\"-\")]):(item.AWSConnectionExpiry.getFullYear() > 3000)?_c('span',[_vm._v(\"Never\")]):_c('span',{class:item.AWSConnectionExpiry < new Date() ? 'error--text' : ''},[_vm._v(_vm._s(_vm._f(\"calendarFormat\")(item.AWSConnectionExpiry)))])]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\n\r\nexport function amazonCloudAccountTableFilter(ca) {\r\n return ca.providerType === 'Amazon';\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/amazon',\r\n },\r\n },\r\n data() {\r\n return {\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n };\r\n },\r\n computed: {\r\n tableEntities() {\r\n if (!this.items) return [];\r\n return this.items.filter(amazonCloudAccountTableFilter).map((ca) => {\r\n let expiryDate =\r\n ca.awsIamUsageCredential && ca.awsIamUsageCredential.expiryDate\r\n ? new Date(ca.awsIamUsageCredential.expiry)\r\n : null;\r\n // In javascript the getTime value of a date isNaN\r\n if (expiryDate && isNaN(expiryDate.getTime())) {\r\n expiryDate = null;\r\n }\r\n const AWSConnectionAccessKeyId =\r\n ca.awsIamUsageCredential?.providerId ||\r\n ca.awsAssumeRoleCredential?.providerId ||\r\n ca.type === 'SelfReferential'\r\n ? ''\r\n : '';\r\n const AWSConnectionBucketName =\r\n ca.awsIamUsageCredential?.container ||\r\n ca.awsAssumeRoleCredential?.providerId ||\r\n ca.type === 'SelfReferential'\r\n ? ''\r\n : '';\r\n const AWSConnectionEnabled =\r\n ca.awsIamUsageCredential?.valid ||\r\n ca.awsAssumeRoleCredential?.valid ||\r\n ca.type === 'SelfReferential';\r\n return {\r\n Id: ca.id,\r\n Name: ca.name,\r\n AWSConnectionEnabled,\r\n AWSConnectionAccessKeyId,\r\n AWSConnectionBucketName,\r\n AWSConnectionExpiry: expiryDate,\r\n _original: ca,\r\n };\r\n });\r\n },\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'Name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('amazonWSCloudAccountsTable.accessKeyId'),\r\n value: 'AWSConnectionAccessKeyId',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('amazonWSCloudAccountsTable.bucketName'),\r\n value: 'AWSConnectionBucketName',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('amazonWSCloudAccountsTable.expiry'),\r\n value: 'AWSConnectionExpiry',\r\n sortable: true,\r\n },\r\n {\r\n text: 'Actions',\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n methods: {\r\n updateRouteHistory(item) {\r\n const navigationHistory: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsAWSCloudAccount,\r\n tenantId: null,\r\n cloudAccountId: item.Id,\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationHistory);\r\n return this.$router.push(`${this.routePrefix}/${item.Id}`);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonWSCloudAccountsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonWSCloudAccountsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonWSCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonWSCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AmazonWSCloudAccountsTable.vue?vue&type=template&id=59343188&scoped=true&\"\nimport script from \"./AmazonWSCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AmazonWSCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AmazonWSCloudAccountsTable.vue?vue&type=style&index=0&id=59343188&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59343188\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AmazonWSCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('PrettyListItemMenu',{attrs:{\"items\":_vm.prettyListItems},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}}],null,true)},[_c('v-list',{attrs:{\"light\":\"\",\"max-width\":\"450\"}},_vm._l((_vm.prettyListItems),function(item,i){return _c('fragment',{key:item.key},[_c('pretty-list-item',{attrs:{\"top\":item.top,\"text\":item.text,\"bottom\":item.bottom,\"light\":true},on:{\"click\":function($event){return _vm.$emit('input', item.key)}}}),(i !== _vm.items.length - 1)?_c('v-divider'):_vm._e()],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list-item',_vm._g({staticStyle:{\"height\":\"100%\"},attrs:{\"color\":\"primary\"}},_vm.$listeners),[_c('v-list-item-content',[_c('div',{class:`${_vm.light ? 'grey--text' : 'primary--text'} body-2 mb-2 font-weight-light`},[_vm._t(\"top\",function(){return [_vm._v(_vm._s(_vm.top))]})],2),_c('v-list-item-title',{staticClass:\"mb-2\"},[_vm._t(\"default\",function(){return [_c('span',[_vm._v(_vm._s(_vm.text))])]})],2),_c('div',{class:`v-markdown caption ${_vm.light ? 'grey--text' : ''} text--darken-1`},[_vm._t(\"bottom\",function(){return [_c('p',[_vm._v(_vm._s(_vm.bottom))])]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrettyListItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrettyListItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrettyListItem.vue?vue&type=template&id=48348354&\"\nimport script from \"./PrettyListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./PrettyListItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport PrettyListItem from \"@/components/Common/PrettyListItem.vue\";\r\nimport { defineComponent } from \"vue\";\r\n\r\nexport interface IPrettyListItemViewModel {\r\n top: string;\r\n text: string;\r\n bottom: string;\r\n key: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: { items: Array },\r\n components: { PrettyListItem },\r\n computed: {\r\n prettyListItems():IPrettyListItemViewModel[] {\r\n return this.items;\r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrettyListItemMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrettyListItemMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrettyListItemMenu.vue?vue&type=template&id=c18db880&\"\nimport script from \"./PrettyListItemMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrettyListItemMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport PrettyListItemMenu, {\r\n IPrettyListItemViewModel,\r\n} from \"@/components/Common/PrettyListItemMenu.vue\";\r\nimport { defineComponent } from \"vue\";\r\nimport { CloudCredentialType } from \"@/models\";\r\nimport Config from \"@/lib/Config\";\r\nimport { useTenantStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nexport default defineComponent({\r\n components: { PrettyListItemMenu },\r\n props: {\r\n value: null,\r\n items: {\r\n type: Array,\r\n default: () => [\r\n CloudCredentialType.awsAssumeRoleUsage,\r\n CloudCredentialType.awsIamUsage,\r\n ],\r\n },\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n prettyListItems(): IPrettyListItemViewModel[] {\r\n if (!this.items) return [];\r\n\r\n if (this.tenantStore.hasTenantFeature(\"Pax8Isolated\"))\r\n return new Array({\r\n key: \"AwsAssumeRoleUsage\",\r\n top: this.$t(`createAmazonAccountMenu.AwsPax8AssumeRoleUsage.top`),\r\n text: this.$t(`createAmazonAccountMenu.AwsPax8AssumeRoleUsage.text`),\r\n bottom: this.$t(`createAmazonAccountMenu.AwsPax8AssumeRoleUsage.bottom`)\r\n }); \r\n\r\n return this.items\r\n .filter(\r\n (i:string) =>\r\n i != CloudCredentialType.awsAssumeRoleUsage ||\r\n Config.isFeatureEnabled(\"EnabledAwsAssumeRole\")\r\n )\r\n .map((i: string) => ({\r\n key: i,\r\n top: this.$t(`createAmazonAccountMenu.${i}.top`),\r\n text: this.$t(`createAmazonAccountMenu.${i}.text`),\r\n bottom: this.$t(`createAmazonAccountMenu.${i}.bottom`),\r\n }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAccountMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAccountMenu.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAmazonAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateAmazonAccountMenu.vue?vue&type=template&id=1b64b181&\"\nimport script from \"./CreateAmazonAccountMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateAmazonAccountMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateAmazonAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CreateAmazonWsCloudAccountDialog from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue\";\r\nimport CreateAmazonAssumeRoleCloudAccountDialog from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue\";\r\nimport UpdateAmazonWsCredentialDialog from \"@/components/Settings.CloudAccounts/Amazon/UpdateAmazonWSCredentialDialog.vue\";\r\nimport UpdateAmazonAssumeRoleCredentialsDialog from \"@/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue\";\r\nimport DeleteCloudAccountDialog from \"@/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue\";\r\nimport EditCloudAccountNameDialog from \"@/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue\";\r\nimport EditCloudAccountCurrenciesDialog from \"@/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue\";\r\nimport AmazonWsCloudAccountsTable, {\r\n amazonCloudAccountTableFilter,\r\n} from \"@/components/Settings.CloudAccounts/Amazon/AmazonWSCloudAccountsTable.vue\";\r\nimport CreateAmazonAccountMenu from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue\";\r\nimport TaxonomyType from \"@/stores/models/TaxonomyType\";\r\nimport { ICloudAccountNavigation } from \"@/stores/models/ICloudAccountNavigation\";\r\nimport { useCloudAccountNavigationStore } from \"@/stores/cloudAccountNavigation\";\r\nimport { useTenantStore } from \"@/stores/tenant\";\r\nimport { mapStores } from \"pinia\";\r\nimport { defineComponent } from \"vue\";\r\nimport { CloudCredentialType } from \"@/models\";\r\nimport Config from '@/lib/Config';\r\n\r\nexport default defineComponent({\r\n props: {\r\n cloudAccounts: Array,\r\n },\r\n components: {\r\n CreateAmazonWsCloudAccountDialog,\r\n CreateAmazonAssumeRoleCloudAccountDialog,\r\n UpdateAmazonWsCredentialDialog,\r\n UpdateAmazonAssumeRoleCredentialsDialog,\r\n DeleteCloudAccountDialog,\r\n AmazonWsCloudAccountsTable,\r\n EditCloudAccountNameDialog,\r\n EditCloudAccountCurrenciesDialog,\r\n CreateAmazonAccountMenu,\r\n },\r\n title() {\r\n return this.$t(\"settings.amazon.title\");\r\n },\r\n data() {\r\n return {\r\n isCreatingAwsAccount: false,\r\n isCreatingAwsRoleBasedAccount: false,\r\n isEditingAwsAccount: false,\r\n isEditingAwsRoleBasedAccount: false,\r\n isEditingAwsAccountName: false,\r\n isEditingAccountCurrencies: false,\r\n isDeletingAwsAccount: false,\r\n focusedAccount: null,\r\n supportsRoleBasedAccount: Config.isFeatureEnabled('EnabledAwsAssumeRole')\r\n };\r\n },\r\n computed: {\r\n amazonCloudAccounts() {\r\n return this.cloudAccounts.filter(amazonCloudAccountTableFilter);\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n handleCreateNewAmazonAccount(\r\n key: CloudCredentialType.awsAssumeRoleUsage | CloudCredentialType.awsIamUsage\r\n ) {\r\n if (key === CloudCredentialType.awsAssumeRoleUsage) {\r\n this.isCreatingAwsRoleBasedAccount = true;\r\n } else if (key === CloudCredentialType.awsIamUsage) {\r\n this.isCreatingAwsAccount = true;\r\n }\r\n },\r\n handleDialogChange(isOpen) {\r\n if (isOpen) return;\r\n this.$router.push(\"/settings/amazon\");\r\n this.$title = this.$t(\"settings.amazon.title\");\r\n },\r\n onCloudAccountsChanged() {\r\n this.$emit(\"onCloudAccountsChanged\");\r\n },\r\n startEditName(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAwsAccountName = true;\r\n },\r\n startEditCurrencies(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAccountCurrencies = true;\r\n },\r\n startEditCloudAccountLegacy(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAwsAccount = true;\r\n },\r\n startEditCloudAccountNew(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAwsRoleBasedAccount = true;\r\n },\r\n copyCloudAccount(item) {\r\n const navigationSource: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsAWS,\r\n tenantId: null,\r\n cloudAccountId: null,\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationSource);\r\n const url = `/copy/cloudaccounts/${item.cloudAccountId}`;\r\n this.$router.push(url);\r\n },\r\n startDeleteAccount(account) {\r\n this.focusedAccount = account;\r\n this.isDeletingAwsAccount = true;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmazonView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AmazonView.vue?vue&type=template&id=4667a498&\"\nimport script from \"./AmazonView.vue?vue&type=script&lang=ts&\"\nexport * from \"./AmazonView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AmazonView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.azure.title'),\"caption\":_vm.$t('settings.azure.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-cloud-account-menu',{attrs:{\"items\":_vm.cloudAccountTypes},on:{\"input\":function($event){return _vm.startCreateAccount($event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"add\"))+\" \")],1)]}}])})]},proxy:true}])},[_c('azure-cloud-accounts-table',{attrs:{\"items\":_vm.azureCloudAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.connectionmenu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[(item.type !== 'SelfReferential' && item.type !== 'Azure')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit usage connection\")))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditArmConnection(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[(item.type !== 'Azure')?_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit enhanced connection\")))]):_vm._e(),(item.type == 'Azure')?_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit connection\")))]):_vm._e()],1)],1)],1)],1)]}},{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit name\")))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"edit currencies\")))])],1)],1),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{on:{\"click\":function($event){return _vm.copyCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"copy cloud connection\")))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t(\"delete\")))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('create-azure-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzureArmAccount),callback:function ($$v) {_vm.isCreatingAzureArmAccount=$$v},expression:\"isCreatingAzureArmAccount\"}}),_c('create-azure-cme-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzureCmeAccount),callback:function ($$v) {_vm.isCreatingAzureCmeAccount=$$v},expression:\"isCreatingAzureCmeAccount\"}}),_c('create-azure-ea-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzureEaAccount),callback:function ($$v) {_vm.isCreatingAzureEaAccount=$$v},expression:\"isCreatingAzureEaAccount\"}}),_c('create-rhipe-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingRhipeAccount),callback:function ($$v) {_vm.isCreatingRhipeAccount=$$v},expression:\"isCreatingRhipeAccount\"}}),_c('CreateAmazonAssumeRoleCloudAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzurePax8Account),callback:function ($$v) {_vm.isCreatingAzurePax8Account=$$v},expression:\"isCreatingAzurePax8Account\"}}),_c('update-azure-arm-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAzureArmAccount),callback:function ($$v) {_vm.isEditingAzureArmAccount=$$v},expression:\"isEditingAzureArmAccount\"}}),_c('update-azure-cme-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAzureCmeAccount),callback:function ($$v) {_vm.isEditingAzureCmeAccount=$$v},expression:\"isEditingAzureCmeAccount\"}}),_c('update-azure-ea-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAzureEaAccount),callback:function ($$v) {_vm.isEditingAzureEaAccount=$$v},expression:\"isEditingAzureEaAccount\"}}),_c('update-rhipe-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingRhipeAccount),callback:function ($$v) {_vm.isEditingRhipeAccount=$$v},expression:\"isEditingRhipeAccount\"}}),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeletingAccount),callback:function ($$v) {_vm.isDeletingAccount=$$v},expression:\"isDeletingAccount\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountName),callback:function ($$v) {_vm.isEditingAccountName=$$v},expression:\"isEditingAccountName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('UpdateAmazonAssumeRoleCredentialsDialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAzurePax8Account),callback:function ($$v) {_vm.isEditingAzurePax8Account=$$v},expression:\"isEditingAzurePax8Account\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('PrettyListItemMenu',{attrs:{\"items\":_vm.prettyListItems},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport PrettyListItemMenu, {\r\n IPrettyListItemViewModel,\r\n} from \"@/components/Common/PrettyListItemMenu.vue\";\r\nimport { defineComponent } from \"vue\";\r\nimport { CloudAccountType } from '@/models';\r\nexport default defineComponent({\r\n components: { PrettyListItemMenu },\r\n props: {\r\n value: null,\r\n items: {\r\n type: Array,\r\n default: () => [\r\n CloudAccountType.azure,\r\n CloudAccountType.azurecme,\r\n CloudAccountType.amazon,\r\n CloudAccountType.google,\r\n CloudAccountType.microsoftCsp,\r\n CloudAccountType.rhipe,\r\n CloudAccountType.vmWare,\r\n CloudAccountType.alibaba,\r\n ],\r\n },\r\n },\r\n computed: {\r\n prettyListItems(): IPrettyListItemViewModel[] {\r\n if (!this.items) return [];\r\n return this.items.map((i: string) => ({\r\n key: i,\r\n top: this.$t(`createCloudAccountMenu.${i}.top`),\r\n text: this.$t(`createCloudAccountMenu.${i}.text`),\r\n bottom: this.$t(`createCloudAccountMenu.${i}.bottom`),\r\n }));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCloudAccountMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCloudAccountMenu.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCloudAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateCloudAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateCloudAccountMenu.vue?vue&type=template&id=8b2db88e&\"\nimport script from \"./CreateCloudAccountMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateCloudAccountMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateCloudAccountMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-arm-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAzureArmAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAzureArmAccount'),expression:\"'creatingAzureArmAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Azure' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-azure-arm-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setAzureArmCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\"Configure your Azure Resource Manager credentials. These credentials correspond to a single Azure AD app that you need to configure in your tenant. You can find more information on how to configure these credentials \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/Azure`}},[_vm._v(\"here \")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n Features: _vm.copyRemoteTags ? 'CopyRemoteTags' : null,\n AzureActiveDirectoryApplicationCredential: {\n ClientDomain: _vm.tenantId,\n ProviderId: _vm.clientId,\n Token: _vm.clientSecret,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.Name,\"rules\":_vm.nameRules,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{staticStyle:{\"width\":\"300px\"},attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-checkbox',{staticStyle:{\"width\":\"300px\"},attrs:{\"label\":_vm.$t('setAzureArmCredentialsCard.copyRemoteTags'),\"disabled\":_vm.disabled && _vm.disabled.CopyRemoteTags},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('setAzureArmCredentialsCard.copyRemoteTags.tooltip')))])])]},proxy:true}]),model:{value:(_vm.copyRemoteTags),callback:function ($$v) {_vm.copyRemoteTags=$$v},expression:\"copyRemoteTags\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.tenantIdRules,\"required\":\"\",\"label\":_vm.$t('setAzureArmCredentialsCard.tenantId')},model:{value:(_vm.tenantId),callback:function ($$v) {_vm.tenantId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"tenantId\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientIdRules,\"counter\":36,\"required\":\"\",\"label\":_vm.$t('setAzureArmCredentialsCard.clientId')},model:{value:(_vm.clientId),callback:function ($$v) {_vm.clientId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientId\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientSecretRules,\"append-icon\":_vm.showClientSecret ? 'visibility_off' : 'visibility',\"type\":_vm.showClientSecret ? 'text' : 'password',\"required\":\"\",\"label\":_vm.$t('setAzureArmCredentialsCard.clientSecret')},on:{\"click:append\":() => (_vm.showClientSecret = !_vm.showClientSecret)},model:{value:(_vm.clientSecret),callback:function ($$v) {_vm.clientSecret=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientSecret\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setAzureArmCredentialsCard.title\": \"Set Azure Credentials\",\r\n \"setAzureArmCredentialsCard.name.required\": \"A name for this cloud connection is required\",\r\n \"setAzureArmCredentialsCard.tenantId\": \"Tenant ID\",\r\n \"setAzureArmCredentialsCard.tenantId.required\": \"Tenant ID is required\",\r\n \"setAzureArmCredentialsCard.tenantId.notGuid\": \"Tenant ID is not a valid GUID\",\r\n \"setAzureArmCredentialsCard.copyRemoteTags\": \"Load Current Azure Tag Hierarchy\",\r\n \"setAzureArmCredentialsCard.copyRemoteTags.tooltip\": \"Do you want to load the current subscription and resource group tags?\",\r\n \"setAzureArmCredentialsCard.clientId\": \"Client ID (App ID)\",\r\n \"setAzureArmCredentialsCard.clientId.required\": \"Client ID is required\",\r\n \"setAzureArmCredentialsCard.clientId.notGuid\": \"Client ID is not a valid GUID\",\r\n \"setAzureArmCredentialsCard.clientSecret\": \"Client Secret\",\r\n \"setAzureArmCredentialsCard.clientSecret.required\": \"Client Secret is required\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAzureARMCredentialsCard.vue?vue&type=template&id=4cfc491a&\"\nimport script from \"./SetAzureARMCredentialsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureARMCredentialsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAzureARMCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetAzureARMCredentialsDialog.vue?vue&type=template&id=990a1640&\"\nimport script from \"./SetAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAzureCloudAccountDialog.vue?vue&type=template&id=7da9f674&\"\nimport script from \"./CreateAzureCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAzureCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-cme-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAzureCmeAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAzureCmeAccount'),expression:\"'creatingAzureCmeAccount'\"}],attrs:{\"value\":{ ...form, Type: 'AzureCme' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-azure-cme-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setAzureCmeCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\"Configure your Azure Resource Manager credentials. These credentials correspond to a single Azure AD app that you need to configure in your tenant. You also need to configure the options for the Azure Cost Management export. More information is available \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/AzureCME`}},[_vm._v(\"here \")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n Features: _vm.copyRemoteTags ? 'CopyRemoteTags' : null,\n AzureEntraApplicationWithStorageCredential: {\n ClientDomain: _vm.tenantId,\n ProviderId: _vm.clientId,\n Token: _vm.clientSecret,\n RegionCode: _vm.storageAccount,\n Container: _vm.container.concat('/', _vm.directoryName, '/', _vm.exportName)\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.Name,\"rules\":_vm.nameRules,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-row',[_c('v-col',[_c('v-checkbox',{staticStyle:{\"width\":\"300px\"},attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}})],1),_c('v-col',[_c('v-checkbox',{staticStyle:{\"width\":\"300px\"},attrs:{\"label\":_vm.$t('setAzureCmeCredentialsCard.copyRemoteTags'),\"disabled\":_vm.disabled && _vm.disabled.CopyRemoteTags},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('setAzureCmeCredentialsCard.copyRemoteTags.tooltip')))])])]},proxy:true}]),model:{value:(_vm.copyRemoteTags),callback:function ($$v) {_vm.copyRemoteTags=$$v},expression:\"copyRemoteTags\"}})],1)],1),_c('v-text-field',{attrs:{\"rules\":_vm.tenantIdRules,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.tenantId')},model:{value:(_vm.tenantId),callback:function ($$v) {_vm.tenantId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"tenantId\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientIdRules,\"counter\":36,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.clientId')},model:{value:(_vm.clientId),callback:function ($$v) {_vm.clientId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientId\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientSecretRules,\"append-icon\":_vm.showClientSecret ? 'visibility_off' : 'visibility',\"type\":_vm.showClientSecret ? 'text' : 'password',\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.clientSecret')},on:{\"click:append\":() => (_vm.showClientSecret = !_vm.showClientSecret)},model:{value:(_vm.clientSecret),callback:function ($$v) {_vm.clientSecret=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientSecret\"}}),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"counter\":24,\"rules\":_vm.storageAccountRules,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.storageAccount')},model:{value:(_vm.storageAccount),callback:function ($$v) {_vm.storageAccount=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"storageAccount\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"counter\":36,\"rules\":_vm.containerRules,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.container')},model:{value:(_vm.container),callback:function ($$v) {_vm.container=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"container\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"counter\":36,\"rules\":_vm.directoryNameRules,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.directoryName')},model:{value:(_vm.directoryName),callback:function ($$v) {_vm.directoryName=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"directoryName\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"counter\":36,\"rules\":_vm.exportNameRules,\"required\":\"\",\"label\":_vm.$t('setAzureCmeCredentialsCard.exportName')},model:{value:(_vm.exportName),callback:function ($$v) {_vm.exportName=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"exportName\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setAzureCmeCredentialsCard.title\": \"Set Azure Credentials (Cost Management Export)\", \r\n \"setAzureCmeCredentialsCard.name.required\": \"A name for this cloud connection is required\",\r\n \"setAzureCmeCredentialsCard.tenantId\": \"Tenant ID\",\r\n \"setAzureCmeCredentialsCard.tenantId.required\": \"Tenant ID is required\",\r\n \"setAzureCmeCredentialsCard.tenantId.notGuid\": \"Tenant ID is not a valid GUID\",\r\n \"setAzureCmeCredentialsCard.copyRemoteTags\": \"Load Current Azure Tags\",\r\n \"setAzureCmeCredentialsCard.copyRemoteTags.tooltip\": \"Do you want to load the current subscription and resource group tags?\",\r\n \"setAzureCmeCredentialsCard.clientId\": \"Client ID (App ID)\",\r\n \"setAzureCmeCredentialsCard.storageAccount\": \"Storage Account Name\",\r\n \"setAzureCmeCredentialsCard.storageAccount.required\": \"Storage Account Name is required\", \r\n \"setAzureCmeCredentialsCard.container\": \"Container Name\",\r\n \"setAzureCmeCredentialsCard.container.required\": \"Container Name is required\",\r\n \"setAzureCmeCredentialsCard.directoryName\": \"Directory Name\",\r\n \"setAzureCmeCredentialsCard.directoryName.required\": \"Directory is required\",\r\n \"setAzureCmeCredentialsCard.exportName\": \"Export Name\",\r\n \"setAzureCmeCredentialsCard.exportName.required\": \"Export Name is required\",\r\n \"setAzureCmeCredentialsCard.clientId.required\": \"Client ID is required\",\r\n \"setAzureCmeCredentialsCard.clientId.notGuid\": \"Client ID is not a valid GUID\",\r\n \"setAzureCmeCredentialsCard.clientSecret\": \"Client Secret\",\r\n \"setAzureCmeCredentialsCard.clientSecret.required\": \"Client Secret is required\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAzureCmeCredentialsCard.vue?vue&type=template&id=6e02b8f3&\"\nimport script from \"./SetAzureCmeCredentialsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureCmeCredentialsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAzureCmeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetAzureCmeCredentialsDialog.vue?vue&type=template&id=dc01f500&\"\nimport script from \"./SetAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureCmeCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureCmeCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAzureCmeCloudAccountDialog.vue?vue&type=template&id=7750f8dd&\"\nimport script from \"./CreateAzureCmeCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAzureCmeCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-ea-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAzureEaAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAzureEaAccount'),expression:\"'creatingAzureEaAccount'\"}],attrs:{\"value\":{ ...form, Type: 'AzureEa' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-azure-ea-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setAzureEaCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_c('v-icon',{attrs:{\"color\":\"warning\",\"left\":\"\"}},[_vm._v(\"warning\")]),_vm._v(\" The recommended connection method for Azure enterprise agreements is now to setup Azure ARM credentials instead. The credentials below are from the legacy EA portal which is only active for Azure China tenants and is slowly being phased out. If you still have valid EA Global API keys they will work, but you will not be able to regenerate them. \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n EaPortalApiCredential: { Token: _vm.eaApiKey },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":_vm.nameRules,\"disabled\":_vm.disabled && _vm.disabled.Name,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. eyJhbGciOiJ...\",\"append-icon\":_vm.showEaApiKey ? 'visibility_off' : 'visibility',\"type\":_vm.showEaApiKey ? 'text' : 'password',\"label\":_vm.$t('setAzureEaCredentialsCard.eaApiKey'),\"rules\":_vm.eaApiKeyRules,\"required\":\"\"},on:{\"click:append\":() => (_vm.showEaApiKey = !_vm.showEaApiKey)},model:{value:(_vm.eaApiKey),callback:function ($$v) {_vm.eaApiKey=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"eaApiKey\"}}),(_vm.enrollmentNumber)?_c('v-text-field',{attrs:{\"label\":_vm.$t('setAzureEaCredentialsCard.enrollmentNumber'),\"disabled\":\"\"},model:{value:(_vm.enrollmentNumber),callback:function ($$v) {_vm.enrollmentNumber=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"enrollmentNumber\"}}):_vm._e(),(_vm.expiryDate)?_c('v-text-field',{attrs:{\"label\":_vm.$t('setAzureEaCredentialsCard.expiryDate'),\"disabled\":\"\"},model:{value:(_vm.expiryDate),callback:function ($$v) {_vm.expiryDate=$$v},expression:\"expiryDate\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function parseJwt(token) {\r\n try {\r\n return JSON.parse(atob(token.split('.')[1]));\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setAzureEaCredentialsCard.title\": \"Set Azure EA Credentials\",\r\n \"setAzureEaCredentialsCard.enrollmentNumber\": \"Enrollment Number\",\r\n \"setAzureEaCredentialsCard.expiryDate\": \"Expiry Date\",\r\n \"setAzureEaCredentialsCard.eaApiKey\": \"EA Api Key\",\r\n \"setAzureEaCredentialsCard.name.required\": \"An name for this cloud connection is required\",\r\n \"setAzureEaCredentialsCard.eaApiKey.required\": \"An ea api key is required for this cloud connection\",\r\n \"setAzureEaCredentialsCard.eaApiKey.parseError\": \"The ea api key supplied is not valid\",\r\n \"setAzureEaCredentialsCard.eaApiKey.expired\": \"The ea api key supplied has expired.\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAzureEaCredentialsCard.vue?vue&type=template&id=1b376528&\"\nimport script from \"./SetAzureEaCredentialsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureEaCredentialsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAzureEaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetAzureEaCredentialsDialog.vue?vue&type=template&id=248dbe00&\"\nimport script from \"./SetAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureEaCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAzureEaCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAzureEaCloudAccountDialog.vue?vue&type=template&id=9bf8d390&\"\nimport script from \"./CreateAzureEaCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAzureEaCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-rhipe-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingRhipeAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingRhipeAccount'),expression:\"'creatingRhipeAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Rhipe' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-rhipe-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setRhipeCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" You can get your client credentials from the \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":\"https://www.prismportal.online/customers\"}},[_vm._v(\"Customer Management \")]),_vm._v(\" page. \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n RhipeApiCredential: { ProviderId: _vm.clientId, Token: _vm.clientSecret },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":_vm.nameRules,\"disabled\":_vm.disabled && _vm.disabled.Name,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientIdRules,\"counter\":36,\"required\":\"\",\"label\":_vm.$t('setRhipeCredentialsCard.clientId')},model:{value:(_vm.clientId),callback:function ($$v) {_vm.clientId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientId\"}}),_c('v-text-field',{attrs:{\"rules\":_vm.clientSecretRules,\"append-icon\":_vm.showClientSecret ? 'visibility_off' : 'visibility',\"type\":_vm.showClientSecret ? 'text' : 'password',\"required\":\"\",\"label\":_vm.$t('setRhipeCredentialsCard.clientSecret')},on:{\"click:append\":() => (_vm.showClientSecret = !_vm.showClientSecret)},model:{value:(_vm.clientSecret),callback:function ($$v) {_vm.clientSecret=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"clientSecret\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"setRhipeCredentialsCard.title\": \"Set Rhipe Client Credentials\",\r\n \"setRhipeCredentialsCard.name.required\": \"An name for this cloud connection is required\",\r\n \"setRhipeCredentialsCard.clientId\": \"Client ID\",\r\n \"setRhipeCredentialsCard.clientId.required\": \"An client ID is required\",\r\n \"setRhipeCredentialsCard.clientId.notGuid\": \"The provided client ID is not a valid guid\",\r\n \"setRhipeCredentialsCard.clientSecret\": \"Client Secret\",\r\n \"setRhipeCredentialsCard.clientSecret.required\": \"An client secret is required\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetRhipeCredentialsCard.vue?vue&type=template&id=67580ed5&\"\nimport script from \"./SetRhipeCredentialsCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetRhipeCredentialsCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetRhipeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetRhipeCredentialsDialog.vue?vue&type=template&id=4cfb3ad8&\"\nimport script from \"./SetRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateRhipeCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateRhipeCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateRhipeCloudAccountDialog.vue?vue&type=template&id=ff6bbabe&\"\nimport script from \"./CreateRhipeCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateRhipeCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-arm-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAzureArmAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAzureArmAccount'),expression:\"'creatingAzureArmAccount'\"}],attrs:{\"type\":\"AzureActiveDirectoryApplicationCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAzureARMCredentialsDialog.vue?vue&type=template&id=39e563f4&\"\nimport script from \"./UpdateAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAzureARMCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-cme-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('updatingAzureCmeAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingAzureCmeAccount'),expression:\"'updatingAzureCmeAccount'\"}],attrs:{\"type\":\"AzureEntraApplicationWithStorageCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAzureCmeCredentialsDialog.vue?vue&type=template&id=c0ee3df8&\"\nimport script from \"./UpdateAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAzureCmeCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-azure-ea-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAzureEaAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAzureEaAccount'),expression:\"'creatingAzureEaAccount'\"}],attrs:{\"type\":\"EaPortalApiCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAzureEaCredentialsDialog.vue?vue&type=template&id=c34672b4&\"\nimport script from \"./UpdateAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAzureEaCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-rhipe-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingRhipeAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingRhipeAccount'),expression:\"'creatingRhipeAccount'\"}],attrs:{\"type\":\"RhipeApiCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateRhipeCredentialsDialog.vue?vue&type=template&id=77e59405&\"\nimport script from \"./UpdateRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateRhipeCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"Name\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc,\"expanded\":_vm.expanded,\"show-expand\":\"\"},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event},\"update:expanded\":function($event){_vm.expanded=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('azureCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:\"expanded-item\",fn:function({ item, headers }){return [_c('td',{attrs:{\"colspan\":headers.length}},[_c('v-simple-table',{staticClass:\"ma-2\",attrs:{\"dense\":\"\"}},[_c('thead',[_c('th'),_c('th',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t('Connection')))]),_c('th'),_c('th',[_vm._v(_vm._s(_vm.$t('Usage')))]),_c('th',[_vm._v(_vm._s(_vm.$t('azureCloudAccountsTable.enhancedFeatureConnection')))])]),_c('tbody',[_c('tr',[_c('td'),_c('td',{staticClass:\"px-0\"},[_vm._v(\" \"+_vm._s(item.UsageConnectionType1)+\" \")]),_c('td',[(\n item._original.type == 'Azure' &&\n item._original.azureActiveDirectoryApplicationCredential\n )?_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.showAzureSubscriptions(item)}}},[_vm._v(_vm._s(_vm.$t('azureCloudAccountsTable.subscriptions')))]):_c('div',{staticClass:\"px-12\"},[_vm._v(\" \")])],1),_c('td',{staticStyle:{\"text-align\":\"center\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.UsageConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(\" \"+_vm._s(item.UsageConnectionEnabled ? 'done' : 'error')+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.UsageConnectionEnabled ? _vm.$t('connected') : _vm.$t('azureCloudAccountsTable.disconnectedUsageConnection')))])])],1),_c('td',{staticStyle:{\"text-align\":\"center\"}},[(item._original.type != 'Azure' && item._original.type != 'AzureCme')?_c('div',[_c('span',[_vm._v(\"-\")])]):_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.EnhancedConnectionEnabled\n ? 'success'\n : item.ARMConnectionTenantId\n ? 'error'\n : 'warning'}},on),[_vm._v(\" \"+_vm._s(item.EnhancedConnectionEnabled ? 'done' : 'error')+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.EnhancedConnectionEnabled ? _vm.$t('connected') : item.ARMConnectionTenantId ? _vm.$t('azureCloudAccountsTable.disconnectedArmConnection') : _vm.$t('azureCloudAccountsTable.unsuppliedArmConnection'))+\" \")])])],1)]),(item.UsageConnectionType2)?_c('tr',[_c('td'),_c('td',{staticClass:\"px-0\"},[_vm._v(\" \"+_vm._s(item.UsageConnectionType2)+\" \")]),_c('td',[(item._original.azureActiveDirectoryApplicationCredential)?_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.showAzureSubscriptions(item)}}},[_vm._v(_vm._s(_vm.$t('azureCloudAccountsTable.subscriptions')))]):_c('div',{staticClass:\"px-12\"},[_vm._v(\" \")])],1),_c('td',{staticStyle:{\"text-align\":\"center\"}},[_c('span',[_vm._v(\"-\")])]),_c('td',{staticStyle:{\"text-align\":\"center\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.EnhancedConnectionEnabled\n ? 'success'\n : item.ARMConnectionTenantId\n ? 'error'\n : 'warning'}},on),[_vm._v(\" \"+_vm._s(item.EnhancedConnectionEnabled ? 'done' : 'error')+\" \")])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.EnhancedConnectionEnabled ? _vm.$t('connected') : item.ARMConnectionTenantId ? _vm.$t('azureCloudAccountsTable.disconnectedArmConnection') : _vm.$t('azureCloudAccountsTable.unsuppliedArmConnection'))+\" \")])])],1)]):_vm._e()])])],1),_c('td',[_vm._t(\"item.connectionmenu\",null,{\"item\":item._original})],2)]}},{key:`item.Name`,fn:function({ item }){return [_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateRouteHistory(item)}}},[_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(item.Name)+\" \")])])]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('subscriptions-dialog',{attrs:{\"value\":_vm.selectedCredential},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('back-button',{on:{\"click\":function($event){return close()}}})]},proxy:true}],null,true)})]}}]),model:{value:(_vm.showSubscriptions),callback:function ($$v) {_vm.showSubscriptions=$$v},expression:\"showSubscriptions\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('showAzureSubscriptions.title')},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\"Azure subscriptions that are visible to the selected Azure Resource Manager credential. You can find more information on how to configure the Azure AD app credentials \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/Azure`}},[_vm._v(\"here \")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ reset }){return [_vm._t(\"actions\",null,{\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-data-table',{attrs:{\"dense\":\"\",\"loading\":_vm.$wait.is('getSubscriptions'),\"headers\":_vm.headers,\"items\":_vm.subscriptions,\"hide-default-footer\":\"\"},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('showAzureSubscriptions.noSubscriptions'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.Name)+\" \")]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n{\r\n \"en\": {\r\n \"showAzureSubscriptions.title\": \"Azure App Credential Subscriptions\",\r\n \"showAzureSubscriptions.subscriptions\": \"Subscriptions\",\r\n \"showAzureSubscriptions.noSubscriptions\": \"No Subscriptions visible.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShowAzureSubscriptionsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShowAzureSubscriptionsDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShowAzureSubscriptionsDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ShowAzureSubscriptionsDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ShowAzureSubscriptionsDialog.vue?vue&type=template&id=adb3f484&\"\nimport script from \"./ShowAzureSubscriptionsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ShowAzureSubscriptionsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ShowAzureSubscriptionsDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SubscriptionsDialog from '@/components/Settings.CloudAccounts/Azure/ShowAzureSubscriptionsDialog.vue';\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\n\r\nexport function azureCloudAccountTableFilter(ca) {\r\n return ca.providerType === 'Azure';\r\n}\r\n\r\nexport default {\r\n components: {\r\n SubscriptionsDialog,\r\n },\r\n props: {\r\n items: Array,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/azure',\r\n },\r\n },\r\n methods: {\r\n showAzureSubscriptions(item) {\r\n if (\r\n !item._original.azureActiveDirectoryApplicationCredential ||\r\n !item._original.azureActiveDirectoryApplicationCredential.id\r\n ) {\r\n return;\r\n }\r\n\r\n this.selectedCredential = {\r\n cloudAccountId: item._original.cloudAccountId,\r\n credentialId: item._original.azureActiveDirectoryApplicationCredential.id,\r\n };\r\n this.showSubscriptions = true;\r\n },\r\n updateRouteHistory(item) {\r\n const navigationHistory: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsAzureCloudAccount,\r\n tenantId: null,\r\n cloudAccountId: item.Id\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationHistory);\r\n return this.$router.push(`${this.routePrefix}/${item.Id}`);\r\n },\r\n },\r\n computed: {\r\n tableEntities() {\r\n if (!this.items) return [];\r\n const entities = this.items.filter(azureCloudAccountTableFilter).map((ca) => {\r\n const tableEntity: any = {\r\n Id: ca.id,\r\n Name: ca.name,\r\n ARMConnectionTenantId: ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.clientDomain\r\n : false,\r\n _original: ca,\r\n };\r\n switch (ca.type) {\r\n case 'Azure':\r\n tableEntity.UsageConnectionType1 = 'Azure App Credential';\r\n tableEntity.UsageConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n case 'AzureCme':\r\n tableEntity.UsageConnectionType1 = 'Azure App Credential (Cost Management Export)';\r\n tableEntity.UsageConnectionEnabled = ca.azureEntraApplicationWithStorageCredential\r\n ? ca.azureEntraApplicationWithStorageCredential.valid\r\n : false;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n case 'AzureEa':\r\n tableEntity.UsageConnectionType1 = 'Enterprise Agreement';\r\n tableEntity.UsageConnectionType2 = 'Azure App Credential';\r\n tableEntity.UsageConnectionEnabled = ca.eaPortalApiCredential\r\n ? ca.eaPortalApiCredential.valid\r\n : false;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n case 'Rhipe':\r\n tableEntity.UsageConnectionType1 = 'Rhipe Customer';\r\n tableEntity.UsageConnectionType2 = 'Azure App Credential';\r\n tableEntity.UsageConnectionEnabled = ca.rhipeApiCredential\r\n ? ca.rhipeApiCredential.valid\r\n : false;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n case 'AzurePax8':\r\n tableEntity.UsageConnectionType1 = 'Pax8 Assume Role';\r\n tableEntity.UsageConnectionType2 = 'Azure App Credential';\r\n tableEntity.UsageConnectionEnabled = ca.awsAssumeRoleCredential?.valid || false;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n case 'SelfReferential':\r\n tableEntity.UsageConnectionType1 = 'From Partner';\r\n tableEntity.UsageConnectionType2 = 'Azure App Credential';\r\n tableEntity.UsageConnectionEnabled = true;\r\n tableEntity.EnhancedConnectionEnabled = ca.azureActiveDirectoryApplicationCredential\r\n ? ca.azureActiveDirectoryApplicationCredential.valid\r\n : false;\r\n break;\r\n }\r\n return tableEntity;\r\n });\r\n return entities;\r\n },\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'Name',\r\n sortable: true,\r\n },\r\n {\r\n text: 'Actions',\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n data() {\r\n return {\r\n expanded: [],\r\n allStatuses: true,\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n showSubscriptions: false,\r\n selectedCredential: {\r\n cloudAccountId: null,\r\n credentialId: null,\r\n },\r\n };\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureCloudAccountsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureCloudAccountsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AzureCloudAccountsTable.vue?vue&type=template&id=2237a5cb&scoped=true&\"\nimport script from \"./AzureCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AzureCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AzureCloudAccountsTable.vue?vue&type=style&index=0&id=2237a5cb&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2237a5cb\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AzureCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CreateCloudAccountMenu from \"@/components/Settings.CloudAccounts/CreateCloudAccountMenu.vue\";\r\nimport CreateAzureCloudAccountDialog from \"@/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue\";\r\nimport CreateAzureCmeCloudAccountDialog from \"@/components/Settings.CloudAccounts/Azure/CreateAzureCmeCloudAccountDialog.vue\";\r\nimport CreateAzureEaCloudAccountDialog from \"@/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue\";\r\nimport CreateRhipeCloudAccountDialog from \"@/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue\";\r\nimport CreateAmazonAssumeRoleCloudAccountDialog from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue\";\r\nimport UpdateAzureArmCredentialsDialog from \"@/components/Settings.CloudAccounts/Azure/UpdateAzureARMCredentialsDialog.vue\";\r\nimport UpdateAzureCmeCredentialsDialog from \"@/components/Settings.CloudAccounts/Azure/UpdateAzureCmeCredentialsDialog.vue\";\r\nimport UpdateAzureEaCredentialsDialog from \"@/components/Settings.CloudAccounts/Azure/UpdateAzureEaCredentialsDialog.vue\";\r\nimport UpdateAmazonAssumeRoleCredentialsDialog from \"@/components/Settings.CloudAccounts/Amazon/UpdateAmazonAssumeRoleCredentialsDialog.vue\";\r\nimport UpdateRhipeCredentialsDialog from \"@/components/Settings.CloudAccounts/Distributors/UpdateRhipeCredentialsDialog.vue\";\r\nimport DeleteCloudAccountDialog from \"@/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue\";\r\nimport EditCloudAccountNameDialog from \"@/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue\";\r\nimport EditCloudAccountCurrenciesDialog from \"@/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue\";\r\nimport AzureCloudAccountsTable, {\r\n azureCloudAccountTableFilter,\r\n} from \"@/components/Settings.CloudAccounts/Azure/AzureCloudAccountsTable.vue\";\r\nimport TaxonomyType from \"@/stores/models/TaxonomyType\";\r\nimport { ICloudAccountNavigation } from \"@/stores/models/ICloudAccountNavigation\";\r\nimport { useCloudAccountNavigationStore } from \"@/stores/cloudAccountNavigation\";\r\nimport { useTenantStore } from \"../../stores/tenant\";\r\nimport { mapStores } from \"pinia\";\r\nimport Config from \"@/lib/Config\";\r\nimport FeatureNames from \"@/lib/FeatureNames\";\r\nimport { CloudAccountType } from \"@/models\";\r\nimport { defineComponent } from \"vue\";\r\n\r\nexport default defineComponent({\r\n title() {\r\n return this.$t(\"settings.azure.title\");\r\n },\r\n props: {\r\n cloudAccounts: Array,\r\n },\r\n components: {\r\n CreateAzureCloudAccountDialog,\r\n CreateAzureEaCloudAccountDialog,\r\n CreateAzureCmeCloudAccountDialog,\r\n CreateRhipeCloudAccountDialog,\r\n UpdateAzureArmCredentialsDialog,\r\n UpdateAzureCmeCredentialsDialog,\r\n UpdateAzureEaCredentialsDialog,\r\n UpdateRhipeCredentialsDialog,\r\n DeleteCloudAccountDialog,\r\n AzureCloudAccountsTable,\r\n EditCloudAccountNameDialog,\r\n EditCloudAccountCurrenciesDialog,\r\n CreateAmazonAssumeRoleCloudAccountDialog,\r\n UpdateAmazonAssumeRoleCredentialsDialog,\r\n CreateCloudAccountMenu,\r\n },\r\n data() {\r\n const cloudAccountTypes = [CloudAccountType.azure, CloudAccountType.azurecme, CloudAccountType.azureEa];\r\n if (Config.isFeatureEnabled(FeatureNames.rhipeEnabled)) {\r\n cloudAccountTypes.push(CloudAccountType.rhipe);\r\n }\r\n if (Config.isFeatureEnabled(FeatureNames.pax8AzureEnabled)) {\r\n cloudAccountTypes.push(CloudAccountType.azurePax8);\r\n }\r\n return {\r\n isCreatingAzureArmAccount: false,\r\n isEditingAzureArmAccount: false,\r\n\r\n isCreatingAzureCmeAccount: false,\r\n isEditingAzureCmeAccount: false,\r\n\r\n isCreatingAzureEaAccount: false,\r\n isEditingAzureEaAccount: false,\r\n\r\n isCreatingRhipeAccount: false,\r\n isEditingRhipeAccount: false,\r\n\r\n isCreatingAzurePax8Account: false,\r\n isEditingAzurePax8Account: false,\r\n\r\n isEditingAccountName: false,\r\n isEditingAccountCurrencies: false,\r\n isDeletingAccount: false,\r\n focusedAccount: null,\r\n\r\n cloudAccountTypes,\r\n };\r\n },\r\n computed: {\r\n azureCloudAccounts() {\r\n return this.cloudAccounts.filter(azureCloudAccountTableFilter);\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n handleDialogChange(isOpen) {\r\n if (isOpen) return;\r\n this.$router.push(\"/settings/azure\");\r\n this.$title = this.$t(\"settings.azure.title\");\r\n },\r\n onCloudAccountsChanged() {\r\n this.$emit(\"onCloudAccountsChanged\");\r\n },\r\n startCreateAccount(type) {\r\n switch (type) {\r\n case \"Azure\":\r\n this.isCreatingAzureArmAccount = true;\r\n break;\r\n case \"AzureEa\":\r\n this.isCreatingAzureEaAccount = true;\r\n break;\r\n case \"AzureCme\":\r\n this.isCreatingAzureCmeAccount = true;\r\n break; \r\n case \"AzurePax8\":\r\n this.isCreatingAzurePax8Account = true;\r\n break;\r\n case \"Rhipe\":\r\n this.isCreatingRhipeAccount = true;\r\n break;\r\n default:\r\n throw new Error(\"Unsupported Azure type\");\r\n }\r\n },\r\n startEditCloudAccount(account) {\r\n this.focusedAccount = account;\r\n switch (account.type) {\r\n case \"Azure\":\r\n this.isEditingAzureArmAccount = true;\r\n break;\r\n case \"AzureEa\":\r\n this.isEditingAzureEaAccount = true;\r\n break;\r\n case \"AzureCme\":\r\n this.isEditingAzureCmeAccount = true;\r\n break; \r\n case \"AzurePax8\":\r\n this.isEditingAzurePax8Account = true;\r\n break;\r\n case \"Rhipe\":\r\n this.isEditingRhipeAccount = true;\r\n break;\r\n default:\r\n throw new Error(\"Unsupported Azure type\");\r\n }\r\n },\r\n startEditName(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAccountName = true;\r\n },\r\n startEditCurrencies(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAccountCurrencies = true;\r\n },\r\n startDeleteAccount(account) {\r\n this.focusedAccount = account;\r\n this.isDeletingAccount = true;\r\n },\r\n startEditArmConnection(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAzureArmAccount = true;\r\n },\r\n startEditCmeConnection(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAzureCmeAccount = true;\r\n },\r\n copyCloudAccount(item) {\r\n const navigationSource: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsAzure,\r\n tenantId: null,\r\n cloudAccountId: null,\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationSource);\r\n const url = `/copy/cloudaccounts/${item.cloudAccountId}`;\r\n this.$router.push(url);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AzureView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AzureView.vue?vue&type=template&id=2138774c&\"\nimport script from \"./AzureView.vue?vue&type=script&lang=ts&\"\nexport * from \"./AzureView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AzureView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.google.title'),\"caption\":_vm.$t('settings.google.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-google-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('add'))+\" \")],1)]}}]),model:{value:(_vm.isCreatingGcpAccount),callback:function ($$v) {_vm.isCreatingGcpAccount=$$v},expression:\"isCreatingGcpAccount\"}})]},proxy:true}])},[_c('google-cloud-accounts-table',{attrs:{\"items\":_vm.googleCloudAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit name')))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit currencies')))])],1)],1),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit usage connection')))])],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{attrs:{\"to\":`/copy/cloudaccounts/${item.cloudAccountId}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('copy cloud connection')))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeletingGcpAccount),callback:function ($$v) {_vm.isDeletingGcpAccount=$$v},expression:\"isDeletingGcpAccount\"}}),_c('update-google-json-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingGcpAccount),callback:function ($$v) {_vm.isEditingGcpAccount=$$v},expression:\"isEditingGcpAccount\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingGcpAccountName),callback:function ($$v) {_vm.isEditingGcpAccountName=$$v},expression:\"isEditingGcpAccountName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-google-json-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingGoogleAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingGoogleAccount'),expression:\"'creatingGoogleAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Google' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-google-json-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setGoogleJsonCredentialsCard.title'),\"subtitle\":_vm.$t('setGoogleJsonCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" For a detailed break-down of how to configure and connect your Google Cloud connection please \"),_c('a',{attrs:{\"href\":`${_vm.docsUrl}/Setup/GoogleCloud/`,\"target\":\"_blank\"}},[_vm._v(\" follow these instructions.\")])]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n GoogleJsonUsageCredential: {\n Token: _vm.jsonRulesText,\n ClientDomain: _vm.dataSetId,\n Container: _vm.tableId,\n ProviderId: _vm.projectId,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"disabled\":_vm.disabled && _vm.disabled.Name,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-file-input',{attrs:{\"truncate-length\":\"15\",\"label\":_vm.$t('setGoogleJsonCredentialsCard.jsonCredentials')},on:{\"change\":_vm.handleJsonCredentialsFile}}),_c('v-textarea',{attrs:{\"outlined\":\"\",\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setGoogleJsonCredentialsCard.jsonCredentials')},model:{value:(_vm.jsonRulesText),callback:function ($$v) {_vm.jsonRulesText=$$v},expression:\"jsonRulesText\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setGoogleJsonCredentialsCard.dataSetId')},model:{value:(_vm.dataSetId),callback:function ($$v) {_vm.dataSetId=$$v},expression:\"dataSetId\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"placeholder\":\"e.g. gcp_billing_export_resource_v1_...\",\"label\":_vm.$t('setGoogleJsonCredentialsCard.tableId')},model:{value:(_vm.tableId),callback:function ($$v) {_vm.tableId=$$v},expression:\"tableId\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Config from '@/lib/Config';\r\nexport default {\r\n props: ['loading', 'value', 'disabled'],\r\n data() {\r\n return {\r\n valid: false,\r\n name: '',\r\n useTenantCurrencies: false,\r\n dataSetId: '',\r\n tableId: '',\r\n jsonRulesText: '',\r\n docsUrl: Config.get().DOCS_URL,\r\n };\r\n },\r\n computed: {\r\n projectId() {\r\n if (!this.jsonRulesText) return null;\r\n try {\r\n const jsonRules = JSON.parse(this.jsonRulesText);\r\n return jsonRules['project_id'] || null;\r\n } catch {\r\n return null;\r\n }\r\n },\r\n },\r\n methods: {\r\n async handleJsonCredentialsFile(file: File) {\r\n if (!file) return;\r\n this.jsonRulesText = await file.text();\r\n },\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.name = val.name;\r\n this.useTenantCurrencies = val.useTenantCurrencies;\r\n if (val.googleJsonUsageCredential) {\r\n this.jsonRulesText = val.googleJsonUsageCredential.token;\r\n this.tableId = val.googleJsonUsageCredential.container;\r\n this.dataSetId = val.googleJsonUsageCredential.clientDomain;\r\n } else {\r\n this.jsonRulesText = '';\r\n this.tableId = '';\r\n this.dataSetId = '';\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetGoogleJsonCredentialsCard.vue?vue&type=template&id=7807a29a&\"\nimport script from \"./SetGoogleJsonCredentialsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetGoogleJsonCredentialsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetGoogleJsonCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetGoogleJsonCredentialsDialog.vue?vue&type=template&id=0efe726c&\"\nimport script from \"./SetGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateGoogleAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateGoogleAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateGoogleAccountDialog.vue?vue&type=template&id=016cad33&\"\nimport script from \"./CreateGoogleAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateGoogleAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-google-json-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingGoogleAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingGoogleAccount'),expression:\"'creatingGoogleAccount'\"}],attrs:{\"type\":\"GoogleJsonUsageCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateGoogleJsonCredentialsDialog.vue?vue&type=template&id=2f660e20&\"\nimport script from \"./UpdateGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateGoogleJsonCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('googleCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/${item.Id}`}},[_vm._v(\" \"+_vm._s(item.Name))])]}},{key:`item.GoogleProjectId`,fn:function({ item }){return [_c('span',{class:item.GoogleConnectionEnabled ? '' : 'error--text'},[_vm._v(\" \"+_vm._s(item.GoogleProjectId)+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.GoogleConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(_vm._s(item.GoogleConnectionEnabled ? 'done' : 'error'))])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.GoogleConnectionEnabled ? _vm.$t('connected') : _vm.$t('googleCloudAccountsTable.disconnectedUsageConnection'))+\" \")])])],1)]}},{key:`item.GoogleConnectionExpiry`,fn:function({ item }){return [(!item.GoogleConnectionExpiry)?_c('span',[_vm._v(\"-\")]):(item.GoogleConnectionExpiry.getFullYear() > 3000)?_c('span',[_vm._v(\"Never\")]):_c('span',{class:item.GoogleConnectionExpiry < new Date() ? 'error--text' : ''},[_vm._v(_vm._s(_vm._f(\"calendarFormat\")(item.GoogleConnectionExpiry)))])]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"googleCloudAccountsTable.projectId\": \"Project ID\",\r\n \"googleCloudAccountsTable.dataSetId\": \"Dataset ID\",\r\n \"googleCloudAccountsTable.expiry\": \"Expiry\",\r\n \"googleCloudAccountsTable.noData\": \"No google cloud connections configured.\",\r\n \"googleCloudAccountsTable.disconnectedUsageConnection\": \"Please update your usage connection with valid credentials\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleCloudAccountsTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleCloudAccountsTable.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GoogleCloudAccountsTable.vue?vue&type=template&id=491e31bd&scoped=true&\"\nimport script from \"./GoogleCloudAccountsTable.vue?vue&type=script&lang=js&\"\nexport * from \"./GoogleCloudAccountsTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GoogleCloudAccountsTable.vue?vue&type=style&index=0&id=491e31bd&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"491e31bd\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GoogleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\":{\r\n \"settings.google.title\": \"Google Cloud Connections\",\r\n \"settings.google.subtitle\": \"All cloud connections importing GCP usage data in this tenant.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GoogleView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GoogleView.vue?vue&type=template&id=a776d052&\"\nimport script from \"./GoogleView.vue?vue&type=script&lang=js&\"\nexport * from \"./GoogleView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GoogleView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.oracle.title'),\"caption\":_vm.$t('settings.oracle.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-oracle-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('add'))+\" \")],1)]}}]),model:{value:(_vm.isCreatingOciAccount),callback:function ($$v) {_vm.isCreatingOciAccount=$$v},expression:\"isCreatingOciAccount\"}})]},proxy:true}])},[_c('oracle-cloud-accounts-table',{attrs:{\"items\":_vm.oracleCloudAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit name')))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit currencies')))])],1)],1),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit usage connection')))])],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{on:{\"click\":function($event){return _vm.copyCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('copy cloud connection')))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeletingOciAccount),callback:function ($$v) {_vm.isDeletingOciAccount=$$v},expression:\"isDeletingOciAccount\"}}),_c('update-oracle-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingOciAccount),callback:function ($$v) {_vm.isEditingOciAccount=$$v},expression:\"isEditingOciAccount\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingOciAccountName),callback:function ($$v) {_vm.isEditingOciAccountName=$$v},expression:\"isEditingOciAccountName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-oracle-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingOracleAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingOracleAccount'),expression:\"'creatingOracleAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Oracle' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-oracle-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setOracleCredentialsCard.title'),\"subtitle\":_vm.$t('setOracleCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" For a detailed break-down of how to configure and connect your Oracle Cloud connection please \"),_c('a',{attrs:{\"href\":`${_vm.docsUrl}/Setup/OracleCloud/`,\"target\":\"_blank\"}},[_vm._v(\" follow these instructions.\")])]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n OracleCredential: {\n Token: _vm.pemText,\n ClientDomain: _vm.userId,\n Container: _vm.fingerprint,\n ProviderId: _vm.tenancyId,\n RegionCode: _vm.regionId,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"disabled\":_vm.disabled && _vm.disabled.Name,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-file-input',{attrs:{\"truncate-length\":\"15\",\"label\":_vm.$t('setOracleCredentialsCard.pemCredentials')},on:{\"change\":_vm.handleJsonCredentialsFile}}),_c('v-textarea',{attrs:{\"outlined\":\"\",\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setOracleCredentialsCard.pemCredentials')},model:{value:(_vm.pemText),callback:function ($$v) {_vm.pemText=$$v},expression:\"pemText\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"placeholder\":\"e.g. ocid1.tenancy.oc1..aaaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"label\":_vm.$t('setOracleCredentialsCard.tenancyId')},model:{value:(_vm.tenancyId),callback:function ($$v) {_vm.tenancyId=$$v},expression:\"tenancyId\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"placeholder\":\"e.g. ocid1.user.oc1..aaaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"label\":_vm.$t('setOracleCredentialsCard.userId')},model:{value:(_vm.userId),callback:function ($$v) {_vm.userId=$$v},expression:\"userId\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"placeholder\":\"e.g. 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00\",\"label\":_vm.$t('setOracleCredentialsCard.fingerprint')},model:{value:(_vm.fingerprint),callback:function ($$v) {_vm.fingerprint=$$v},expression:\"fingerprint\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"placeholder\":\"e.g. ap-melbourne-1\",\"label\":_vm.$t('setOracleCredentialsCard.regionId')},model:{value:(_vm.regionId),callback:function ($$v) {_vm.regionId=$$v},expression:\"regionId\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Config from '@/lib/Config';\r\nexport default {\r\n props: ['loading', 'value', 'disabled'],\r\n data() {\r\n return {\r\n valid: false,\r\n name: '',\r\n useTenantCurrencies: false,\r\n tenancyId: '',\r\n userId: '',\r\n regionId: '',\r\n fingerprint: '',\r\n pemText: '',\r\n docsUrl: Config.get().DOCS_URL,\r\n };\r\n },\r\n methods: {\r\n async handleJsonCredentialsFile(file: File) {\r\n if (!file) return;\r\n this.pemText = await file.text();\r\n },\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.name = val.name;\r\n this.useTenantCurrencies = val.useTenantCurrencies;\r\n if (val.oracleUsageCredential) {\r\n this.tenancyId = val.oracleUsageCredential.providerId;\r\n this.pemText = val.oracleUsageCredential.token;\r\n this.fingerprint = val.oracleUsageCredential.container;\r\n this.userId = val.oracleUsageCredential.clientDomain;\r\n this.regionId = val.oracleUsageCredential.regionCode;\r\n } else {\r\n this.tenancyId = '';\r\n this.pemText = '';\r\n this.fingerprint = '';\r\n this.userId = '';\r\n this.regionId = '';\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetOracleCredentialsCard.vue?vue&type=template&id=069c56a3&\"\nimport script from \"./SetOracleCredentialsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetOracleCredentialsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetOracleCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetOracleCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetOracleCredentialsDialog.vue?vue&type=template&id=25900c78&\"\nimport script from \"./SetOracleCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetOracleCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateOracleAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateOracleAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateOracleAccountDialog.vue?vue&type=template&id=4eeeae40&\"\nimport script from \"./CreateOracleAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateOracleAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-oracle-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingOracleAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingOracleAccount'),expression:\"'creatingOracleAccount'\"}],attrs:{\"type\":\"OracleCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateOracleCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateOracleCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateOracleCredentialsDialog.vue?vue&type=template&id=13c41360&\"\nimport script from \"./UpdateOracleCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateOracleCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('oracleCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateRouteHistory(item)}}},[_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(item.Name)+\" \")])])]}},{key:`item.OracleTenancyId`,fn:function({ item }){return [_c('span',{class:item.OracleConnectionEnabled ? '' : 'error--text'},[_vm._v(\" \"+_vm._s(item.OracleTenancyId)+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.OracleConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(_vm._s(item.OracleConnectionEnabled ? 'done' : 'error'))])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.OracleConnectionEnabled ? _vm.$t('connected') : _vm.$t('oracleCloudAccountsTable.disconnectedUsageConnection'))+\" \")])])],1)]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\nexport function oracleCloudAccountTableFilter(ca) {\r\n return ca.providerType === 'Oracle';\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/oracle',\r\n },\r\n },\r\n data() {\r\n return {\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n };\r\n },\r\n computed: {\r\n tableEntities() {\r\n if (!this.items) return [];\r\n return this.items.filter(oracleCloudAccountTableFilter).map((ca) => {\r\n return {\r\n Id: ca.id,\r\n Name: ca.name,\r\n OracleConnectionEnabled: ca.oracleUsageCredential\r\n ? ca.oracleUsageCredential.valid\r\n : ca.type === 'SelfReferential',\r\n OracleTenancyId: ca.oracleUsageCredential\r\n ? ca.oracleUsageCredential.providerId.substring(0,40) || ''\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n OracleUserId: ca.oracleUsageCredential\r\n ? ca.oracleUsageCredential.clientDomain.substring(0, 40)\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n _original: ca,\r\n };\r\n });\r\n },\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'Name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('oracleCloudAccountsTable.tenancyId'),\r\n value: 'OracleTenancyId',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('oracleCloudAccountsTable.userId'),\r\n value: 'OracleUserId',\r\n sortable: true,\r\n },\r\n {\r\n text: 'Actions',\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n methods: {\r\n updateRouteHistory(item)\r\n {\r\n const navigationHistory: ICloudAccountNavigation = {\r\n taxonomyType : TaxonomyType.settingsOracleCloudAccount,\r\n tenantId : null,\r\n cloudAccountId : item.Id\r\n }; \r\n useCloudAccountNavigationStore().updateNavigationSource(navigationHistory); \r\n return this.$router.push(`${this.routePrefix}/${item.Id}`);\r\n }, \r\n }\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleCloudAccountsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleCloudAccountsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./OracleCloudAccountsTable.vue?vue&type=template&id=7a5afc0e&scoped=true&\"\nimport script from \"./OracleCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./OracleCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OracleCloudAccountsTable.vue?vue&type=style&index=0&id=7a5afc0e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a5afc0e\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./OracleCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CreateOracleAccountDialog from '@/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue';\r\nimport UpdateOracleCredentialsDialog from '@/components/Settings.CloudAccounts/Oracle/UpdateOracleCredentialsDialog.vue';\r\nimport DeleteCloudAccountDialog from '@/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue';\r\nimport EditCloudAccountNameDialog from '@/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue';\r\nimport EditCloudAccountCurrenciesDialog from '@/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue';\r\nimport OracleCloudAccountsTable, {\r\n oracleCloudAccountTableFilter,\r\n} from '@/components/Settings.CloudAccounts/Oracle/OracleCloudAccountsTable.vue';\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n title() {\r\n return this.$t('settings.oracle.title');\r\n },\r\n props: {\r\n cloudAccounts: Array,\r\n },\r\n components: {\r\n OracleCloudAccountsTable,\r\n CreateOracleAccountDialog,\r\n DeleteCloudAccountDialog,\r\n EditCloudAccountNameDialog,\r\n EditCloudAccountCurrenciesDialog,\r\n UpdateOracleCredentialsDialog,\r\n },\r\n data() {\r\n return {\r\n isCreatingOciAccount: false,\r\n isEditingOciAccount: false,\r\n isEditingOciAccountName: false,\r\n isEditingAccountCurrencies: false,\r\n isDeletingOciAccount: false,\r\n focusedAccount: null,\r\n };\r\n },\r\n computed: {\r\n oracleCloudAccounts() {\r\n return this.cloudAccounts.filter(oracleCloudAccountTableFilter);\r\n },\r\n ...mapStores(useTenantStore)\r\n },\r\n methods: {\r\n handleDialogChange(isOpen) {\r\n if (isOpen) return;\r\n this.$router.push('/settings/oracle');\r\n this.$title = this.$t('settings.oracle.title');\r\n },\r\n onCloudAccountsChanged() {\r\n this.$emit('onCloudAccountsChanged');\r\n },\r\n startEditName(account) {\r\n this.focusedAccount = account;\r\n this.isEditingOciAccountName = true;\r\n },\r\n startEditCloudAccount(account) {\r\n this.focusedAccount = account;\r\n this.isEditingOciAccount = true;\r\n },\r\n copyCloudAccount(item)\r\n { \r\n const navigationSource : ICloudAccountNavigation = {\r\n taxonomyType : TaxonomyType.settingsOracle,\r\n tenantId : null,\r\n cloudAccountId : null\r\n }; \r\n useCloudAccountNavigationStore().updateNavigationSource(navigationSource); \r\n const url = `/copy/cloudaccounts/${item.cloudAccountId}`; \r\n this.$router.push(url);\r\n },\r\n startDeleteAccount(account) {\r\n this.focusedAccount = account;\r\n this.isDeletingOciAccount = true;\r\n },\r\n startEditCurrencies(account) {\r\n this.focusedAccount = account;\r\n this.isEditingAccountCurrencies = true;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OracleView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./OracleView.vue?vue&type=template&id=0dfa8afe&\"\nimport script from \"./OracleView.vue?vue&type=script&lang=ts&\"\nexport * from \"./OracleView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./OracleView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.alibaba.title'),\"caption\":_vm.$t('settings.alibaba.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-alibaba-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('add'))+\" \")],1)]}}]),model:{value:(_vm.isCreatingAccount),callback:function ($$v) {_vm.isCreatingAccount=$$v},expression:\"isCreatingAccount\"}})]},proxy:true}])},[_c('alibaba-cloud-accounts-table',{attrs:{\"items\":_vm.alibabaCloudAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit name')))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit currencies')))])],1)],1),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit usage connection')))])],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{attrs:{\"to\":`/copy/cloudaccounts/${item.cloudAccountId}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('copy cloud connection')))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('update-alibaba-credentials-dialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccount),callback:function ($$v) {_vm.isEditingAccount=$$v},expression:\"isEditingAccount\"}}),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeletingAccount),callback:function ($$v) {_vm.isDeletingAccount=$$v},expression:\"isDeletingAccount\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountName),callback:function ($$v) {_vm.isEditingAccountName=$$v},expression:\"isEditingAccountName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('alibabaCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/${item.Id}`}},[_vm._v(\" \"+_vm._s(item.Name))])]}},{key:`item.AccessKeyId`,fn:function({ item }){return [_c('span',{class:item.ConnectionEnabled ? '' : 'error--text'},[_vm._v(\" \"+_vm._s(item.AccessKeyId)+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.ConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(_vm._s(item.ConnectionEnabled ? 'done' : 'error'))])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.ConnectionEnabled ? _vm.$t('connected') : _vm.$t('alibabaCloudAccountsTable.disconnectedUsageConnection'))+\" \")])])],1)]}},{key:`item.RegionCode`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.RegionCode)+\" \")]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport function alibabaCloudAccountTableFilter(ca) {\r\n return ca.providerType === 'Alibaba';\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/alibaba',\r\n },\r\n },\r\n data() {\r\n return {\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n };\r\n },\r\n computed: {\r\n tableEntities() {\r\n if (!this.items) return [];\r\n const alibabaAccounts = this.items.filter(alibabaCloudAccountTableFilter).map((ca) => {\r\n return {\r\n Id: ca.id,\r\n Name: ca.name,\r\n ConnectionEnabled: ca.alibabaUsageCredential\r\n ? ca.alibabaUsageCredential.valid\r\n : ca.type === 'SelfReferential',\r\n AccessKeyId: ca.alibabaUsageCredential\r\n ? ca.alibabaUsageCredential.providerId || ''\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n RegionCode: ca.alibabaUsageCredential\r\n ? ca.alibabaUsageCredential.regionCode\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n _original: ca,\r\n };\r\n });\r\n\r\n return alibabaAccounts;\r\n },\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'Name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('alibabaCloudAccountsTable.accessKeyId'),\r\n value: 'AccessKeyId',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('alibabaCloudAccountsTable.regionCode'),\r\n value: 'RegionCode',\r\n sortable: true,\r\n },\r\n {\r\n text: 'Actions',\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaCloudAccountsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaCloudAccountsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AlibabaCloudAccountsTable.vue?vue&type=template&id=cf34da76&scoped=true&\"\nimport script from \"./AlibabaCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlibabaCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlibabaCloudAccountsTable.vue?vue&type=style&index=0&id=cf34da76&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf34da76\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AlibabaCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-alibaba-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAlibabaAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('post-cloud-account-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAlibabaAccount'),expression:\"'creatingAlibabaAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Alibaba' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-alibaba-credentials-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setAlibabaCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" Configure your Alibaba Credentials. This setup can be a bit involved so we recommend reading our \"),_c('a',{attrs:{\"target\":\"blank\",\"href\":`${_vm.docsUrl}/Setup/AlibabaCloud/`}},[_vm._v(\"Alibaba setup guide\")]),_vm._v(\". \")]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n Name: _vm.name,\n UseTenantCurrencies: _vm.useTenantCurrencies,\n AlibabaUsageCredential: {\n ProviderId: _vm.accessKeyId,\n Token: _vm.secretAccessKey,\n RegionCode: _vm.regionCode,\n },\n },\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled && _vm.disabled.Name,\"rules\":_vm.nameRules,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. p17LlTZ4Efjwekwe5EXAMPLE\",\"label\":_vm.$t('setAlibabaCredentialsCard.accessKeyId'),\"rules\":_vm.accessKeyIdRules,\"required\":\"\"},model:{value:(_vm.accessKeyId),callback:function ($$v) {_vm.accessKeyId=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"accessKeyId\"}}),_c('v-text-field',{attrs:{\"placeholder\":\"e.g. wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY\",\"append-icon\":_vm.showSecretAccessKey ? 'visibility_off' : 'visibility',\"type\":_vm.showSecretAccessKey ? 'text' : 'password',\"label\":_vm.$t('setAlibabaCredentialsCard.secretAccessKey'),\"rules\":_vm.secretAccessKeyRules,\"required\":\"\"},on:{\"click:append\":() => (_vm.showSecretAccessKey = !_vm.showSecretAccessKey)},model:{value:(_vm.secretAccessKey),callback:function ($$v) {_vm.secretAccessKey=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"secretAccessKey\"}}),_c('alibaba-region-autocomplete',{attrs:{\"label\":_vm.$t('setAlibabaCredentialsCard.regionCode'),\"rules\":[() => true]},model:{value:(_vm.regionCode),callback:function ($$v) {_vm.regionCode=$$v},expression:\"regionCode\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-autocomplete',{attrs:{\"value\":_vm.value,\"items\":_vm.matchingAlibabaRegions,\"item-text\":\"name\",\"item-value\":\"code\",\"loading\":_vm.loading,\"search-input\":_vm.search,\"rules\":_vm.rules,\"hint\":!_vm.value ? _vm.$t('alibabaRegionAutocomplete.noRegionHint') : undefined,\"persistent-hint\":\"\",\"hide-no-data\":\"\",\"hide-selected\":\"\",\"label\":_vm.label,\"return-object\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event ? $event.code : null)},\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [(!_vm.loading)?_c('v-icon',[_vm._v(\"search\")]):_c('v-progress-circular',{attrs:{\"width\":3,\"size\":\"24\",\"color\":\"primary\",\"indeterminate\":\"\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\nexport const ALIBABA_REGIONS = [\r\n { code: 'cn-qingdao', name: 'Qingdao' },\r\n { code: 'cn-beijing', name: 'Beijing' },\r\n { code: 'cn-zhangjiakou', name: 'Zhangjiakou' },\r\n { code: 'cn-huhehaote', name: 'Hohhot' },\r\n { code: 'cn-wulanchabu', name: 'Ulanqab' },\r\n { code: 'cn-hangzhou', name: 'Hangzhou' },\r\n { code: 'cn-shanghai', name: 'Shanghai' },\r\n { code: 'cn-shenzhen', name: 'Shenzhen' },\r\n { code: 'cn-heyuan', name: 'Heyuan' },\r\n { code: 'cn-guangzhou', name: 'Guangzhou' },\r\n { code: 'cn-chengdu', name: 'Chengdu' },\r\n { code: 'ap-southeast-1', name: 'Sydney'}\r\n];\r\n\r\nexport default {\r\n props: ['value', 'label', 'rules'],\r\n computed: {\r\n matchingAlibabaRegions() {\r\n if (!this.search) return this.allRegions;\r\n return [this.search]\r\n .concat(this.allRegions.filter(b => b.name.startsWith(this.search)))\r\n .filter((value, index, self) => {\r\n return self.findIndex(c => c.code == value.code) === index;\r\n });\r\n }\r\n },\r\n data() {\r\n return {\r\n allRegions: [...ALIBABA_REGIONS],\r\n errored: false,\r\n loading: false,\r\n search: ''\r\n };\r\n }\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaRegionAutocomplete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaRegionAutocomplete.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaRegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaRegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AlibabaRegionAutocomplete.vue?vue&type=template&id=2c470ca0&\"\nimport script from \"./AlibabaRegionAutocomplete.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlibabaRegionAutocomplete.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AlibabaRegionAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport AlibabaRegionAutocomplete from '@/components/Settings.CloudAccounts/Alibaba/AlibabaRegionAutocomplete.vue';\r\nimport Config from '@/lib/Config';\r\nexport default {\r\n components: { AlibabaRegionAutocomplete },\r\n props: ['loading', 'value', 'disabled'],\r\n data() {\r\n return {\r\n valid: false,\r\n docsUrl: Config.get().DOCS_URL,\r\n name: '',\r\n nameRules: [(v) => !!v || this.$t('setAlibabaCredentialsCard.name.required')],\r\n useTenantCurrencies: false,\r\n accessKeyId: '',\r\n accessKeyIdRules: [(v) => !!v || this.$t('setAlibabaCredentialsCard.accessKeyId.required')],\r\n regionCode: '',\r\n showSecretAccessKey: false,\r\n secretAccessKey: '',\r\n secretAccessKeyRules: [(v) => !!v || this.$t('setAlibabaCredentialsCard.secretAccessKey.required')],\r\n };\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.name = val.name;\r\n this.useTenantCurrencies = val.useTenantCurrencies;\r\n if (val.alibabaUsageCredential) {\r\n this.accessKeyId = val.alibabaUsageCredential.providerId;\r\n this.secretAccessKey = val.alibabaUsageCredential.token;\r\n this.regionCode = val.alibabaUsageCredential.regionCode;\r\n } else {\r\n this.accessKeyId = '';\r\n this.secretAccessKey = '';\r\n this.regionCode = '';\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetAlibabaCredentialsCard.vue?vue&type=template&id=3cadc3a4&\"\nimport script from \"./SetAlibabaCredentialsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetAlibabaCredentialsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetAlibabaCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SetAlibabaCredentialsCard from '@/components/Settings.CloudAccounts/Alibaba/SetAlibabaCredentialsCard.vue';\r\nexport default {\r\n props: ['value', 'loading', 'disabled', 'edit'],\r\n components: { SetAlibabaCredentialsCard },\r\n methods: {\r\n open() {\r\n this.$emit('input', true);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetAlibabaCredentialsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SetAlibabaCredentialsDialog.vue?vue&type=template&id=e3eb9988&\"\nimport script from \"./SetAlibabaCredentialsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetAlibabaCredentialsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAlibabaCloudAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAlibabaCloudAccountDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CreateAlibabaCloudAccountDialog.vue?vue&type=template&id=40af7c17&\"\nimport script from \"./CreateAlibabaCloudAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateAlibabaCloudAccountDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-alibaba-credentials-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingAlibabaAccount'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('put-credential-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingAlibabaAccount'),expression:\"'creatingAlibabaAccount'\"}],attrs:{\"type\":\"AlibabaUsageCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAlibabaCredentialsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateAlibabaCredentialsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateAlibabaCredentialsDialog.vue?vue&type=template&id=1553feeb&\"\nimport script from \"./UpdateAlibabaCredentialsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateAlibabaCredentialsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\":{\r\n \"settings.alibaba.title\": \"Alibaba Cloud Connections\",\r\n \"settings.alibaba.subtitle\": \"All cloud connections importing Alibaba Cloud usage data in this tenant.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AlibabaView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AlibabaView.vue?vue&type=template&id=37ae8e10&\"\nimport script from \"./AlibabaView.vue?vue&type=script&lang=js&\"\nexport * from \"./AlibabaView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AlibabaView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.snowflake.title'),\"caption\":_vm.$t('settings.snowflake.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('CreateSnowflakeAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('add'))+\" \")],1)]}}]),model:{value:(_vm.isCreating),callback:function ($$v) {_vm.isCreating=$$v},expression:\"isCreating\"}})]},proxy:true}])},[_c('SnowflakeAccountTable',{attrs:{\"items\":_vm.snowflakeAccounts,\"loading\":_vm.$wait.is('getCloudAccounts')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit name')))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit currencies')))])],1)],1),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"miscellaneous_services\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit usage connection')))])],1)],1):_vm._e(),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{on:{\"click\":function($event){return _vm.copyCloudAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('copy cloud connection')))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1):_vm._e()],1)],1)]}}],null,true)}),_c('DeleteCloudAccountDialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}}),_c('UpdateSnowflakeCredentialsDialog',{attrs:{\"edit\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditing),callback:function ($$v) {_vm.isEditing=$$v},expression:\"isEditing\"}}),_c('EditCloudAccountNameDialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingName),callback:function ($$v) {_vm.isEditingName=$$v},expression:\"isEditingName\"}}),_c('EditCloudAccountCurrenciesDialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingCurrencies),callback:function ($$v) {_vm.isEditingCurrencies=$$v},expression:\"isEditingCurrencies\"}}),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SetSnowflakeCredentialsDialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingSnowflakeAccount')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('PostCloudAccountButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingSnowflakeAccount'),expression:\"'creatingSnowflakeAccount'\"}],attrs:{\"value\":{ ...form, Type: 'Snowflake' },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('SetSnowflakeCredentialsCard',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){close().then(clear)}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('setSnowflakeCredentialsCard.title'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" For a detailed break-down of how to configure and connect your Snowflake connection please \"),_c('a',{attrs:{\"href\":`${_vm.docsUrl}/Setup/Snowflake/`,\"target\":\"_blank\"}},[_vm._v(\" follow these instructions.\")])]},proxy:true},{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.formData,\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"disabled\":_vm.disabled && _vm.disabled.Name,\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('useTenantCurrencies'),\"disabled\":_vm.disabled && _vm.disabled.UseTenantCurrencies},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"info\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('useTenantCurrencies.tooltip')))])])]},proxy:true}]),model:{value:(_vm.useTenantCurrencies),callback:function ($$v) {_vm.useTenantCurrencies=$$v},expression:\"useTenantCurrencies\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setSnowflakeCredentialsCard.organizationName')},model:{value:(_vm.organizationName),callback:function ($$v) {_vm.organizationName=$$v},expression:\"organizationName\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setSnowflakeCredentialsCard.accountName')},model:{value:(_vm.accountName),callback:function ($$v) {_vm.accountName=$$v},expression:\"accountName\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"label\":_vm.$t('setSnowflakeCredentialsCard.userName')},model:{value:(_vm.userName),callback:function ($$v) {_vm.userName=$$v},expression:\"userName\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"type\":\"password\",\"required\":\"\",\"label\":_vm.$t('setSnowflakeCredentialsCard.password')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Config from '@/lib/Config';\r\nimport * as M from '@/models';\r\nimport { ref, watch, computed } from 'vue';\r\nexport default {\r\n props: {\r\n loading: Boolean,\r\n value: Object,\r\n disabled: Object,\r\n },\r\n setup(p) {\r\n const valid = ref(false);\r\n const name = ref('');\r\n const useTenantCurrencies = ref(false);\r\n const organizationName = ref('');\r\n const accountName = ref('');\r\n const userName = ref('');\r\n const password = ref('');\r\n const docsUrl = ref(Config.get().DOCS_URL);\r\n\r\n watch(\r\n p.value,\r\n (v: M.ICloudAccountModel | null) => {\r\n if (!v) return;\r\n name.value = v.name;\r\n useTenantCurrencies.value = v.useTenantCurrencies || false;\r\n organizationName.value = v.snowflakeDirectCredential?.clientDomain || '';\r\n accountName.value = v.snowflakeDirectCredential?.container || '';\r\n userName.value = v.snowflakeDirectCredential?.providerId || '';\r\n password.value = v.snowflakeDirectCredential?.token || '';\r\n return true;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n const formData = computed(() => ({\r\n Name: name.value,\r\n UseTenantCurrencies: useTenantCurrencies.value,\r\n SnowflakeDirectCredential: {\r\n Token: password.value,\r\n ClientDomain: organizationName.value,\r\n Container: accountName.value,\r\n ProviderId: userName.value\r\n },\r\n }));\r\n\r\n return {\r\n valid,\r\n name,\r\n useTenantCurrencies,\r\n organizationName,\r\n accountName,\r\n userName,\r\n password,\r\n docsUrl,\r\n formData,\r\n };\r\n }\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetSnowflakeCredentialsCard.vue?vue&type=template&id=2f3db5f1&\"\nimport script from \"./SetSnowflakeCredentialsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetSnowflakeCredentialsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetSnowflakeCredentialsCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SetSnowflakeCredentialsCard from '@/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsCard.vue';\r\nexport default {\r\n props: {\r\n value: Boolean,\r\n loading: Boolean,\r\n disabled: Object,\r\n edit: Object,\r\n },\r\n components: { SetSnowflakeCredentialsCard },\r\n setup(_, { emit }) {\r\n const open = () => emit('input', true);\r\n return { open };\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SetSnowflakeCredentialsDialog.vue?vue&type=template&id=127bc226&\"\nimport script from \"./SetSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport SetSnowflakeCredentialsDialog from '@/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue';\r\nimport PostCloudAccountButton from '@/components/Settings.CloudAccounts/PostCloudAccountButton.vue';\r\nexport default {\r\n components: { SetSnowflakeCredentialsDialog, PostCloudAccountButton },\r\n props: {\r\n value: Boolean,\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateSnowflakeAccountDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateSnowflakeAccountDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateSnowflakeAccountDialog.vue?vue&type=template&id=1ced375c&\"\nimport script from \"./CreateSnowflakeAccountDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateSnowflakeAccountDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SetSnowflakeCredentialsDialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('updatingSnowflakeCredential'),\"edit\":_vm.edit,\"disabled\":{ ...(_vm.disabled || {}), Name: true, UseTenantCurrencies: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, clear, close }){return [_c('PutCredentialButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingSnowflakeCredential'),expression:\"'updatingSnowflakeCredential'\"}],attrs:{\"type\":\"SnowflakeDirectCredential\",\"value\":{ ..._vm.edit, ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){return _vm.acceptSubmit($event, close)}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport SetSnowflakeCredentialsDialog from '@/components/Settings.CloudAccounts/Snowflake/SetSnowflakeCredentialsDialog.vue';\r\nimport PutCredentialButton from '@/components/Settings.CloudAccounts/PutCredentialButton.vue';\r\nexport default {\r\n components: { SetSnowflakeCredentialsDialog, PutCredentialButton },\r\n props: {\r\n value: Boolean,\r\n edit: Object,\r\n disabled: Object,\r\n },\r\n setup(_, { emit }) {\r\n const acceptSubmit = async ($event: any, close: () => Promise) => {\r\n await close();\r\n emit('http2xx', $event);\r\n };\r\n return { acceptSubmit };\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UpdateSnowflakeCredentialsDialog.vue?vue&type=template&id=5a9dcc5b&\"\nimport script from \"./UpdateSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./UpdateSnowflakeCredentialsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('snowflakeCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.Name`,fn:function({ item }){return [_c('button',{attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.updateRouteHistory(item)}}},[_c('span',{staticClass:\"primary--text\"},[_vm._v(\" \"+_vm._s(item.Name)+\" \")])])]}},{key:`item.OrgName`,fn:function({ item }){return [_c('span',{class:item.ConnectionEnabled ? '' : 'error--text'},[_vm._v(\" \"+_vm._s(item.OrgName)+\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"right\":\"\",\"small\":\"\",\"color\":item.ConnectionEnabled ? 'success' : 'error'}},on),[_vm._v(_vm._s(item.ConnectionEnabled ? 'done' : 'error'))])]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(item.ConnectionEnabled ? _vm.$t('connected') : _vm.$t('snowflakeCloudAccountsTable.disconnectedUsageConnection'))+\" \")])])],1)]}},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.menu\",null,{\"item\":item._original})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { ref, computed } from 'vue';\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\nimport * as M from '@/models';\r\n\r\nexport function snowflakeCloudAccountTableFilter(ca: M.ICloudAccountModel) {\r\n return ca.providerType === M.CloudProviderType.snowflake;\r\n}\r\n\r\nexport default {\r\n props: {\r\n items: Array,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/snowflake',\r\n },\r\n },\r\n setup(p) {\r\n const sortedBy = ref('Name');\r\n const sortedDesc = ref(true);\r\n const itemsPerPage = ref(10);\r\n\r\n const tableEntities = computed(() => {\r\n if (!p.items) return [];\r\n return p.items.filter(snowflakeCloudAccountTableFilter).map((ca: M.ICloudAccountModel) => ({\r\n Id: ca.id,\r\n Name: ca.name,\r\n ConnectionEnabled: ca.snowflakeDirectCredential\r\n ? ca.snowflakeDirectCredential.valid\r\n : ca.type === 'SelfReferential',\r\n OrgName: ca.snowflakeDirectCredential\r\n ? ca.snowflakeDirectCredential.clientDomain || ''\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n AccountName: ca.snowflakeDirectCredential\r\n ? ca.snowflakeDirectCredential.container || ''\r\n : ca.type === 'SelfReferential'\r\n ? ''\r\n : '',\r\n _original: ca,\r\n }));\r\n });\r\n\r\n return { sortedBy, sortedDesc, itemsPerPage, tableEntities };\r\n },\r\n computed: {\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('name'),\r\n value: 'Name',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('snowflakeCloudAccountsTable.orgName'),\r\n value: 'OrgName',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('snowflakeCloudAccountsTable.accountName'),\r\n value: 'AccountName',\r\n sortable: true,\r\n },\r\n {\r\n text: 'Actions',\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n },\r\n methods: {\r\n updateRouteHistory(item) {\r\n const navigationHistory: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsSnowflakeCloudAccount,\r\n tenantId: null,\r\n cloudAccountId: item.Id,\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationHistory);\r\n return this.$router.push(`${this.routePrefix}/${item.Id}`);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeAccountTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeAccountTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeAccountTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeAccountTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SnowflakeAccountTable.vue?vue&type=template&id=f4b1a394&scoped=true&\"\nimport script from \"./SnowflakeAccountTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./SnowflakeAccountTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SnowflakeAccountTable.vue?vue&type=style&index=0&id=f4b1a394&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f4b1a394\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SnowflakeAccountTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CreateSnowflakeAccountDialog from '@/components/Settings.CloudAccounts/Snowflake/CreateSnowflakeAccountDialog.vue';\r\nimport UpdateSnowflakeCredentialsDialog from '@/components/Settings.CloudAccounts/Snowflake/UpdateSnowflakeCredentialsDialog.vue';\r\nimport DeleteCloudAccountDialog from '@/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue';\r\nimport EditCloudAccountNameDialog from '@/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue';\r\nimport EditCloudAccountCurrenciesDialog from '@/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue';\r\nimport SnowflakeAccountTable, {\r\n snowflakeCloudAccountTableFilter,\r\n} from '@/components/Settings.CloudAccounts/Snowflake/SnowflakeAccountTable.vue';\r\nimport TaxonomyType from '@/stores/models/TaxonomyType';\r\nimport { ICloudAccountNavigation } from '@/stores/models/ICloudAccountNavigation';\r\nimport { useCloudAccountNavigationStore } from '@/stores/cloudAccountNavigation';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { defineComponent, ref, computed } from 'vue';\r\nimport * as M from '@/models';\r\n\r\nexport default defineComponent({\r\n title() {\r\n return this.$t('settings.snowflake.title');\r\n },\r\n props: {\r\n cloudAccounts: Array,\r\n },\r\n components: {\r\n SnowflakeAccountTable,\r\n CreateSnowflakeAccountDialog,\r\n UpdateSnowflakeCredentialsDialog,\r\n DeleteCloudAccountDialog,\r\n EditCloudAccountNameDialog,\r\n EditCloudAccountCurrenciesDialog,\r\n },\r\n setup(p, { emit }) {\r\n const isCreating = ref(false);\r\n const isEditing = ref(false);\r\n const isEditingName = ref(false);\r\n const isEditingCurrencies = ref(false);\r\n const isDeleting = ref(false);\r\n const focusedAccount = ref(null);\r\n\r\n const snowflakeAccounts = computed(() => {\r\n return p.cloudAccounts.filter(snowflakeCloudAccountTableFilter);\r\n });\r\n\r\n const onCloudAccountsChanged = () => {\r\n emit('onCloudAccountsChanged');\r\n };\r\n\r\n const startEditName = (account) => {\r\n focusedAccount.value = account;\r\n isEditingName.value = true;\r\n };\r\n const startEditCloudAccount = (account) => {\r\n focusedAccount.value = account;\r\n isEditing.value = true;\r\n };\r\n const startDeleteAccount = (account) => {\r\n focusedAccount.value = account;\r\n isDeleting.value = true;\r\n };\r\n const startEditCurrencies = (account) => {\r\n focusedAccount.value = account;\r\n isEditingCurrencies.value = true;\r\n };\r\n\r\n return {\r\n isCreating,\r\n isEditing,\r\n isEditingName,\r\n isEditingCurrencies,\r\n isDeleting,\r\n focusedAccount,\r\n snowflakeAccounts,\r\n onCloudAccountsChanged,\r\n startEditName,\r\n startEditCloudAccount,\r\n startDeleteAccount,\r\n startEditCurrencies,\r\n };\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/settings/snowflake');\r\n this.$title = this.$t('settings.snowflake.title');\r\n },\r\n copyCloudAccount(item: M.ICloudAccountModel) {\r\n const navigationSource: ICloudAccountNavigation = {\r\n taxonomyType: TaxonomyType.settingsSnowflake,\r\n tenantId: null,\r\n cloudAccountId: null,\r\n };\r\n useCloudAccountNavigationStore().updateNavigationSource(navigationSource);\r\n const url = `/copy/cloudaccounts/${item.cloudAccountId}`;\r\n this.$router.push(url);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SnowflakeView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SnowflakeView.vue?vue&type=template&id=838c5014&\"\nimport script from \"./SnowflakeView.vue?vue&type=script&lang=ts&\"\nexport * from \"./SnowflakeView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SnowflakeView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title-icon\":\"publish\",\"title\":_vm.$t('settings.custom.title'),\"caption\":\"The custom cloud connections upon which you may upload custom usage data.\"},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.isAdding = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]},proxy:true}])},[_c('custom-cloud-accounts-table',{attrs:{\"loading\":_vm.$wait.is('getCloudAccounts'),\"items\":_vm.customCloudAccounts},scopedSlots:_vm._u([{key:`item.actions`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditName(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit name')))])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCurrencies(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"currency_exchange\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit currencies')))])],1)],1),(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{attrs:{\"to\":`/copy/cloudaccounts/${item.cloudAccountId}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('copy cloud connection')))])],1)],1):_vm._e(),(item.Type !== 'SelfReferential')?_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete_forever\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1):_vm._e()],1)],1)]}}],null,true)})],1),_c('form-dialog',{model:{value:(_vm.isAdding),callback:function ($$v) {_vm.isAdding=$$v},expression:\"isAdding\"}},[_c('create-custom-cloud-account-card',{attrs:{\"loading\":_vm.$wait.is('creatingCustomCloudAccount'),\"title\":\"Create Custom Account\",\"subtitle\":\"Custom cloud connections can be used to programmitically import custom usage.\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ loading, form, formId }){return [_c('back-button',{on:{\"click\":function($event){_vm.isAdding = false}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"type\":\"submit\",\"form\":formId,\"loading\":loading,\"disabled\":loading,\"depressed\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.createCustomAccount(form)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Submit \")],1)]}}])})],1),_c('delete-cloud-account-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}}),_c('edit-cloud-account-name-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingName),callback:function ($$v) {_vm.isEditingName=$$v},expression:\"isEditingName\"}}),_c('edit-cloud-account-currencies-dialog',{attrs:{\"account\":_vm.focusedAccount},on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isEditingAccountCurrencies),callback:function ($$v) {_vm.isEditingAccountCurrencies=$$v},expression:\"isEditingAccountCurrencies\"}}),_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"item-key\":\"name\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('customCloudAccountsTable.noData'))+\" \")]},proxy:true},{key:`item.actions`,fn:function({ item }){return [_vm._t(\"item.actions\",null,{\"item\":item})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { ICloudAccountModel } from '@/models';\r\n\r\nexport function customCloudAccountTableFilter(ca: ICloudAccountModel) {\r\n return ca.type === 'Custom';\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n items: Array,\r\n loading: Boolean,\r\n routePrefix: {\r\n type: String,\r\n default: '/settings/custom',\r\n },\r\n },\r\n\r\n setup() {\r\n const headers = ref([\r\n { text: 'Name', value: 'name', sortable: true },\r\n { text: 'Actions', value: 'actions', sortable: false },\r\n ]);\r\n\r\n return {\r\n headers,\r\n sortedBy: 'name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomCloudAccountsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomCloudAccountsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomCloudAccountsTable.vue?vue&type=template&id=3b54bce8&\"\nimport script from \"./CustomCloudAccountsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomCloudAccountsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomCloudAccountsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, computed, ref } from 'vue';\r\nimport { ICloudAccountModel } from '@/models';\r\nimport CustomCloudAccountsTable, {\r\n customCloudAccountTableFilter,\r\n} from '@/components/Settings.CloudAccounts/Custom/CustomCloudAccountsTable.vue';\r\nimport CreateCustomCloudAccountCard from '@/components/Common/UpdateEntityNameCard.vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport DeleteCloudAccountDialog from '@/components/Settings.CloudAccounts/DeleteCloudAccountDialog.vue';\r\nimport EditCloudAccountNameDialog from '@/components/Settings.CloudAccounts/EditCloudAccountNameDialog.vue';\r\nimport EditCloudAccountCurrenciesDialog from '@/components/Settings.CloudAccounts/EditCloudAccountCurrenciesDialog.vue';\r\nimport { useTenantStore } from '../../stores/tenant';\r\n\r\nexport default defineComponent({\r\n components: {\r\n CustomCloudAccountsTable,\r\n CreateCustomCloudAccountCard,\r\n DeleteCloudAccountDialog,\r\n EditCloudAccountNameDialog,\r\n EditCloudAccountCurrenciesDialog,\r\n },\r\n props: { cloudAccounts: Array },\r\n setup(props, { emit }) {\r\n const isAdding = ref(false);\r\n const isEditingName = ref(false);\r\n const isEditingAccountCurrencies = ref(false);\r\n const isDeleting = ref(false);\r\n const onCloudAccountsChanged = () => emit('onCloudAccountsChanged');\r\n const focusedAccount = ref(null);\r\n const customCloudAccounts = computed(() => {\r\n return (props.cloudAccounts || ([] as ICloudAccountModel[])).filter(customCloudAccountTableFilter);\r\n });\r\n const createCustomAccount = waitFor('creatingCustomCloudAccount', async function fn(formData: any) {\r\n await ApiV2.http.post('/api/metadata/cloudaccounts', {\r\n type: 'Custom',\r\n name: formData.Name,\r\n });\r\n onCloudAccountsChanged();\r\n isAdding.value = false;\r\n });\r\n const startEditName = (account: ICloudAccountModel) => {\r\n focusedAccount.value = account;\r\n isEditingName.value = true;\r\n };\r\n const startDeleteAccount = (account: ICloudAccountModel) => {\r\n focusedAccount.value = account;\r\n isDeleting.value = true;\r\n };\r\n const startEditCurrencies = (account: ICloudAccountModel) => {\r\n focusedAccount.value = account;\r\n isEditingAccountCurrencies.value = true;\r\n };\r\n const tenantStore = useTenantStore();\r\n return {\r\n customCloudAccounts,\r\n isAdding,\r\n createCustomAccount,\r\n isEditingName,\r\n isEditingAccountCurrencies,\r\n isDeleting,\r\n focusedAccount,\r\n onCloudAccountsChanged,\r\n startEditName,\r\n startEditCurrencies,\r\n startDeleteAccount,\r\n tenantStore\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomView.vue?vue&type=template&id=525fceb2&\"\nimport script from \"./CustomView.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('settings.groups.title'),\"caption\":_vm.$t('settings.groups.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-2\",attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}},{key:\"default\",fn:function({ close }){return [_c('SetUserGroupCard',{attrs:{\"value\":_vm.newUserGroup,\"title\":\"New User Group\",\"subtitle\":\"Create a new user group owned by this tenant.\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ form, isValid, loading, formId }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"form\":formId,\"disabled\":!isValid || loading,\"loading\":loading},on:{\"click\":function($event){_vm.createUserGroup(form).then(() => close())}}},[_vm._v(\" Submit \")])]}}],null,true)})]}}]),model:{value:(_vm.isCreatingGroup),callback:function ($$v) {_vm.isCreatingGroup=$$v},expression:\"isCreatingGroup\"}})]},proxy:true}])},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Description\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Total Members #\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Actions\")])])]),_c('tbody',[_vm._l((_vm.userGroups),function(item){return _c('tr',{key:item.name},[_c('td',[_vm._v(_vm._s(item.name))]),_c('td',[_vm._v(_vm._s(item.description))]),_c('td',[_c('ModalListInput',{attrs:{\"value\":item.members,\"display-text\":`${item.membershipCount} members in group`,\"inner-label\":\"Email\",\"title\":`${item.name} Emails`,\"subtitle\":\"The emails that will be delivered to when a report leverages this mailing list.\"},on:{\"input\":function($event){return _vm.updateGroupMembers(item, $event)}}})],1),_c('td',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.startEditUserGroup(item)}}},[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.startDeleteUserGroup(item)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)],1)])}),(_vm.userGroups.length === 0)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\"There are no user groups\")])]):_vm._e()],2)]),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('SetUserGroupCard',{attrs:{\"value\":_vm.focusGroup,\"title\":\"Edit User Group\",\"subtitle\":\"Update the details of this user group\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ form, isValid, loading, formId }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"form\":formId,\"disabled\":!isValid || loading,\"loading\":loading},on:{\"click\":function($event){_vm.editUserGroup((_vm.focusGroup || {}).id, form).then(() => close())}}},[_vm._v(\" Submit \")])]}}],null,true)})]}}]),model:{value:(_vm.isEditingGroup),callback:function ($$v) {_vm.isEditingGroup=$$v},expression:\"isEditingGroup\"}}),_c('DeleteEntityDialog',{attrs:{\"entityToDelete\":_vm.focusGroup,\"entityType\":\"User Group\",\"resourceApi\":\"/api/metadata/tenant/current/usergroups\"},on:{\"http2xx\":function($event){return _vm.getUserGroups()}},model:{value:(_vm.isDeletingGroup),callback:function ($$v) {_vm.isDeletingGroup=$$v},expression:\"isDeletingGroup\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"default\",null,{\"isValid\":_vm.valid,\"clear\":reset,\"formId\":formId,\"loading\":_vm.loading,\"form\":{ name: _vm.entityName, description: _vm.entityDescription }})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"persistent-hint\":\"\",\"label\":_vm.$t('name'),\"required\":\"\"},model:{value:(_vm.entityName),callback:function ($$v) {_vm.entityName=$$v},expression:\"entityName\"}}),_c('v-textarea',{attrs:{\"rules\":[_vm.$rules.required()],\"persistent-hint\":\"\",\"label\":_vm.$t('description'),\"required\":\"\"},model:{value:(_vm.entityDescription),callback:function ($$v) {_vm.entityDescription=$$v},expression:\"entityDescription\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetUserGroupCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetUserGroupCard.vue?vue&type=template&id=21e2c6d4&\"\nimport script from \"./SetUserGroupCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetUserGroupCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-text-field',{attrs:{\"value\":_vm.displayText || _vm.readText,\"rules\":_vm.rules || [],\"readonly\":\"\",\"label\":_vm.label,\"tabindex\":\"-1\"},on:{\"click\":function($event){return _vm.open()}},scopedSlots:_vm._u([{key:\"append-outer\",fn:function(){return [_c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"title\":_vm.label}},on),[_vm._v(\"edit\")])]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{on:{\"click\":function($event){return _vm.addItem()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1),_c('v-btn',{attrs:{\"color\":\"secondary\",\"form\":formId,\"disabled\":!_vm.isValid || !_vm.additionalIsValid},on:{\"click\":function($event){$event.preventDefault();close().then(() => _vm.submit())}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Submit \")],1)]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},_vm._l((_vm.items),function(item,i){return _c('v-text-field',{key:i,attrs:{\"label\":_vm.innerLabel,\"rules\":_vm.innerRules || [],\"autofocus\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteItem(i)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)]},proxy:true}],null,true),model:{value:(item.value),callback:function ($$v) {_vm.$set(item, \"value\", $$v)},expression:\"item.value\"}})}),1)]}}]),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, computed, ref, watch } from \"vue\";\r\n\r\nexport interface IItemViewModel {\r\n value: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: {\r\n displayText: String,\r\n value: Array,\r\n label: String,\r\n innerLabel: String,\r\n min: Number,\r\n max: Number,\r\n title: String,\r\n subtitle: String,\r\n rules: Array,\r\n innerRules: Array,\r\n },\r\n setup(p, { emit }) {\r\n const readText = computed(() => {\r\n return p.value?.length ? p.value.join(\",\") : \"\";\r\n });\r\n const items = ref([]);\r\n const isOpen = ref(false);\r\n const isValid = ref(false);\r\n const open = () => {\r\n if (isOpen.value) return;\r\n isOpen.value = true;\r\n };\r\n const close = () => {\r\n if (!isOpen.value) return;\r\n isOpen.value = false;\r\n };\r\n const deleteItem = (i: number) => {\r\n items.value.splice(i, 1);\r\n items.value = [...items.value];\r\n };\r\n const addItem = () => {\r\n items.value.push({ value: \"\" });\r\n };\r\n const submit = () => {\r\n emit(\r\n \"input\",\r\n items.value.map((i) => i.value)\r\n );\r\n };\r\n const additionalIsValid = computed(() => {\r\n if (p.min && items.value.length < p.min) return false;\r\n if (p.max && items.value.length > p.max) return false;\r\n return true;\r\n });\r\n watch(\r\n () => p.value,\r\n (v) => {\r\n if (!v || !v.length) items.value = [{ value: \"\" }];\r\n else items.value = v.map((value: string) => ({ value }));\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n return {\r\n readText,\r\n isOpen,\r\n isValid,\r\n items,\r\n additionalIsValid,\r\n addItem,\r\n deleteItem,\r\n submit,\r\n open,\r\n close,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalListInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalListInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ModalListInput.vue?vue&type=template&id=6b65bfe1&\"\nimport script from \"./ModalListInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./ModalListInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent } from 'vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport SetUserGroupCard from '@/components/Settings.Users/SetUserGroupCard.vue';\r\nimport DeleteEntityDialog from '@/components/Common/DeleteEntityDialog.vue';\r\nimport ModalListInput from '@/components/Common/ModalListInput.vue';\r\n\r\nexport default defineComponent({\r\n title() {\r\n return 'Groups';\r\n },\r\n components: {\r\n SetUserGroupCard,\r\n DeleteEntityDialog,\r\n ModalListInput\r\n },\r\n data() {\r\n return {\r\n userGroups: [],\r\n newUserGroup: { name: '', description: '' },\r\n focusGroup: { id: '', name: '', description: '' },\r\n isCreatingGroup: false,\r\n isEditingGroup: false,\r\n isDeletingGroup: false,\r\n };\r\n },\r\n methods: {\r\n getUserGroups: waitFor('getUserGroups', async function () {\r\n this.userGroups = await ApiV2.http.get('api/metadata/tenant/current/usergroups').then((r) => r.data);\r\n }),\r\n createUserGroup: waitFor('creatingUserGroup', async function (form: { name: string; description: string }) {\r\n await ApiV2.http.post('api/metadata/tenant/current/usergroups', form);\r\n this.getUserGroups();\r\n }),\r\n editUserGroup: waitFor(\r\n 'editingUserGroup',\r\n async function (id: string, form: { name: string; description: string }) {\r\n await ApiV2.http.put(`api/metadata/tenant/current/usergroups/${id}`, form);\r\n this.getUserGroups();\r\n }\r\n ),\r\n startEditUserGroup(userGroup: any) {\r\n this.isEditingGroup = true;\r\n this.focusGroup = userGroup;\r\n },\r\n startDeleteUserGroup(userGroup: any) {\r\n this.isDeletingGroup = true;\r\n this.focusGroup = userGroup;\r\n },\r\n async updateGroupMembers(userGroup:any, emails:string[]) {\r\n await ApiV2.http.put(`api/metadata/tenant/current/usergroups/${userGroup.id}/users`, emails);\r\n this.getUserGroups();\r\n }\r\n },\r\n created() {\r\n this.getUserGroups();\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupsView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupsView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GroupsView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GroupsView.vue?vue&type=template&id=273309fe&\"\nimport script from \"./GroupsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupsView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GroupsView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-container',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('views.users.title'),\"caption\":_vm.$t('views.users.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('users.inviteUserOrGroup'))+\" \")],1)]}}])},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startCreateAccount()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mail\")])],1),_c('v-list-item-title',[_vm._v(\"Invite new user\")])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startAddUserGroup()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"person_add\")])],1),_c('v-list-item-title',[_vm._v(\"Grant permissions to group\")])],1)],1)],1)]},proxy:true},{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},[_c('users-table',{attrs:{\"items\":_vm.userItems,\"loading\":_vm.$wait.is('getUsers')},scopedSlots:_vm._u([{key:`item.menu`,fn:function({ item }){return [(!item.IsMe)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[(item.type === 'User')?_c('v-list',{attrs:{\"light\":\"\"}},[(!item.isTenantCreator)?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAccount(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1):_c('v-list',{attrs:{\"light\":\"\"}},[(!item.isTenantCreator)?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditUserGroup(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteUserGroup(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1)],1):_c('span',[_vm._v(\"N/A\")])]}}],null,true)})],1)],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('set-user-card',{attrs:{\"loading\":_vm.$wait.is('createUser'),\"value\":_vm.userToEdit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),(!_vm.userToEdit)?_c('add-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('createUser'),expression:\"'createUser'\"}],attrs:{\"value\":form,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":_vm.prefix},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}}):_c('update-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('createUser'),expression:\"'createUser'\"}],attrs:{\"value\":form,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":_vm.prefix},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.createOrUpdateUser),callback:function ($$v) {_vm.$set(_vm.dialogs, \"createOrUpdateUser\", $$v)},expression:\"dialogs.createOrUpdateUser\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('SetUserGroupPermissionsCard',{attrs:{\"value\":_vm.userGroupToEdit,\"loading\":_vm.$wait.is('addingUserGroup'),\"groups\":_vm.userGroups,\"disabled\":_vm.userGroupToEdit ? { groupId: true } : null},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, loading, isValid }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"type\":\"submit\",\"form\":formId,\"disabled\":loading || !isValid,\"loading\":loading},on:{\"click\":function($event){return _vm.tryAddOrUpdateGroup(form, close)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit \")],1)]}}],null,true)})]}}]),model:{value:(_vm.dialogs.addUserGroupPermission),callback:function ($$v) {_vm.$set(_vm.dialogs, \"addUserGroupPermission\", $$v)},expression:\"dialogs.addUserGroupPermission\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-user-card',{attrs:{\"loading\":_vm.$wait.is('deleteUser'),\"value\":_vm.userToDelete,\"title\":_vm.$t('users.DeleteUserTitle'),\"subtitle\":_vm.$t('users.DeleteUserSubtitle'),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-user-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deleteUser'),expression:\"'deleteUser'\"}],attrs:{\"value\":_vm.userToDelete,\"clear\":clear,\"valid\":isValid,\"form\":formId,\"prefix\":_vm.prefix},on:{\"http2xx\":function($event){close().then(_vm.getUsers)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.deleteUser),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteUser\", $$v)},expression:\"dialogs.deleteUser\"}}),_c('DeleteEntityDialog',{attrs:{\"entityToDelete\":_vm.userGroupToRemove,\"entityType\":\"User Group\",\"resourceApi\":\"/api/metadata/tenant/current/delegatedusergroups\"},on:{\"http2xx\":function($event){return _vm.getUsers()}},model:{value:(_vm.dialogs.deleteUserGroup),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteUserGroup\", $$v)},expression:\"dialogs.deleteUserGroup\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.users.title\": \"Access Management\",\r\n \"views.users.subtitle\": \"The users and groups that have some level of access of this tenant.\",\r\n \"users.inviteUserOrGroup\": \"Add User / Group\",\r\n \"users\": \"Users\",\r\n \"users.DeleteUserTitle\": \"Delete User\",\r\n \"users.DeleteUserSubtitle\": \"This user will be removed from this tenant. If this was a mistake you can re-invite them and their access will be renewed.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsersView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./UsersView.vue?vue&type=template&id=7c3a4fee&\"\nimport script from \"./UsersView.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./UsersView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-title',[_vm._v(_vm._s(_vm.$t('billingDetails.title')))]),_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_c('v-alert',{attrs:{\"outlined\":\"\",\"text\":\"\",\"type\":_vm.billingDetails.color,\"icon\":_vm.billingDetails.icon}},[_vm._v(_vm._s(_vm.billingDetails.description))])],1)],1),(!_vm.tenantStore.hasActiveSubscription && _vm.tenantStore.isSelfService && _vm.selfServiceEnabled)?_c('plan-card'):_vm._e()],1),_c('v-divider'),(_vm.tenantStore.hasActiveSubscription)?_c('v-container',[_c('v-row',[_c('v-col',[(_vm.billingDetails.plan)?_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-title',[_vm._v(\"Plan overview\")]),_c('v-card-text',[_c('v-row',[_c('v-col',[_vm._v(\"Plan name\")]),_c('v-col',[_vm._v(_vm._s(_vm.billingDetails.plan.planName))])],1),_c('v-row',[_c('v-col',[_vm._v(\"Plan description\")]),_c('v-col',[_vm._v(_vm._s(_vm.billingDetails.plan.planDescription))])],1),(_vm.billingDetails.plan.includedSpendInAud)?_c('v-row',[_c('v-col',[_vm._v(\"Included spend (AUD)\")]),_c('v-col',[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.billingDetails.totalSpendInAud,'AUD'))+\" of \"),_c('strong',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.billingDetails.plan.includedSpendInAud,'AUD')))]),_c('consumption-bar',{attrs:{\"current-consumption\":(_vm.billingDetails.totalSpendInAud / _vm.billingDetails.plan.includedSpendInAud) * 100}})],1)],1):_vm._e(),(_vm.billingDetails.plan.overagePercentage)?_c('v-row',[_c('v-col',[_vm._v(\"Overage charged at\")]),_c('v-col',[_vm._v(_vm._s(_vm.billingDetails.plan.overagePercentage))])],1):_vm._e()],1)],1):_vm._e()],1),_c('v-col',[(_vm.billingDetails.isSelfService && _vm.selfServiceEnabled)?_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-title',[_vm._v(\"Update Details\")]),_c('v-card-text',[_vm._v(\" To change plans, updated your payment details, or cancel your subscription please use the link below. \")]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\",\"loading\":_vm.$wait.is('loadingSession')},on:{\"click\":_vm.loadCustomerPortalSession}},[_vm._v(\" Update Subscription \")])],1)],1):_vm._e()],1)],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export class BillingPlan {\r\n public planName: string;\r\n public planId: number;\r\n public planDescription: string;\r\n public includedSpendInAud?: number;\r\n public overagePercentage?: number;\r\n\r\n constructor(plan: any) {\r\n this.planId = plan.planId;\r\n this.planName = plan.planName;\r\n this.planDescription = plan.planDescription;\r\n this.includedSpendInAud = plan.includedSpendInAud;\r\n this.overagePercentage = plan.overagePercentage;\r\n }\r\n}\r\n\r\nexport class BillingDetailsStatus {\r\n public billingStatus: number;\r\n public remainingDays: any;\r\n public plan?: BillingPlan;\r\n public totalSpendInAud: number;\r\n public isSelfService: boolean;\r\n\r\n constructor(status: any) {\r\n if (status) {\r\n this.billingStatus = status.billingStatus;\r\n this.remainingDays = status.remainingDays;\r\n this.plan = (status.planDetails) ? new BillingPlan(status.planDetails) : null;\r\n this.totalSpendInAud = status.totalSpendInAud;\r\n this.isSelfService = status.isSelfService;\r\n }\r\n }\r\n\r\n get color() {\r\n switch (this.billingStatus) {\r\n case 1: // FREE_TRIAL_COUNTDOWN\r\n return 'warning';\r\n case 2: // FULL_ACCOUNT_BILLED\r\n case 3: // FULL_ACCOUNT_BILLED_PROVIDER\r\n return 'success';\r\n default: // NO_BILLING_AGREEMENT\r\n return 'warning';\r\n }\r\n }\r\n\r\n get icon() {\r\n switch (this.billingStatus) {\r\n case 1: // FREE_TRIAL_COUNTDOWN\r\n return 'watch_later';\r\n case 2: // FULL_ACCOUNT_BILLED\r\n case 3: // FULL_ACCOUNT_BILLED_PROVIDER\r\n return 'check';\r\n case 4: // EXPIRED\r\n default: // NO_BILLING_AGREEMENT\r\n return 'warning';\r\n }\r\n }\r\n\r\n get description() {\r\n let description = \"\";\r\n switch (this.billingStatus) {\r\n case 1: // FREE_TRIAL_COUNTDOWN\r\n description = `You are currently on a free trial which ends in ${this.remainingDays} days.`;\r\n break;\r\n case 2: // FULL_ACCOUNT_BILLED\r\n description = \"Full Account. Monthly Billing.\";\r\n break;\r\n case 3: // FULL_ACCOUNT_BILLED_PROVIDER\r\n description = \"Usage for this account is billed to your provider.\";\r\n break;\r\n case 4: // EXPIRED\r\n description = \"Your billing plan has expired which means no data will be loaded.\";\r\n break;\r\n default: // NO_BILLING_AGREEMENT\r\n description = \"There is no subscription in place for this account which means no data will be loaded.\";\r\n break;\r\n }\r\n\r\n return description;\r\n }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.maxConsumption)?_c('v-row',[_c('v-col',{staticClass:\"text-left\",attrs:{\"cols\":\"6\"}},[_c('small',[_vm._v(_vm._s(_vm.minConsumption || 0))])]),_c('v-col',{staticClass:\"text-right\",attrs:{\"cols\":\"6\"}},[_c('small',[_vm._v(_vm._s(_vm.maxConsumption))])])],1):_vm._e(),_c('v-progress-linear',{style:(`background-color:${_vm.backgroundColor}`),attrs:{\"background-color\":_vm.predictedColor,\"color\":_vm.currentColor,\"value\":_vm.currentConsumption,\"buffer-value\":_vm.predictedConsumption,\"height\":\"20\",\"rounded\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ value }){return [_c('strong',[_vm._v(_vm._s(Math.ceil(value))+\"%\")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, computed } from 'vue';\r\nimport {\r\n VuetifyErrorDarken1,\r\n VuetifyWarningDarken1,\r\n VuetifySuccessDarken1,\r\n VuetifySuccessLighten2,\r\n VuetifyErrorLighten2,\r\n VuetifyWarningLighten2,\r\n} from '@/lib/CssVariables';\r\nexport default defineComponent({\r\n props: {\r\n currentConsumption: Number,\r\n predictedConsumption: { type: Number, default: null },\r\n minConsumption: { type: String, default: null },\r\n maxConsumption: { type: String, default: null },\r\n },\r\n setup(props) {\r\n const currentColor = computed(() => {\r\n if (props.currentConsumption >= 100) {\r\n return VuetifyErrorDarken1;\r\n } else if (props.predictedConsumption >= 100) {\r\n return VuetifyWarningDarken1;\r\n } else {\r\n return VuetifySuccessDarken1;\r\n }\r\n });\r\n const predictedColor = computed(() => {\r\n if (props.currentConsumption >= 100) {\r\n return VuetifyErrorLighten2;\r\n } else if (props.predictedConsumption >= 100) {\r\n return VuetifyWarningLighten2;\r\n } else {\r\n return VuetifySuccessLighten2;\r\n }\r\n });\r\n return {\r\n backgroundColor: '#f0f2f7',\r\n currentColor,\r\n predictedColor,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConsumptionBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConsumptionBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConsumptionBar.vue?vue&type=template&id=29e610e4&\"\nimport script from \"./ConsumptionBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConsumptionBar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":\"Select a plan to start your trial subscription\",\"title-icon\":\"star\",\"loading\":_vm.$wait.is('loadingplans')}},[(!_vm.$wait.is('loadingplans'))?_c('v-container',{attrs:{\"fill-height\":\"\"}},[_c('v-row',{staticClass:\"mb-8\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-btn-toggle',{attrs:{\"mandatory\":\"\"},model:{value:(_vm.isMonthly),callback:function ($$v) {_vm.isMonthly=$$v},expression:\"isMonthly\"}},[_c('v-btn',{attrs:{\"small\":\"\",\"outlined\":\"\",\"value\":true}},[_vm._v(\"Monthly\")]),_c('v-btn',{attrs:{\"small\":\"\",\"outlined\":\"\",\"value\":false}},[_vm._v(\"Yearly\")])],1)],1),_c('v-row',{attrs:{\"fill-height\":\"\"}},_vm._l((_vm.products),function(product){return _c('v-col',{key:product.stripeProductId},[_c('v-card',{attrs:{\"height\":\"100%\"}},[_c('v-card-title',[_vm._v(_vm._s(product.name))]),_c('v-card-text',[(_vm.isMonthly)?_c('v-row',{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-h3\",attrs:{\"align\":\"center\"}},[_vm._v(\" $\"+_vm._s(product.monthlyPlan.amount)),_c('br'),_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"primary\",\"loading\":_vm.$wait.is('redirecting')},on:{\"click\":function($event){return _vm.planSelected(`${product.monthlyPlan.stripePriceId}`)}}},[_vm._v(\"start trial\")])],1)],1):_vm._e(),(!_vm.isMonthly)?_c('v-row',{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-h3\",attrs:{\"align\":\"center\"}},[_vm._v(\" $\"+_vm._s(product.yearlyPlan.amount)),_c('br'),_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"primary\",\"loading\":_vm.$wait.is('redirecting')},on:{\"click\":function($event){return _vm.planSelected(`${product.yearlyPlan.stripePriceId}`)}}},[_vm._v(\"start trial\")])],1)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('ul',_vm._l((product.features),function(value,propertyName){return _c('li',{key:propertyName},[_vm._v(\" \"+_vm._s(propertyName)+\": \"+_vm._s(value)+\" \")])}),0)])],1)],1)],1)],1)}),1),_c('v-row',{staticClass:\"mt-8\"},[_c('v-col',{staticClass:\"text-caption\"},[_vm._v(\"All prices listed in Australian Dollars and exclude GST. Payments are processed by our subscription provider Stripe.\")])],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectPlanCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectPlanCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectPlanCard.vue?vue&type=template&id=b1b96358&\"\nimport script from \"./SelectPlanCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectPlanCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n {\r\n \"en\": {\r\n \"billingDetails.title\": \"Billing details\"\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingDetailsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingDetailsView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingDetailsView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingDetailsView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./BillingDetailsView.vue?vue&type=template&id=26d85ceb&scoped=true&\"\nimport script from \"./BillingDetailsView.vue?vue&type=script&lang=js&\"\nexport * from \"./BillingDetailsView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26d85ceb\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./BillingDetailsView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-container',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('apiManagement.subTitle'),\"caption\":_vm.$t('apiManagement.caption')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.showGenerateApiKey()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('add'))+\" \")],1)]},proxy:true}])},[_c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.apiKeys,\"item-key\":\"id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc,\"loading-text\":_vm.$t('apiManagement.table.loading')},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('apiManagement.table.noData'))+\" \")]},proxy:true},{key:`item.reference`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.mask)+\" \")]}},{key:`item.permissions`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.permissions ? item.permissions.join(', ') : `${item.impersionationAccountEmail} [Impersonate]`)+\" \")]}},{key:`item.creationDate`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"calendarFormat\")(item.createdDate))+\" \")]}},{key:`item.Actions`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.removeKey(item.id)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('disable')))])],1)],1)],1)],1)]}}],null,true)})],1)],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('generate-api-key-card',{attrs:{\"loading\":_vm.$wait.is('createKey'),\"generatedKey\":_vm.generatedKey},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear }){return [(!_vm.generatedKey)?_c('back-button',{on:{\"click\":function($event){return close()}}}):_vm._e(),_c('v-spacer'),(!_vm.generatedKey)?_c('generate-api-key-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('createKey'),expression:\"'createKey'\"}],attrs:{\"clear\":clear,\"valid\":isValid,\"form\":form},on:{\"http2xx\":_vm.setGenerated}}):_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){close().then(_vm.successfulGenerate)}}},[_vm._v(\" \"+_vm._s(_vm.$t('close'))+\" \")])]}}],null,true)})]}}]),model:{value:(_vm.dialogs.showCreateKey),callback:function ($$v) {_vm.$set(_vm.dialogs, \"showCreateKey\", $$v)},expression:\"dialogs.showCreateKey\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"value\":_vm.keyToDelete,\"loading\":_vm.$wait.is('deletingKey'),\"title\":_vm.$t('apiManagement.deleteDialog.title'),\"subtitle\":_vm.$t('apiManagement.deleteDialog.subtitle'),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('delete-api-key-button',{attrs:{\"apiKeyId\":_vm.keyToDelete,\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(_vm.successfulDelete)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.showDeleteKey),callback:function ($$v) {_vm.$set(_vm.dialogs, \"showDeleteKey\", $$v)},expression:\"dialogs.showDeleteKey\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('generateApiKeyCard.title'),\"subtitle\":_vm.$t('generateApiKeyCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"formId\":formId,\"isValid\":true,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true)},[_vm._v(\" \"+_vm._s(_vm.$t('generateApiKeyCard.ApiKey'))+\" \"),_c('v-textarea',{attrs:{\"outlined\":\"\",\"disabled\":!_vm.generatedKey,\"placeholder\":_vm.$t('generateApiKeyCard.ApiKey.placeholder')},model:{value:(_vm.generatedKey),callback:function ($$v) {_vm.generatedKey=$$v},expression:\"generatedKey\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nexport default {\r\n props: ['loading', 'value', 'disabled', 'valid', 'generatedKey'],\r\n methods: {\r\n copy() {\r\n navigator.clipboard.writeText(this.generatedKey);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GenerateApiKeyCard.vue?vue&type=template&id=72150b01&\"\nimport script from \"./GenerateApiKeyCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GenerateApiKeyCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GenerateApiKeyCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"depressed\":\"\",\"loading\":_vm.loading,\"disabled\":!_vm.valid,\"form\":_vm.form},on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._v(\" \"+_vm._s(_vm.$t('generateApiKeyButton.generateText'))+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"generateApiKeyButton.generateText\": \"Generate\",\r\n \"generateApiKeyButton.error\": \"There was an issue generating an api key.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GenerateApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GenerateApiKeyButton.vue?vue&type=template&id=b134755e&\"\nimport script from \"./GenerateApiKeyButton.vue?vue&type=script&lang=js&\"\nexport * from \"./GenerateApiKeyButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GenerateApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":_vm.apiKeyId ? `/api/apikeys/${_vm.apiKeyId}` : null,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteApiKeyButton.errorMessage\": \"There was an issue deleting the api key.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteApiKeyButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteApiKeyButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteApiKeyButton.vue?vue&type=template&id=199c5b6d&\"\nimport script from \"./DeleteApiKeyButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteApiKeyButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteApiKeyButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { getApiKeys } from '@/lib/Api';\r\nimport GenerateApiKeyCard from '@/components/Account.ApiManagement/GenerateApiKeyCard.vue';\r\nimport GenerateApiKeyButton from '@/components/Account.ApiManagement/GenerateApiKeyButton.vue';\r\nimport DeleteApiKeyButton from '@/components/Account.ApiManagement/DeleteApiKeyButton.vue';\r\nimport { toastSuccess } from '@/components/Common/Toast.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t('apiManagement.title');\r\n },\r\n components: {\r\n GenerateApiKeyCard,\r\n GenerateApiKeyButton,\r\n DeleteApiKeyButton,\r\n },\r\n data() {\r\n return {\r\n sortedBy: 'Name',\r\n sortedDesc: true,\r\n itemsPerPage: 10,\r\n loading: true,\r\n dialogs: {\r\n showCreateKey: false,\r\n showDeleteKey: false,\r\n },\r\n apiKeys: [],\r\n profiles: [],\r\n generatedKey: null,\r\n keyToDelete: null,\r\n };\r\n },\r\n methods: {\r\n setGenerated(data) {\r\n this.generatedKey = data.key;\r\n },\r\n removeKey(keyId) {\r\n this.keyToDelete = keyId;\r\n this.dialogs.showDeleteKey = true;\r\n },\r\n showGenerateApiKey() {\r\n this.dialogs.showCreateKey = true;\r\n },\r\n async successfulGenerate() {\r\n this.generatedKey = null;\r\n await this.loadKeys();\r\n },\r\n async successfulDelete() {\r\n toastSuccess(this.$t('apiManagement.deletedKeyToast'));\r\n this.keyToDelete = null;\r\n\r\n await this.loadKeys();\r\n },\r\n async loadKeys() {\r\n this.loading = true;\r\n\r\n try {\r\n const tenantId = this.tenantStore.tenantId;\r\n this.apiKeys = await getApiKeys()\r\n .then((r) => r.filter((a) => a.tenantId === tenantId));\r\n } finally {\r\n this.loading = false;\r\n }\r\n },\r\n },\r\n computed: {\r\n headers() {\r\n return [\r\n {\r\n text: this.$t('apiManagement.table.referenceColumn'),\r\n value: 'reference',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('apiManagement.table.permissions'),\r\n value: 'permissions',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('apiManagement.table.creationDateColumn'),\r\n value: 'creationDate',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t('apiManagement.table.createdByEmail'),\r\n value: 'createdByAccountEmail',\r\n sortable: true\r\n },\r\n {\r\n value: 'Actions',\r\n sortable: false,\r\n },\r\n ];\r\n },\r\n ...mapStores(useTenantStore)\r\n },\r\n async mounted() {\r\n await this.loadKeys();\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApiManagementView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApiManagementView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApiManagementView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ApiManagementView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ApiManagementView.vue?vue&type=template&id=cfcd3016&\"\nimport script from \"./ApiManagementView.vue?vue&type=script&lang=ts&\"\nexport * from \"./ApiManagementView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ApiManagementView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-container',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('views.manageTenants.my.title'),\"caption\":_vm.$t('views.manageTenants.my.caption')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.startEditTenant(_vm.tenantToEdit)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"edit\")]),_vm._v(\" \"+_vm._s(_vm.$t('edit'))+\" \")],1)]},proxy:true}])},[_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-text-field',{attrs:{\"readonly\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('views.manageTenants.tenantId')},model:{value:(_vm.tenantToEdit.id),callback:function ($$v) {_vm.$set(_vm.tenantToEdit, \"id\", $$v)},expression:\"tenantToEdit.id\"}})],1),_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-text-field',{attrs:{\"readonly\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('views.manageTenants.name')},model:{value:(_vm.tenantToEdit.name),callback:function ($$v) {_vm.$set(_vm.tenantToEdit, \"name\", $$v)},expression:\"tenantToEdit.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-text-field',{attrs:{\"readonly\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('views.manageTenants.display.currency')},model:{value:(_vm.tenantToEdit.displayCurrencyCode),callback:function ($$v) {_vm.$set(_vm.tenantToEdit, \"displayCurrencyCode\", $$v)},expression:\"tenantToEdit.displayCurrencyCode\"}})],1),(_vm.tenantStore.features.includes('AllowMpnOverride'))?_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('v-text-field',{attrs:{\"readonly\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('views.manageTenants.display.mpn')},model:{value:(_vm.tenantToEdit.mpnOverride),callback:function ($$v) {_vm.$set(_vm.tenantToEdit, \"mpnOverride\", $$v)},expression:\"tenantToEdit.mpnOverride\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('div',[_vm._v(\"Tag Hierarchy\")]),_c('v-treeview',{attrs:{\"open-all\":\"\",\"items\":_vm.tagHierarchy}})],1)],1)],1),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"value\":_vm.tenantToDelete,\"loading\":_vm.$wait.is('deletingTenant'),\"title\":_vm.$t('views.manageTenants.delete.title'),\"subtitle\":_vm.$t('views.manageTenants.delete.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('delete-tenant-button',{attrs:{\"value\":_vm.tenantToDelete,\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(_vm.goToChoose)}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.deleteTenant),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteTenant\", $$v)},expression:\"dialogs.deleteTenant\"}}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('set-tenant-card',{attrs:{\"value\":_vm.tenantToEdit,\"loading\":_vm.$wait.is('updatingTenant'),\"title\":_vm.$t('views.manageTenants.edit.title'),\"subtitle\":_vm.$t('views.manageTenants.edit.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, form, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('put-tenant-button',{attrs:{\"value\":{ ..._vm.tenantToEdit, ...form },\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(_vm.afterUpdateTenant({ ..._vm.tenantToEdit, ...form }))}}})]}}],null,true)})]}}]),model:{value:(_vm.dialogs.updateTenant),callback:function ($$v) {_vm.$set(_vm.dialogs, \"updateTenant\", $$v)},expression:\"dialogs.updateTenant\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":_vm.value ? `/api/metadata/tenant/${_vm.value.Id}` : null,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteTenantButton.errorMessage\": \"There was an error encountered while deleting this tenant. If everything looks right please contact support so we can help you :)\",\r\n \"deleteTenantButton.unauthorisedMessage\": \"You do not have permission to delete this tenant.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteTenantButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteTenantButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteTenantButton.vue?vue&type=template&id=13cd5e5b&\"\nimport script from \"./DeleteTenantButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteTenantButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.manageTenants.title\": \"General Settings\",\r\n \"views.manageTenants.my.title\": \"General Settings\",\r\n \"views.manageTenants.my.caption\": \"Name, currency and other general settings for this tenant.\",\r\n \"views.manageTenants.edit.button\": \"Edit\",\r\n \"views.manageTenants.name\": \"Name\",\r\n \"views.manageTenants.tenantId\": \"Tenant ID\",\r\n \"views.manageTenants.display.currency\": \"Display Currency\",\r\n \"views.manageTenants.display.mpn\": \"Microsoft Partner Number\",\r\n \"views.manageTenants.edit.title\": \"Update Tenant\",\r\n \"views.manageTenants.edit.subtitle\": \"Update the details of this tenant. FX Rates will be applied on the underlying cloud currencies immediately.\",\r\n \"views.manageTenants.delete.button\": \"Delete\",\r\n \"views.manageTenants.delete.title\": \"Delete Tenant\",\r\n \"views.manageTenants.delete.subtitle\": \"Please consider this carefully before continuing, this action cannot be reversed. You will always be able to create a new tenant and re-import your usage but you will lose all custom tags, spend limits etc. forever.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GeneralView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GeneralView.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GeneralView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GeneralView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GeneralView.vue?vue&type=template&id=b1bdd542&\"\nimport script from \"./GeneralView.vue?vue&type=script&lang=js&\"\nexport * from \"./GeneralView.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GeneralView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{attrs:{\"title-icon\":\"currency_exchange\",\"title\":\"FX Rate Overrides\",\"caption\":\"When configuring a cloud connection you may nominate whether to use the base FX rates or include any overrides supplied on this screen.\"},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-fx-rate-dialog',{on:{\"http2xx\":function($event){return _vm.getTenantCurrencies()}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-2\",attrs:{\"color\":\"secondary\",\"depressed\":\"\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}}]),model:{value:(_vm.isAdding),callback:function ($$v) {_vm.isAdding=$$v},expression:\"isAdding\"}})]},proxy:true}])},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Source\")]),_c('th',[_vm._v(\"Target\")]),_c('th',[_vm._v(\"Rate\")]),_c('th',[_vm._v(\"Effective From\")]),_c('th',[_vm._v(\"Actions\")])])]),_c('tbody',[(_vm.tenantFxRates.length === 0)?_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"},attrs:{\"colspan\":\"5\"}},[_vm._v(\"No overrides.\")])]):_vm._e(),_vm._l((_vm.tenantFxRates),function(fx,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(fx.sourceCurrencyCode))]),_c('td',[_vm._v(_vm._s(fx.targetCurrencyCode))]),_c('td',[_vm._v(\"1:\"+_vm._s(fx.fxRate))]),_c('td',[_vm._v(_vm._s(fx.effectiveFromMonth)+\"/\"+_vm._s(fx.effectiveFromYear))]),_c('td',[_c('fx-rate-menu',{attrs:{\"value\":fx},on:{\"http2xx\":_vm.getTenantCurrencies}})],1)])})],2)])],1),_c('content-card',{staticClass:\"mt-4\",attrs:{\"title-icon\":\"price_check\",\"title\":\"System FX Rates\",\"caption\":\"The base set of system-level FX rates which will be used in lieu of any provided overrides.\"}},[_c('v-select',{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"300px\",\"float\":\"left\"},attrs:{\"items\":_vm.priorMonths,\"item-text\":\"text\",\"item-value\":\"value\",\"filled\":\"\",\"dense\":\"\",\"label\":\"Period\"},on:{\"change\":function($event){return _vm.getFixedCurrencies()}},model:{value:(_vm.selectedMonth),callback:function ($$v) {_vm.selectedMonth=$$v},expression:\"selectedMonth\"}}),_c('v-select',{staticStyle:{\"max-width\":\"300px\"},attrs:{\"items\":_vm.currencyCodes,\"filled\":\"\",\"dense\":\"\",\"label\":\"Currency\"},on:{\"change\":function($event){return _vm.getFixedCurrencies()}},model:{value:(_vm.targetCurrencyCode),callback:function ($$v) {_vm.targetCurrencyCode=$$v},expression:\"targetCurrencyCode\"}}),_c('v-simple-table',{staticStyle:{\"clear\":\"left\"}},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Source\")]),_c('th',[_vm._v(\"Target\")]),_c('th',[_vm._v(\"Rate\")]),_c('th',[_vm._v(\"Effective From\")])])]),_c('tbody',[(_vm.fixedFxRates.length === 0)?_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"},attrs:{\"colspan\":\"5\"}},[_vm._v(\"No overrides.\")])]):_vm._e(),_vm._l((_vm.fixedFxRates),function(fx,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(fx.sourceCurrencyCode))]),_c('td',[_vm._v(_vm._s(fx.targetCurrencyCode))]),_c('td',[_vm._v(\"1:\"+_vm._s(fx.fxRate))]),_c('td',[_vm._v(_vm._s(fx.effectiveFromMonth)+\"/\"+_vm._s(fx.effectiveFromYear))])])})],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-fx-rate-dialog',{attrs:{\"value\":_vm.value,\"loading\":_vm.$wait.is('creatingFxRate')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, close }){return [_c('create-fx-rate-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingFxRate'),expression:\"'creatingFxRate'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-fx-rate-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"value\":_vm.edit},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":\"Set FX Rate\",\"subtitle\":\"FX Rates are effective from a given period until another FX Rate is provided in the future.\",\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.formData,\"formId\":formId,\"isValid\":_vm.valid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-alert',{attrs:{\"color\":\"warning\",\"text\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" Changes to FX Rates will only take effect as usage is imported. Usage is only imported up to 2 months prior. If you need more control over FX rates please contact support.\")],1),_c('v-select',{attrs:{\"items\":_vm.currencyCodes,\"label\":\"Source Currency\",\"disabled\":_vm.disabled && _vm.disabled.sourceCurrencyCode},model:{value:(_vm.sourceCode),callback:function ($$v) {_vm.sourceCode=$$v},expression:\"sourceCode\"}}),_c('v-select',{attrs:{\"items\":_vm.currencyCodes,\"label\":\"Target Currency\"},model:{value:(_vm.targetCurrencyCode),callback:function ($$v) {_vm.targetCurrencyCode=$$v},expression:\"targetCurrencyCode\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"disabled\":_vm.disabled && _vm.disabled.fxRate,\"label\":\"FX Rate\"},model:{value:(_vm.fxRate),callback:function ($$v) {_vm.fxRate=$$v},expression:\"fxRate\"}}),_c('v-subheader',{staticClass:\"px-0\"},[_vm._v(\"Effective From...\")]),_c('v-date-picker',{staticClass:\"pl-0\",attrs:{\"full-width\":\"\",\"landscape\":\"\",\"type\":\"month\",\"disabled\":_vm.disabled && (_vm.disabled.effectiveFromYear || _vm.disabled.effectiveFromMonth)},model:{value:(_vm.effectiveFrom),callback:function ($$v) {_vm.effectiveFrom=$$v},expression:\"effectiveFrom\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetFxRateCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetFxRateCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetFxRateCard.vue?vue&type=template&id=2fa504d4&\"\nimport script from \"./SetFxRateCard.vue?vue&type=script&lang=js&\"\nexport * from \"./SetFxRateCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetFxRateCard.vue?vue&type=style&index=0&id=2fa504d4&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport SetFxRateCard from '@/components/Domain.FxRates/SetFxRateCard.vue';\r\nexport default {\r\n props: ['value', 'loading', 'disabled', 'edit'],\r\n components: { SetFxRateCard },\r\n methods: {\r\n open() {\r\n this.$emit('input', true);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetFxRateDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetFxRateDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SetFxRateDialog.vue?vue&type=template&id=466aec19&\"\nimport script from \"./SetFxRateDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetFxRateDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/fxrates/tenant\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createFxRateButton.errorMessage\": \"There was an error encountered while creating this fx rate. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateFxRateButton.vue?vue&type=template&id=7be8b212&\"\nimport script from \"./CreateFxRateButton.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateFxRateButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SetFxRateDialog from '@/components/Domain.FxRates/SetFxRateDialog.vue';\r\nimport CreateFxRateButton from '@/components/Domain.FxRates/CreateFxRateButton.vue';\r\nexport default {\r\n components: { SetFxRateDialog, CreateFxRateButton },\r\n props: {\r\n value: Boolean,\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateFxRateDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateFxRateDialog.vue?vue&type=template&id=498a108c&\"\nimport script from \"./CreateFxRateDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateFxRateDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}])},[_c('v-list',[_c('update-fx-rate-dialog',{attrs:{\"edit\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit\")])],1)],1)]}}]),model:{value:(_vm.isUpdating),callback:function ($$v) {_vm.isUpdating=$$v},expression:\"isUpdating\"}}),_c('delete-fx-rate-dialog',{attrs:{\"account\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)]}}]),model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('set-fx-rate-dialog',{attrs:{\"value\":_vm.value,\"edit\":_vm.edit,\"loading\":_vm.$wait.is('updatingFxRate'),\"disabled\":{ sourceCurrencyCode: true, targetCurrencyCode: true, effectiveFromYear: true }},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, close }){return [_c('edit-fx-rate-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingFxRate'),expression:\"'updatingFxRate'\"}],attrs:{\"value\":_vm.edit,\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"patches\":[{ op: 'replace', path: 'fxRate', value: form.fxRate }]},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":_vm.url,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchFxRateButton.errorMessage\": \"There was an error encountered while updating this fx rate. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EditFxRateButton.vue?vue&type=template&id=1920dcd1&\"\nimport script from \"./EditFxRateButton.vue?vue&type=script&lang=js&\"\nexport * from \"./EditFxRateButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EditFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SetFxRateDialog from '@/components/Domain.FxRates/SetFxRateDialog.vue';\r\nimport EditFxRateButton from '@/components/Domain.FxRates/EditFxRateButton.vue';\r\nexport default {\r\n components: { SetFxRateDialog, EditFxRateButton },\r\n props: {\r\n value: Boolean,\r\n edit: Object,\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditFxRateDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditFxRateDialog.vue?vue&type=template&id=d788975e&\"\nimport script from \"./EditFxRateDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditFxRateDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-fx-rate-card',{attrs:{\"loading\":_vm.$wait.is('deleteFxRate'),\"value\":_vm.account,\"title\":_vm.$t('deleteFxRateDialog.title'),\"subtitle\":_vm.$t('deleteFxRateDialog.subtitle'),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-fx-rate-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deleteFxRate'),expression:\"'deleteFxRate'\"}],attrs:{\"value\":_vm.account,\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.$emit('http2xx', $event))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":_vm.url,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteFxRateButton.errorMessage\": \"There was an error encountered while deleting this fx rate. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteFxRateButton.vue?vue&type=template&id=61fb7188&\"\nimport script from \"./DeleteFxRateButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteFxRateButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteFxRateButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteFxRateDialog.title\": \"Delete FX Rate\",\r\n \"deleteFxRateDialog.subtitle\": \"Warning: This process is irreversible! Your FX Rate data will be deleted permanently and you will need to re-enter your rates if you want to see your data again. Changes will only take place on the next import.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteFxRateDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteFxRateDialog.vue?vue&type=template&id=584dbb2a&\"\nimport script from \"./DeleteFxRateDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteFxRateDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteFxRateDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from \"vue\";\r\n\r\nexport enum SimpleActionTypes {\r\n addNewTag = \"AddNewTagAction\",\r\n copyValue = \"CopyValue\",\r\n removeTag = \"RemoveTag\",\r\n markup = \"Markup\"\r\n}\r\n\r\nexport default defineComponent({\r\n props: { value: String, label: String },\r\n setup() {\r\n const actionTypes = ref(Object.values(SimpleActionTypes));\r\n return { actionTypes };\r\n },\r\n});\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FxRateMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FxRateMenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FxRateMenu.vue?vue&type=template&id=2b12ff72&\"\nimport script from \"./FxRateMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./FxRateMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from 'vue';\r\nimport CreateFxRateDialog from '@/components/Domain.FxRates/CreateFxRateDialog.vue';\r\nimport FxRateMenu from '@/components/Domain.FxRates/FxRateMenu.vue';\r\nimport CurrencyService from '@/lib/Currencies';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport moment from '@/lib/moment';\r\n\r\nexport default defineComponent({\r\n components: { CreateFxRateDialog, FxRateMenu },\r\n setup() {\r\n const tenantFxRates = ref([]);\r\n const fixedFxRates = ref([]);\r\n const priorMonths = ref(\r\n Array(12)\r\n .fill(null)\r\n .map((_, i) => moment().add(-1 * i, 'months'))\r\n .map((d) => ({ value: d.toDate(), text: d.format(\"MMM 'YY\") }))\r\n );\r\n const targetCurrencyCode = ref(null);\r\n const currencyCodes = ref([]);\r\n const selectedMonth = ref(priorMonths.value[0].value);\r\n const isAdding = ref(false);\r\n const getTenantCurrencies = async () => {\r\n tenantFxRates.value = await ApiV2.http.get('/api/fxrates/tenant').then((r) => r.data);\r\n };\r\n const getFixedCurrencies = async () => {\r\n const year = selectedMonth.value.getFullYear();\r\n const month = selectedMonth.value.getMonth() + 1;\r\n fixedFxRates.value = await ApiV2.http\r\n .get(`/api/fxrates/system/${year}/${month}`, {\r\n params: { targetCurrencyCode: targetCurrencyCode.value },\r\n })\r\n .then((r) => r.data);\r\n };\r\n const getKnownCurrencyCodes = async () => {\r\n currencyCodes.value = await CurrencyService.getAllCurrencyCodes();\r\n };\r\n getKnownCurrencyCodes();\r\n getTenantCurrencies();\r\n getFixedCurrencies();\r\n return {\r\n tenantFxRates,\r\n fixedFxRates,\r\n priorMonths,\r\n selectedMonth,\r\n currencyCodes,\r\n targetCurrencyCode,\r\n getTenantCurrencies,\r\n getFixedCurrencies,\r\n isAdding,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FxRatesView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FxRatesView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FxRatesView.vue?vue&type=template&id=2575bcf4&\"\nimport script from \"./FxRatesView.vue?vue&type=script&lang=ts&\"\nexport * from \"./FxRatesView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-alert',{attrs:{\"color\":\"info\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"info\")]),_vm._v(\" Mapping rules are a way of transforming records before they are ingested into your tenant. Each rule is applied to every record that enters this tenant, 1 by 1, from top to bottom. Rules are applied at import time, so you will only see your changes take effect during scheduled imports. \")],1),_c('v-expansion-panels',{model:{value:(_vm.panelsState),callback:function ($$v) {_vm.panelsState=$$v},expression:\"panelsState\"}},_vm._l((_vm.mappings),function(mapping,i){return _c('v-expansion-panel',{key:mapping.id},[_c('v-expansion-panel-header',{attrs:{\"hide-actions\":\"\"}},[_c('v-card',{staticClass:\"mb-0 pb-0\",attrs:{\"flat\":\"\"}},[_c('TagMappingHeaderToolbar',{attrs:{\"value\":mapping,\"title\":`Step ${i + 1} - ${mapping.ruleName}`,\"edit\":_vm.panelsState === i},on:{\"input\":function($event){mapping.ruleName = $event.ruleName}},scopedSlots:_vm._u([{key:\"prefix\",fn:function({}){return [_c('v-switch',{staticClass:\"mt-6\",on:{\"input\":function($event){return _vm.handleMappingActiveChange(mapping, $event)}},model:{value:(mapping.isActive),callback:function ($$v) {_vm.$set(mapping, \"isActive\", $$v)},expression:\"mapping.isActive\"}})]}},{key:\"default\",fn:function({}){return [_c('v-btn',{attrs:{\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.isSubmitting || i === 0},on:{\"click\":function($event){$event.stopPropagation();return _vm.moveMappingUpwards(i)}}},[_c('v-icon',[_vm._v(\"arrow_upward\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.isSubmitting || i === _vm.mappings.length - 1},on:{\"click\":function($event){$event.stopPropagation();return _vm.moveMappingDownwards(i)}}},[_c('v-icon',[_vm._v(\"arrow_downward\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.isSubmitting},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteMapping(i)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)]}}],null,true)})],1)],1),_c('v-expansion-panel-content',{staticStyle:{\"position\":\"relative\"}},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('TagMappingFormCardContent',{attrs:{\"init\":mapping},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, form }){return [_c('v-btn',{attrs:{\"color\":\"secondary\",\"block\":\"\",\"disabled\":!isValid || _vm.isSubmitting,\"loading\":_vm.isSubmitting},on:{\"click\":function($event){return _vm.updatedTargetMapping(form)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Submit \")],1)]}}],null,true),model:{value:(_vm.mappingValidity[mapping.id]),callback:function ($$v) {_vm.$set(_vm.mappingValidity, mapping.id, $$v)},expression:\"mappingValidity[mapping.id]\"}})],1)],1)],1)}),1),_c('v-layout',{attrs:{\"justify-center\":\"\",\"align-center\":\"\"}},[_c('v-btn',{staticClass:\"mt-3\",attrs:{\"color\":\"secondary\",\"loading\":_vm.isSubmitting,\"disabled\":_vm.isSubmitting},on:{\"click\":function($event){return _vm.startCreateNewMapping()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add new mapping here\")],1)],1),_c('form-dialog',{attrs:{\"fullscreen\":_vm.isCreatingFullscreen},model:{value:(_vm.isCreatingNewMapping),callback:function ($$v) {_vm.isCreatingNewMapping=$$v},expression:\"isCreatingNewMapping\"}},[_c('v-card',[_c('TagMappingHeaderToolbar',{attrs:{\"value\":{ ..._vm.newMapping, ruleName: _vm.newMappingName },\"edit\":\"\"},on:{\"input\":function($event){_vm.newMappingName = $event.ruleName}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.isCreatingFullscreen = !_vm.isCreatingFullscreen}}},[_c('v-icon',[_vm._v(_vm._s(_vm.isCreatingFullscreen ? 'fullscreen_exit' : 'fullscreen'))])],1)]},proxy:true}])}),_c('TagMappingFormCardContent',{attrs:{\"init\":_vm.newMapping},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, form }){return [_c('back-button',{on:{\"click\":function($event){_vm.isCreatingNewMapping = false}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"disabled\":!isValid || _vm.isSubmitting,\"loading\":_vm.isSubmitting},on:{\"click\":function($event){return _vm.createPlaceholderMapping(form)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\" Submit \")],1)]}}]),model:{value:(_vm.isNewMappingValid),callback:function ($$v) {_vm.isNewMappingValid=$$v},expression:\"isNewMappingValid\"}})],1)],1),_c('v-dialog',{attrs:{\"scrim\":false,\"persistent\":\"\",\"width\":\"auto\"},model:{value:(_vm.errorOccurred),callback:function ($$v) {_vm.errorOccurred=$$v},expression:\"errorOccurred\"}},[_c('v-card',[_c('v-card-title',[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"error\")]),_vm._v(\" An error occurred\")],1),_c('v-card-text',[_vm._v(\" Unfortunately the last change you made has been lost. Please contact support for help.\")]),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"to\":\"/settings\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" Back \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"loading\":_vm.isLoading,\"disabled\":_vm.isLoading},on:{\"click\":_vm.resolveError}},[_vm._v(\"Reload\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-card-text',{staticClass:\"mt-0 pt-0\"},[_c('v-form',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-divider',{staticClass:\"mt-2\"}),_c('v-subheader',{staticClass:\"mt-3 ml-0 pl-0\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"checklist\")]),_vm._v(\" Conditions\")],1),_c('v-row',[_vm._l((_vm.conditions),function(condition,i){return _c('fragment',{key:i},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('TagMappingConditionTypeSelect',{attrs:{\"label\":i === 0 ? 'IF' : 'AND'},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.conditions.length <= 1},on:{\"click\":function($event){return _vm.deleteCondition(i)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)]},proxy:true}],null,true),model:{value:(condition.type),callback:function ($$v) {_vm.$set(condition, \"type\", $$v)},expression:\"condition.type\"}})],1),(\n !condition.type.startsWith('Subscription_') &&\n !condition.type.startsWith('CloudAccount_')\n )?_c('v-col',{attrs:{\"cols\":3}},[_c('TagMappingConditionLeftInput',{attrs:{\"type\":condition.type},model:{value:(condition.condition),callback:function ($$v) {_vm.$set(condition, \"condition\", $$v)},expression:\"condition.condition\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":condition.type.startsWith('Subscription_') || condition.type.startsWith('CloudAccount_')\n ? 6\n : 3}},[_c('TagMappingConditionRightInput',{attrs:{\"type\":condition.type},model:{value:(condition.test),callback:function ($$v) {_vm.$set(condition, \"test\", $$v)},expression:\"condition.test\"}})],1)],1)}),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.appendCondition()}}},[_vm._v(\"Add a new condition...\")])])],2),_c('v-divider',{staticClass:\"mt-2\"}),_c('v-subheader',{staticClass:\"mt-2 ml-0 pl-0\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"code\")]),_vm._v(\" Actions\")],1),_c('v-row',[_vm._l((_vm.actions),function(action,i){return _c('fragment',{key:i},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('TagMappingActionTypeSelect',{attrs:{\"label\":i === 0 ? 'THEN' : 'AND'},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.actions.length <= 1},on:{\"click\":function($event){return _vm.deleteAction(i)}}},[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":i === 0},on:{\"click\":function($event){return _vm.moveActionUpwards(i)}}},[_c('v-icon',[_vm._v(\"arrow_upward\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":i === _vm.actions.length - 1},on:{\"click\":function($event){return _vm.moveActionDownwards(i)}}},[_c('v-icon',[_vm._v(\"arrow_downward\")])],1)]},proxy:true}],null,true),model:{value:(action.type),callback:function ($$v) {_vm.$set(action, \"type\", $$v)},expression:\"action.type\"}})],1),_c('v-col',{attrs:{\"cols\":action.type !== 'RemoveTag' && action.type !== 'Markup' ? 3 : 6}},[_c('TagMappingActionLeftInput',{attrs:{\"type\":action.type},model:{value:(action.left),callback:function ($$v) {_vm.$set(action, \"left\", $$v)},expression:\"action.left\"}})],1),(action.type !== 'RemoveTag' && action.type !== 'Markup')?_c('v-col',{attrs:{\"cols\":\"3\"}},[_c('TagMappingActionRightInput',{attrs:{\"type\":action.type},model:{value:(action.right),callback:function ($$v) {_vm.$set(action, \"right\", $$v)},expression:\"action.right\"}})],1):_vm._e()],1)}),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.appendAction()}}},[_vm._v(\"Add a new action...\")])]),_c('v-col',[_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-checkbox',_vm._g(_vm._b({attrs:{\"label\":\"Stop applying other mapping rules if conditions met\"},model:{value:(_vm.isExitCondition),callback:function ($$v) {_vm.isExitCondition=$$v},expression:\"isExitCondition\"}},'v-checkbox',attrs,false),on))]}}])},[_c('span',[_vm._v(\"When set to true all other mappings from here on will be ignored if the configured condition passes.\")])])],1)],2)],1)],1),_c('v-card-actions',[_vm._t(\"default\",null,{\"isValid\":_vm.value && _vm.conditions.length && _vm.actions.length,\"form\":_vm.form})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"label\":_vm.label,\"value\":_vm.value,\"items\":_vm.actionTypes,\"hide-details\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`tagMappingActionTypeSelect.${item}.title`))+\" \")]}},{key:\"item\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`tagMappingActionTypeSelect.${item}.title`))+\" \")]}},{key:\"prepend\",fn:function(){return [_vm._t(\"prepend\")]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionTypeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionTypeSelect.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingActionTypeSelect.vue?vue&type=template&id=21852100&\"\nimport script from \"./TagMappingActionTypeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingActionTypeSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingActionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from \"vue\";\r\n\r\nexport enum SimpleConditionTypes {\r\n sourceRowField_insensitive = \"SourceRowField_Insensitive\",\r\n sourceRowField_sensitive = \"SourceRowField_Sensitive\",\r\n\r\n sourceTagKeyValue_insensitive = \"SourceTagKeyValue_Insensitive\",\r\n sourceTagKeyValue_sensitive = \"SourceTagKeyValue_Sensitive\",\r\n\r\n subscription_insensitive = \"Subscription_Insensitive\",\r\n subscription_sensitive = \"Subscription_Sensitive\",\r\n\r\n cloudAccount_Insensitive = \"CloudAccount_Insensitive\",\r\n cloudAccount_Sensitive = \"CloudAccount_Sensitive\"\r\n}\r\n\r\nexport default defineComponent({\r\n props: { label: String, value: String },\r\n setup() {\r\n const conditionTypes = ref(Object.values(SimpleConditionTypes));\r\n return { conditionTypes };\r\n },\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"label\":_vm.label,\"value\":_vm.value,\"items\":_vm.conditionTypes,\"hide-details\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`tagMappingConditionTypeSelect.${item}.title`))+\" \")]}},{key:\"item\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`tagMappingConditionTypeSelect.${item}.title`))+\" \")]}},{key:\"prepend\",fn:function(){return [_vm._t(\"prepend\")]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionTypeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionTypeSelect.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingConditionTypeSelect.vue?vue&type=template&id=81ffea76&\"\nimport script from \"./TagMappingConditionTypeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingConditionTypeSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingConditionTypeSelect.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.isFieldType)?_c('v-text-field',{attrs:{\"hide-details\":\"\",\"value\":_vm.value,\"label\":_vm.$t(`tagMappingFormCardContent.${_vm.type}.condition`),\"rules\":[_vm.$rules.required()]},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_c('UsageFieldSelect',{attrs:{\"value\":_vm.value,\"label\":_vm.$t(`tagMappingFormCardContent.${_vm.type}.condition`),\"items\":_vm.supportedTypes,\"hide-details\":\"\",\"rules\":[_vm.$rules.required()]},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"value\":_vm.value,\"items\":_vm.items || _vm.fieldTypes,\"label\":_vm.label,\"hide-details\":_vm.hideDetails},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`usageFieldSelect.${item}.title`))+\" \")]}},{key:\"item\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.$t(`usageFieldSelect.${item}.title`))+\" \")]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport { RawUsageFields } from \"@/models\";\r\n\r\nconst KNOWN_FIELD_TYPES = Object.values(RawUsageFields);\r\n\r\nexport default defineComponent({\r\n props: { value: String, label: String, hideDetails: Boolean, items: Array },\r\n setup() {\r\n const fieldTypes = ref(KNOWN_FIELD_TYPES);\r\n return { fieldTypes };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFieldSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFieldSelect.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFieldSelect.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFieldSelect.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./UsageFieldSelect.vue?vue&type=template&id=3217edb8&\"\nimport script from \"./UsageFieldSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./UsageFieldSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./UsageFieldSelect.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, computed, ref } from \"vue\";\r\nimport UsageFieldSelect from \"../Domain.Usage/UsageFieldSelect.vue\";\r\nimport { SimpleConditionTypes } from \"./TagMappingConditionTypeSelect.vue\";\r\nimport { RawUsageFields } from \"@/models\";\r\n\r\nexport default defineComponent({\r\n props: { value: String, type: String },\r\n components: { UsageFieldSelect },\r\n setup(p) {\r\n const isFieldType = computed(() => {\r\n return (\r\n p.type === SimpleConditionTypes.sourceRowField_insensitive ||\r\n p.type === SimpleConditionTypes.sourceRowField_sensitive\r\n );\r\n });\r\n const supportedTypes = ref([\r\n RawUsageFields.serviceName,\r\n RawUsageFields.serviceId,\r\n RawUsageFields.resourceName,\r\n RawUsageFields.meterName,\r\n RawUsageFields.meterId,\r\n RawUsageFields.productName,\r\n RawUsageFields.regionName,\r\n RawUsageFields.unit,\r\n RawUsageFields.altServiceName,\r\n RawUsageFields.altServiceId,\r\n ]);\r\n return { isFieldType, supportedTypes };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionLeftInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionLeftInput.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingConditionLeftInput.vue?vue&type=template&id=76ab1f5a&\"\nimport script from \"./TagMappingConditionLeftInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingConditionLeftInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingConditionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ModalListInput',{attrs:{\"value\":_vm.value,\"label\":_vm.$t('tagMappingConditionRightInput.conditionMatches'),\"inner-label\":_vm.$t('tagMappingConditionRightInput.conditionMatch'),\"title\":_vm.$t('tagMappingConditionRightInput.conditionMatches'),\"subtitle\":_vm.$t('tagMappingConditionRightInput.matchesDescription'),\"rules\":[_vm.$rules.required()],\"inner-rules\":[_vm.$rules.required()],\"min\":1},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from \"vue\";\r\nimport ModalListInput from \"@/components/Common/ModalListInput.vue\";\r\n\r\nexport default defineComponent({\r\n props: { value: Array, type: String },\r\n components: { ModalListInput },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionRightInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionRightInput.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingConditionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingConditionRightInput.vue?vue&type=template&id=2ea45d28&\"\nimport script from \"./TagMappingConditionRightInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingConditionRightInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingConditionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":_vm.$t(`tagMappingActionLeftInput.${_vm.type}.left`),\"value\":_vm.value,\"rules\":[_vm.$rules.required()]},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n props: { type: String, value: String },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionLeftInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionLeftInput.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingActionLeftInput.vue?vue&type=template&id=a4164514&\"\nimport script from \"./TagMappingActionLeftInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingActionLeftInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingActionLeftInput.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":_vm.$t(`tagMappingActionRightInput.${_vm.type}.right`),\"value\":_vm.value,\"rules\":[_vm.$rules.required()]},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from \"vue\";\r\n\r\nexport default defineComponent({\r\n props: { value: String, type: String },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionRightInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionRightInput.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingActionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingActionRightInput.vue?vue&type=template&id=596533d0&\"\nimport script from \"./TagMappingActionRightInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingActionRightInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingActionRightInput.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, watch, ref, computed } from 'vue';\r\nimport { IConditionalActionRuleResult } from '@/models';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { storeToRefs } from 'pinia';\r\nimport TagMappingActionTypeSelect, { SimpleActionTypes } from './TagMappingActionTypeSelect.vue';\r\nimport TagMappingConditionTypeSelect, { SimpleConditionTypes } from './TagMappingConditionTypeSelect.vue';\r\n\r\nimport TagMappingConditionLeftInput from './TagMappingConditionLeftInput.vue';\r\nimport TagMappingConditionRightInput from './TagMappingConditionRightInput.vue';\r\nimport TagMappingActionLeftInput from './TagMappingActionLeftInput.vue';\r\nimport TagMappingActionRightInput from './TagMappingActionRightInput.vue';\r\n\r\ninterface ISimpleConditionViewModel {\r\n type: SimpleConditionTypes;\r\n condition: string;\r\n test: string[];\r\n}\r\n\r\ninterface ISimpleActionViewModel {\r\n type: SimpleActionTypes;\r\n left: string;\r\n right: string;\r\n}\r\n\r\nexport default defineComponent({\r\n props: { value: Boolean, init: Object },\r\n components: {\r\n TagMappingActionTypeSelect,\r\n TagMappingConditionTypeSelect,\r\n TagMappingConditionLeftInput,\r\n TagMappingConditionRightInput,\r\n TagMappingActionLeftInput,\r\n TagMappingActionRightInput,\r\n },\r\n setup(p) {\r\n const actions = ref([]);\r\n const conditions = ref([]);\r\n const isExitCondition = ref(false);\r\n const actionTypes = ref(Object.values(SimpleActionTypes));\r\n const conditionTypes = ref(Object.values(SimpleConditionTypes));\r\n const { tenantId } = storeToRefs(useTenantStore());\r\n\r\n watch(\r\n () => p.init,\r\n (v: IConditionalActionRuleResult | null) => {\r\n const newActions: (ISimpleActionViewModel & { runOrder: number })[] = [];\r\n v.applyMarkupActions?.forEach((a) => {\r\n newActions.push({\r\n type: SimpleActionTypes.markup,\r\n left: a.markup.toString(),\r\n right: '',\r\n runOrder: a.runOrder\r\n });\r\n });\r\n v.addNewTagActions?.forEach((a) => {\r\n newActions.push({\r\n type: SimpleActionTypes.addNewTag,\r\n left: a.newTagKey,\r\n right: a.newTagValue,\r\n runOrder: a.runOrder,\r\n });\r\n });\r\n v.removeTagActions?.forEach((a) => {\r\n newActions.push({\r\n type: SimpleActionTypes.removeTag,\r\n left: a.tagKey,\r\n right: '',\r\n runOrder: a.runOrder,\r\n });\r\n });\r\n v.copyValueToNewTagActions?.forEach((a) => {\r\n newActions.push({\r\n type: SimpleActionTypes.copyValue,\r\n left: a.existingTagKeyToCopy,\r\n right: a.newTagKey,\r\n runOrder: a.runOrder,\r\n });\r\n });\r\n actions.value = newActions.sort((a, b) => a.runOrder - b.runOrder);\r\n const newConditions: ISimpleConditionViewModel[] = [];\r\n v.subscriptionConditions?.forEach((c) => {\r\n newConditions.push({\r\n type: c.matchCase\r\n ? SimpleConditionTypes.subscription_sensitive\r\n : SimpleConditionTypes.subscription_insensitive,\r\n condition: '',\r\n test: c.matchSubscriptionNames,\r\n });\r\n });\r\n v.cloudAccountConditions?.forEach((c) => {\r\n newConditions.push({\r\n type: c.matchCase\r\n ? SimpleConditionTypes.cloudAccount_Sensitive\r\n : SimpleConditionTypes.cloudAccount_Insensitive,\r\n condition: '',\r\n test: c.matchCloudAccountNames\r\n })\r\n });\r\n v.sourceRowFieldConditions?.forEach((c) => {\r\n newConditions.push({\r\n type: c.matchCase\r\n ? SimpleConditionTypes.sourceRowField_sensitive\r\n : SimpleConditionTypes.sourceRowField_insensitive,\r\n condition: c.sourceRowFieldName,\r\n test: c.matchValues,\r\n });\r\n });\r\n v.sourceTagKeyValueConditions?.forEach((c) => {\r\n newConditions.push({\r\n type: c.matchCase\r\n ? SimpleConditionTypes.sourceTagKeyValue_sensitive\r\n : SimpleConditionTypes.sourceTagKeyValue_insensitive,\r\n condition: c.sourceTagKeyName,\r\n test: c.matchValues,\r\n });\r\n });\r\n conditions.value = newConditions;\r\n isExitCondition.value = v.stopProcessingMoreRules;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n const appendCondition = () => {\r\n conditions.value.push({\r\n condition: '',\r\n test: [],\r\n type: SimpleConditionTypes.sourceRowField_insensitive,\r\n });\r\n };\r\n\r\n const deleteCondition = (i: number) => {\r\n if (i > -1) {\r\n conditions.value.splice(i, 1);\r\n conditions.value = [...conditions.value];\r\n }\r\n };\r\n\r\n const appendAction = () => {\r\n actions.value.push({\r\n left: '',\r\n right: '',\r\n type: SimpleActionTypes.addNewTag,\r\n });\r\n };\r\n\r\n const deleteAction = (i: number) => {\r\n if (i > -1) {\r\n actions.value.splice(i, 1);\r\n actions.value = [...actions.value];\r\n }\r\n };\r\n\r\n const moveActionUpwards = (index: number) => {\r\n if (index > 0) {\r\n const target = actions.value[index];\r\n const sibling = actions.value[index - 1];\r\n actions.value[index] = sibling;\r\n actions.value[index - 1] = target;\r\n actions.value = [...actions.value];\r\n }\r\n };\r\n\r\n const moveActionDownwards = async (index: number) => {\r\n if (index < actions.value.length - 1) {\r\n const target = actions.value[index];\r\n const sibling = actions.value[index + 1];\r\n actions.value[index] = sibling;\r\n actions.value[index + 1] = target;\r\n actions.value = [...actions.value];\r\n }\r\n };\r\n\r\n const form = computed(() => {\r\n const data: IConditionalActionRuleResult = {\r\n id: p.init?.id,\r\n isActive: p.init?.isActive || true,\r\n ruleDescription: p.init?.ruleDescription,\r\n ruleName: p.init?.ruleName,\r\n ruleOrder: p.init?.ruleOrder,\r\n tenantId: tenantId.value,\r\n stopProcessingMoreRules: isExitCondition.value,\r\n addNewTagActions: [],\r\n copyValueToNewTagActions: [],\r\n removeTagActions: [],\r\n sourceRowFieldConditions: [],\r\n sourceTagKeyValueConditions: [],\r\n subscriptionConditions: [],\r\n applyMarkupActions: [],\r\n cloudAccountConditions: [],\r\n };\r\n actions.value.forEach((a, i) => {\r\n if (a.type === SimpleActionTypes.addNewTag) {\r\n data.addNewTagActions.push({\r\n newTagKey: a.left,\r\n newTagValue: a.right,\r\n runOrder: i,\r\n });\r\n } else if (a.type === SimpleActionTypes.copyValue) {\r\n data.copyValueToNewTagActions.push({\r\n existingTagKeyToCopy: a.left,\r\n newTagKey: a.right,\r\n runOrder: i,\r\n });\r\n } else if (a.type === SimpleActionTypes.removeTag) {\r\n data.removeTagActions.push({\r\n tagKey: a.left,\r\n runOrder: i,\r\n });\r\n } else if (a.type === SimpleActionTypes.markup) {\r\n data.applyMarkupActions.push({\r\n markup: Number(a.left),\r\n runOrder: i,\r\n });\r\n }\r\n });\r\n conditions.value.forEach((c) => {\r\n if (\r\n c.type === SimpleConditionTypes.sourceRowField_insensitive ||\r\n c.type === SimpleConditionTypes.sourceRowField_sensitive\r\n ) {\r\n data.sourceRowFieldConditions.push({\r\n matchCase: c.type === SimpleConditionTypes.sourceRowField_sensitive,\r\n matchValues: c.test,\r\n sourceRowFieldName: c.condition,\r\n });\r\n } else if (\r\n c.type === SimpleConditionTypes.sourceTagKeyValue_insensitive ||\r\n c.type === SimpleConditionTypes.sourceTagKeyValue_sensitive\r\n ) {\r\n data.sourceTagKeyValueConditions.push({\r\n matchCase: c.type === SimpleConditionTypes.sourceTagKeyValue_sensitive,\r\n matchValues: c.test,\r\n sourceTagKeyName: c.condition,\r\n });\r\n } else if (\r\n c.type === SimpleConditionTypes.subscription_insensitive ||\r\n c.type === SimpleConditionTypes.subscription_sensitive\r\n ) {\r\n data.subscriptionConditions.push({\r\n matchCase: c.type === SimpleConditionTypes.subscription_sensitive,\r\n matchSubscriptionNames: c.test,\r\n });\r\n } else if (\r\n c.type === SimpleConditionTypes.cloudAccount_Insensitive ||\r\n c.type === SimpleConditionTypes.cloudAccount_Sensitive\r\n ) {\r\n data.cloudAccountConditions.push({\r\n matchCase: c.type === SimpleConditionTypes.cloudAccount_Sensitive,\r\n matchCloudAccountNames: c.test,\r\n });\r\n }\r\n });\r\n return data;\r\n });\r\n\r\n return {\r\n actions,\r\n conditions,\r\n isExitCondition,\r\n actionTypes,\r\n conditionTypes,\r\n form,\r\n appendCondition,\r\n deleteCondition,\r\n appendAction,\r\n deleteAction,\r\n moveActionUpwards,\r\n moveActionDownwards,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingFormCardContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingFormCardContent.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingFormCardContent.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingFormCardContent.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagMappingFormCardContent.vue?vue&type=template&id=72c4574a&\"\nimport script from \"./TagMappingFormCardContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingFormCardContent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagMappingFormCardContent.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"},scopedSlots:_vm._u([(!_vm.edit)?{key:\"extension\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.mapping.ruleDescription)+\" \")]},proxy:true}:null],null,true)},[_vm._t(\"prefix\"),(!_vm.edit)?_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.title || _vm.mapping.ruleName))]):_c('v-text-field',{staticClass:\"v-toolbar__title\",attrs:{\"label\":\"Rule Name\",\"prepend-inner-icon\":\"edit\",\"value\":_vm.mapping.ruleName,\"autofocus\":\"\",\"hide-details\":\"\"},on:{\"click\":function($event){$event.stopPropagation();},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();},\"input\":function($event){return _vm.$emit('input', { ..._vm.mapping, ruleName: $event })}}}),_c('v-spacer'),_vm._t(\"default\",null,{\"value\":_vm.value})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, computed } from \"vue\";\r\nimport { IConditionalActionRuleResult } from \"@/models\";\r\n\r\nexport default defineComponent({\r\n props: { value: Object, edit: Boolean, title: String },\r\n setup(p) {\r\n const mapping = computed(() => p.value as IConditionalActionRuleResult | null);\r\n return { mapping };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingHeaderToolbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappingHeaderToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagMappingHeaderToolbar.vue?vue&type=template&id=ef9b7d8a&\"\nimport script from \"./TagMappingHeaderToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappingHeaderToolbar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { getAllTagMappings, createTagMapping, deleteTagMapping, updateTagMapping, reorderTagMappings } from '@/lib/Api';\r\nimport * as M from '@/models';\r\nimport TagMappingFormCardContent from '@/components/Domain.Tags/TagMappingFormCardContent.vue';\r\nimport TagMappingHeaderToolbar from '@/components/Domain.Tags/TagMappingHeaderToolbar.vue';\r\nimport { toastError, toastSuccess } from '@/components/Common/Toast.vue';\r\n\r\nexport default defineComponent({\r\n components: { TagMappingFormCardContent, TagMappingHeaderToolbar },\r\n setup() {\r\n const panelsState = ref(null);\r\n const mappings = ref([]);\r\n const mappingValidity = ref<{ [id: string]: boolean }>({});\r\n const isSubmitting = ref(false);\r\n const isLoading = ref(true);\r\n const isCreatingNewMapping = ref(false);\r\n const isCreatingFullscreen = ref(false);\r\n const newMapping = ref(null);\r\n const newMappingName = ref('New Rule');\r\n const isNewMappingValid = ref(false);\r\n const errorOccurred = ref(false);\r\n getAllTagMappings().then((r) => {\r\n try {\r\n mappings.value = r;\r\n isLoading.value = false;\r\n } catch (err) {\r\n toastError('There was an error loading your mappings');\r\n }\r\n });\r\n const resolveError = async () => {\r\n try {\r\n isLoading.value = true;\r\n mappings.value = await getAllTagMappings();\r\n errorOccurred.value = false;\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n const startCreateNewMapping = () => {\r\n isCreatingNewMapping.value = true;\r\n newMappingName.value = 'New Rule';\r\n newMapping.value = {\r\n id: -1 * Math.ceil(Math.random() * 1000),\r\n isActive: true,\r\n ruleName: newMappingName.value,\r\n ruleDescription: 'Empty',\r\n ruleOrder: mappings.value.length + 1,\r\n stopProcessingMoreRules: false,\r\n tenantId: null,\r\n sourceTagKeyValueConditions: [{ sourceTagKeyName: '', matchCase: false, matchValues: [] }],\r\n addNewTagActions: [{ newTagKey: '', newTagValue: '', runOrder: 0 }],\r\n };\r\n };\r\n const createPlaceholderMapping = async (mapping: M.IConditionalActionRuleResult) => {\r\n try {\r\n isSubmitting.value = true;\r\n const newResult = await createTagMapping({\r\n ...mapping,\r\n ruleName: newMappingName.value,\r\n });\r\n mappings.value = [...mappings.value, newResult];\r\n } catch {\r\n errorOccurred.value = true;\r\n } finally {\r\n isCreatingNewMapping.value = false;\r\n isSubmitting.value = false;\r\n }\r\n };\r\n const updatedTargetMapping = async (mapping: M.IConditionalActionRuleResult) => {\r\n try {\r\n isSubmitting.value = true;\r\n await updateTagMapping(mapping.id, mapping);\r\n toastSuccess('Mapping successfully updated');\r\n } catch {\r\n errorOccurred.value = true;\r\n } finally {\r\n isSubmitting.value = false;\r\n }\r\n };\r\n const moveMappingUpwards = async (index: number) => {\r\n if (index > 0) {\r\n try {\r\n isSubmitting.value = true;\r\n const target = mappings.value[index];\r\n const sibling = mappings.value[index - 1];\r\n mappings.value[index] = sibling;\r\n sibling.ruleOrder = index;\r\n mappings.value[index - 1] = target;\r\n target.ruleOrder = index - 1;\r\n mappings.value = [...mappings.value];\r\n await reorderTagMappings(mappings.value);\r\n } catch {\r\n errorOccurred.value = true;\r\n } finally {\r\n isSubmitting.value = false;\r\n }\r\n }\r\n };\r\n const moveMappingDownwards = async (index: number) => {\r\n if (index < mappings.value.length - 1) {\r\n try {\r\n isSubmitting.value = true;\r\n const target = mappings.value[index];\r\n const sibling = mappings.value[index + 1];\r\n mappings.value[index] = sibling;\r\n sibling.ruleOrder = index;\r\n mappings.value[index + 1] = target;\r\n target.ruleOrder = index + 1;\r\n mappings.value = [...mappings.value];\r\n await reorderTagMappings(mappings.value);\r\n } catch {\r\n errorOccurred.value = true;\r\n } finally {\r\n isSubmitting.value = false;\r\n }\r\n }\r\n };\r\n const deleteMapping = async (index: number) => {\r\n if (index > -1) {\r\n try {\r\n isSubmitting.value = true;\r\n const [deletedTag] = mappings.value.splice(index, 1);\r\n mappings.value = [...mappings.value];\r\n if (deletedTag) {\r\n await deleteTagMapping(deletedTag.id);\r\n toastSuccess('Mapping successfully deleted');\r\n }\r\n } catch {\r\n errorOccurred.value = true;\r\n } finally {\r\n isSubmitting.value = false;\r\n }\r\n }\r\n };\r\n const handleMappingActiveChange = async (mapping: M.IConditionalActionRuleResult, isActive: boolean) => {\r\n try {\r\n mapping.isActive = isActive;\r\n await updateTagMapping(mapping.id, mapping);\r\n toastSuccess(`Mapping ${mapping.ruleName} is ${isActive ? 'active' : 'inactive'}`);\r\n } catch {\r\n mapping.isActive = !isActive;\r\n toastError('Error toggling active state of mapping');\r\n }\r\n };\r\n return {\r\n panelsState,\r\n mappings,\r\n isCreatingNewMapping,\r\n createPlaceholderMapping,\r\n startCreateNewMapping,\r\n mappingValidity,\r\n newMappingName,\r\n moveMappingUpwards,\r\n moveMappingDownwards,\r\n deleteMapping,\r\n updatedTargetMapping,\r\n newMapping,\r\n isSubmitting,\r\n isNewMappingValid,\r\n errorOccurred,\r\n resolveError,\r\n handleMappingActiveChange,\r\n isLoading,\r\n isCreatingFullscreen,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagMappings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagMappings.vue?vue&type=template&id=22f89733&\"\nimport script from \"./TagMappings.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagMappings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('content-card',{attrs:{\"title-icon\":\"mail\",\"title\":\"Mailing Lists\"},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [(_vm.loading)?_c('v-progress-circular',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"indeterminate\":\"\"}}):_vm._e(),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.startCreateList()}}},[_c('v-icon',{attrs:{\"start\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Create Mailing List \")],1)]},proxy:true}])},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Mailing List Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Emails\")])])]),_c('tbody',[(!_vm.mailingLists.length)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"2\"}},[_vm._v(\"There are no mailing lists yet.\")])]):_vm._e(),_vm._l((_vm.mailingLists),function(ml,i){return _c('tr',{key:i},[_c('td',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(ml.name)+\" \"),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.startEditingList(ml)}}},[_c('v-icon',[_vm._v(\"edit\")])],1)],1),_c('td',{staticClass:\"text-left\"},[_c('ModalListInput',{attrs:{\"value\":ml.emails,\"inner-label\":\"Email\",\"title\":`${ml.name} Emails`,\"subtitle\":\"The emails that will be delivered to when a report leverages this mailing list.\"},on:{\"input\":function($event){return _vm.updateMailingListEmails(ml, $event)}}})],1)])})],2)]),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('update-entity-name-card',{attrs:{\"value\":_vm.targetMailingList,\"loading\":_vm.$wait.is('updatingSubscriptionName')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!isValid || loading,\"loading\":loading,\"form\":formId},on:{\"click\":function($event){$event.preventDefault();close().then(() => _vm.submitNameForm(form))}}},[_vm._t(\"default\",function(){return [_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit\")]})],2)]}}],null,true)})]}}]),model:{value:(_vm.isCreatingOrEditing),callback:function ($$v) {_vm.isCreatingOrEditing=$$v},expression:\"isCreatingOrEditing\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { getMailingLists, createMailingList, putMailingList } from '@/lib/Api';\r\nimport ModalListInput from '@/components/Common/ModalListInput.vue';\r\nimport UpdateEntityNameCard from '@/components/Common/UpdateEntityNameCard.vue';\r\n\r\ninterface IMailingListViewModel {\r\n id: number;\r\n name: string;\r\n emails: string[];\r\n}\r\n\r\nexport default defineComponent({\r\n components: { ModalListInput, UpdateEntityNameCard },\r\n setup() {\r\n const mailingLists = ref([]);\r\n const isCreatingOrEditing = ref(false);\r\n const targetMailingList = ref>({});\r\n const loading = ref(false);\r\n const getPageData = async () => {\r\n try {\r\n loading.value = true;\r\n mailingLists.value = await getMailingLists();\r\n } finally {\r\n loading.value = false;\r\n }\r\n };\r\n getPageData();\r\n const submitNameForm = async (data: { Name: string }) => {\r\n try {\r\n loading.value = true;\r\n if (targetMailingList.value.id) {\r\n await putMailingList({\r\n id: targetMailingList.value.id,\r\n name: data.Name,\r\n emails: targetMailingList.value.emails || [],\r\n });\r\n } else {\r\n await createMailingList({\r\n id: -1,\r\n name: data.Name,\r\n emails: [],\r\n });\r\n }\r\n } finally {\r\n loading.value = false;\r\n }\r\n await getPageData();\r\n };\r\n const updateMailingListEmails = async (ml: IMailingListViewModel, emails: string[]) => {\r\n try {\r\n loading.value = true;\r\n ml.emails = emails;\r\n await putMailingList(ml);\r\n } finally {\r\n loading.value = false;\r\n }\r\n await getPageData();\r\n };\r\n const startCreateList = () => {\r\n targetMailingList.value = {};\r\n isCreatingOrEditing.value = true;\r\n };\r\n const startEditingList = (body: IMailingListViewModel) => {\r\n targetMailingList.value = body;\r\n isCreatingOrEditing.value = true;\r\n };\r\n return {\r\n mailingLists,\r\n getPageData,\r\n isCreatingOrEditing,\r\n targetMailingList,\r\n submitNameForm,\r\n startCreateList,\r\n startEditingList,\r\n loading,\r\n updateMailingListEmails,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MailingLists.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MailingLists.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MailingLists.vue?vue&type=template&id=293cd7b8&\"\nimport script from \"./MailingLists.vue?vue&type=script&lang=ts&\"\nexport * from \"./MailingLists.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('content-card',{attrs:{\"title-icon\":\"bolt\",\"title\":_vm.$t('views.webhooks.title')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('create-webhook-dialog',{on:{\"http2xx\":function($event){return _vm.getPageData()}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-3\",attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',{attrs:{\"start\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}}]),model:{value:(_vm.isAdding),callback:function ($$v) {_vm.isAdding=$$v},expression:\"isAdding\"}})]},proxy:true}])},[_c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.webhooks,\"item-key\":\"id\"},scopedSlots:_vm._u([{key:`item.Actions`,fn:function({ item }){return [(!item.IsMe)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',{attrs:{\"light\":\"\"}},[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditing(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1)],1)],1):_vm._e()]}},{key:`item.url`,fn:function({ item }){return [_c('div',{staticClass:\"truncate-text\"},[_vm._v(_vm._s(item.url))])]}},{key:`item.enabled`,fn:function({ item }){return [(item.enabled)?_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\"check_circle\")]):_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"cancel\")])]}}],null,true)}),_c('edit-webhook-dialog',{attrs:{\"webhook\":_vm.targetWebhook},on:{\"http2xx\":function($event){return _vm.getPageData()}},model:{value:(_vm.isEditing),callback:function ($$v) {_vm.isEditing=$$v},expression:\"isEditing\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('webhook-card-dialog',{attrs:{\"value\":_vm.value,\"webhook\":_vm.webhook,\"loading\":_vm.$wait.is('creatingWebhook')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, close }){return [_c('create-webhook-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingWebhook'),expression:\"'creatingWebhook'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCreation($event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('set-webhook-card',{attrs:{\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"init\":_vm.webhook},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, isValid, clear, formId }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_vm._t(\"actions\",null,{\"form\":form,\"formId\":formId,\"isValid\":isValid,\"clear\":clear,\"close\":close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":\"Webhook\",\"subtitle\":\"Webhooks allow the sending of alerts to an external system.\",\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.form,\"formId\":formId,\"isValid\":_vm.isValid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-text-field',{attrs:{\"autofocus\":\"\",\"rules\":[ _vm.$rules.required(), _vm.nameExistsRule ],\"required\":\"\",\"label\":\"Name\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-text-field',{attrs:{\"rules\":[ _vm.$rules.required() ],\"label\":\"Url\"},model:{value:(_vm.url),callback:function ($$v) {_vm.url=$$v},expression:\"url\"}}),_c('v-checkbox',{attrs:{\"label\":\"Enabled\"},model:{value:(_vm.enabled),callback:function ($$v) {_vm.enabled=$$v},expression:\"enabled\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { computed, ref, onMounted } from 'vue';\r\nimport { getAllTenantWebhookNames } from '@/lib/Api';\r\nimport { IWebhookGetPutModel } from '@/models';\r\nexport default {\r\n props: { loading: Boolean, init: Object },\r\n setup(props) {\r\n const id = ref(props.init?.id || -1);\r\n const name = ref(props.init?.name || '');\r\n const currentName = ref(name.value || '');\r\n const url = ref(props.init?.url || '');\r\n const enabled = ref(props.init?.enabled || true);\r\n const isValid = ref(false);\r\n\r\n const existingNames = ref([]);\r\n const nameExistsRule = (value: string) => {\r\n return currentName.value == name.value || !existingNames.value.includes(value)\r\n ? true\r\n : \"This name already exists.\";\r\n };\r\n\r\n onMounted(async () => {\r\n existingNames.value = await getAllTenantWebhookNames();\r\n });\r\n\r\n const form = computed(() => {\r\n return {\r\n id: id.value,\r\n name: name.value,\r\n url: url.value,\r\n enabled: enabled.value,\r\n lastcalled: '',\r\n } as IWebhookGetPutModel\r\n });\r\n\r\n return {\r\n id,\r\n name,\r\n url,\r\n enabled,\r\n isValid,\r\n form,\r\n existingNames,\r\n nameExistsRule\r\n };\r\n },\r\n watch: {\r\n 'init.id': function (newVal, oldVal) {\r\n this.id = newVal;\r\n },\r\n 'init.name': function (newVal, oldVal) {\r\n this.name = newVal;\r\n },\r\n 'init.url': function (newVal, oldVal) {\r\n this.url = newVal;\r\n },\r\n 'init.enabled': function (newVal, oldVal) {\r\n this.enabled = newVal;\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetWebhookCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetWebhookCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SetWebhookCard.vue?vue&type=template&id=5a2e5f04&\"\nimport script from \"./SetWebhookCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetWebhookCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SetWebhookCard.vue?vue&type=style&index=0&id=5a2e5f04&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport SetWebhookCard from '@/components/Domain.Webhooks/SetWebhookCard.vue';\r\nexport default {\r\n props: { value: Boolean, loading: Boolean, disabled: Boolean, webhook: Object },\r\n components: { SetWebhookCard: SetWebhookCard },\r\n methods: {\r\n open() {\r\n this.$emit('input', true);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhookCardDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhookCardDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebhookCardDialog.vue?vue&type=template&id=75da8e9e&\"\nimport script from \"./WebhookCardDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebhookCardDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/webhooks\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createWebhookButton.errorMessage\": \"There was an error encountered while creating this webhook. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateWebhookButton.vue?vue&type=template&id=c27d20f4&\"\nimport script from \"./CreateWebhookButton.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateWebhookButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport WebhookCardDialog from '@/components/Domain.Webhooks/WebhookCardDialog.vue';\r\nimport CreateWebhookButton from '@/components/Domain.Webhooks/CreateWebhookButton.vue';\r\nimport { toastSuccess } from '@/components/Common/Toast.vue';\r\nexport default {\r\n components: { WebhookCardDialog, CreateWebhookButton },\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n webhook: {\r\n type: Object,\r\n default: null,\r\n },\r\n },\r\n methods: {\r\n handleSuccessfulCreation(form) {\r\n toastSuccess(this.$t('createWebhookDialog.events.successfulCreation', { webhookName: form.name }));\r\n this.$emit('http2xx', form);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookDialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateWebhookDialog.vue?vue&type=template&id=c1cf0150&\"\nimport script from \"./CreateWebhookDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateWebhookDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('webhook-card-dialog',{attrs:{\"value\":_vm.value,\"webhook\":_vm.webhook,\"loading\":_vm.$wait.is('editingWebhook')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"actions\",fn:function({ form, formId, isValid, loading, close }){return [_c('edit-webhook-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('editingWebhook'),expression:\"'editingWebhook'\"}],attrs:{\"value\":{ ...form, id: _vm.webhook.id },\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCreation(form))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":`/api/webhooks/${(_vm.value || {}).id}`,\"value\":_vm.value,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"editWebhookButton.errorMessage\": \"There was an error encountered while editing this webhook. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EditWebhookButton.vue?vue&type=template&id=d9daddda&\"\nimport script from \"./EditWebhookButton.vue?vue&type=script&lang=js&\"\nexport * from \"./EditWebhookButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EditWebhookButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport WebhookCardDialog from '@/components/Domain.Webhooks/WebhookCardDialog.vue';\r\nimport EditWebhookButton from '@/components/Domain.Webhooks/EditWebhookButton.vue';\r\nimport { toastSuccess } from '@/components/Common/Toast.vue';\r\nexport default {\r\n components: { WebhookCardDialog, EditWebhookButton },\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n webhook: {\r\n type: Object,\r\n default: null,\r\n },\r\n },\r\n methods: {\r\n handleSuccessfulCreation(form) {\r\n toastSuccess(this.$t('editWebhookDialog.events.successfulUpdates', { webhookName: form.name }));\r\n this.$emit('http2xx', form);\r\n this.$emit('editComplete');\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookDialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EditWebhookDialog.vue?vue&type=template&id=3f1dce81&\"\nimport script from \"./EditWebhookDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditWebhookDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EditWebhookDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { getWebhooks, getWebhook } from '@/lib/Api';\r\nimport CreateWebhookDialog from '@/components/Domain.Webhooks/CreateWebhookDialog.vue';\r\nimport EditWebhookDialog from '@/components/Domain.Webhooks/EditWebhookDialog.vue';\r\n\r\ninterface IWebhookViewModel {\r\n id: number;\r\n name: string;\r\n url: string;\r\n lastcalled: string;\r\n enabled: boolean;\r\n}\r\n\r\nexport default defineComponent({\r\n computed: {\r\n headers() {\r\n return [\r\n {\r\n text: this.$t(\"name\"),\r\n value: \"name\",\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t(\"views.webhooks.url\"),\r\n value: \"url\",\r\n sortable: false,\r\n width: '650px'\r\n },\r\n {\r\n text: this.$t(\"views.webhooks.lastcalled\"),\r\n value: \"lastCalled\",\r\n sortable: false,\r\n },\r\n {\r\n text: this.$t(\"views.webhooks.enabled\"),\r\n value: \"enabled\",\r\n sortable: false,\r\n },\r\n {\r\n text: this.$t('actions'),\r\n value: \"Actions\",\r\n sortable: false\r\n }\r\n ];\r\n },\r\n },\r\n components: { CreateWebhookDialog, EditWebhookDialog },\r\n setup() {\r\n const webhooks = ref([]);\r\n const isEditing = ref(false);\r\n const isAdding = ref(false);\r\n const targetWebhook = ref>({});\r\n const loading = ref(false);\r\n const getPageData = async () => {\r\n try {\r\n loading.value = true;\r\n webhooks.value = await getWebhooks();\r\n } finally {\r\n loading.value = false;\r\n }\r\n };\r\n getPageData();\r\n const startEditing = async (body: IWebhookViewModel) => {\r\n targetWebhook.value = await getWebhook(body.id);\r\n isEditing.value = true;\r\n };\r\n return {\r\n webhooks,\r\n getPageData,\r\n isEditing,\r\n targetWebhook,\r\n startEditing,\r\n loading,\r\n isAdding,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhooksView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhooksView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhooksView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebhooksView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./WebhooksView.vue?vue&type=template&id=39c6caa2&\"\nimport script from \"./WebhooksView.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebhooksView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WebhooksView.vue?vue&type=style&index=0&id=39c6caa2&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./WebhooksView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('views.dimensions.title'),\"caption\":_vm.$t('views.dimensions.caption')}},[_c('EntitySearchAutocomplete',{attrs:{\"multiple\":true,\"types\":['TagKey'],\"label\":\"Search for tag key to promote...\"},scopedSlots:_vm._u([{key:\"append-outer\",fn:function(){return [_c('v-btn',{attrs:{\"disabled\":!_vm.newEntities.length},on:{\"click\":function($event){return _vm.tryPromoteTagKeys()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"publish\")]),_vm._v(\" Promote\")],1)]},proxy:true}]),model:{value:(_vm.newEntities),callback:function ($$v) {_vm.newEntities=$$v},expression:\"newEntities\"}}),_c('v-list',[(!_vm.configuredDimensions.length)?_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"info\")])],1),_c('v-list-item-title',[_vm._v(\" There are no configured dimensions yet. \")])],1):_vm._e(),_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Dimension #\")]),_c('th',[_vm._v(\"Source Tag\")]),_c('th',[_vm._v(\"Label\")]),_c('th')])]),_c('tbody',[(_vm.configuredDimensions.length === 0)?_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"},attrs:{\"colspan\":\"4\"}},[_vm._v(\"No dimensions.\")])]):_vm._e(),_vm._l((_vm.configuredDimensions),function(d,i){return _c('tr',{key:i},[(d)?_c('td',[_vm._v(\"#\"+_vm._s(i + 1))]):_vm._e(),(d)?_c('td',[_vm._v(_vm._s(d.tagKey))]):_vm._e(),(d)?_c('td',[_vm._v(_vm._s(d.label))]):_vm._e(),(d)?_c('td',{staticClass:\"text-right\"},[(d.pinned)?_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"red\"},on:{\"click\":function($event){return _vm.tryUnpin(d.tagKey)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"push_pin\")]),_vm._v(\" Unpin \")],1):_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.tryPin(d.tagKey)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"push_pin\")]),_vm._v(\" Pin \")],1),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"red\"},on:{\"click\":function($event){return _vm.tryDemote(d.tagKey)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"unpublished\")]),_vm._v(\" Demote \")],1)],1):_vm._e()])})],2)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, computed } from 'vue';\r\nimport EntitySearchAutocomplete, { ISearchEntityViewModel } from '@/components/Common/EntitySearchAutocomplete.vue';\r\nimport { useTenantStore, storeToRefs } from '@/stores';\r\nimport { disableDimension, enableDimension, pinDimension, unpinDimension } from '@/lib/Api';\r\n\r\nexport default defineComponent({\r\n components: { EntitySearchAutocomplete },\r\n setup() {\r\n const newEntities = ref([]);\r\n const tenantStore = useTenantStore();\r\n const { dimensions } = storeToRefs(tenantStore);\r\n\r\n const configuredDimensions = computed(() => {\r\n if (!dimensions.value) return [];\r\n return Object.values(dimensions.value);\r\n });\r\n const tryDemote = async (dim: string) => {\r\n if (window.confirm(`Are you sure you want to demote ${dim}`)) {\r\n await disableDimension(dim);\r\n await tenantStore.loadTenant();\r\n }\r\n };\r\n const tryUnpin = async (dim: string) => {\r\n if (window.confirm(`Are you sure you want to unpin ${dim}`)) {\r\n await unpinDimension(dim);\r\n await tenantStore.loadTenant();\r\n }\r\n };\r\n const tryPromoteTagKeys = async () => {\r\n for (const key of newEntities.value) {\r\n await enableDimension(key.Id);\r\n }\r\n newEntities.value = [];\r\n await tenantStore.loadTenant();\r\n };\r\n const tryPin = async (dim: string) => {\r\n await pinDimension(dim);\r\n await tenantStore.loadTenant();\r\n };\r\n return { newEntities, dimensions, configuredDimensions, tryDemote, tryPromoteTagKeys, tryUnpin, tryPin };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DimensionsView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DimensionsView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DimensionsView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DimensionsView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DimensionsView.vue?vue&type=template&id=b12faa8c&scoped=true&\"\nimport script from \"./DimensionsView.vue?vue&type=script&lang=ts&\"\nexport * from \"./DimensionsView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DimensionsView.vue?vue&type=style&index=0&id=b12faa8c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b12faa8c\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DimensionsView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('content-card',{attrs:{\"title\":\"Audit Log\"}},[_c('v-select',{attrs:{\"label\":\"Show audit records for user:\",\"items\":_vm.users,\"item-text\":\"fullName\",\"item-value\":\"email\",\"variant\":\"outlined\"},on:{\"change\":function($event){return _vm.getAuditing()}},model:{value:(_vm.filterUserEmail),callback:function ($$v) {_vm.filterUserEmail=$$v},expression:\"filterUserEmail\"}}),_c('v-data-table',{staticClass:\"elevation-1\",attrs:{\"headers\":_vm.headers,\"items\":_vm.auditLog,\"item-key\":\"id\",\"loading\":_vm.loading,\"loading-text\":\"Loading...\",\"show-expand\":\"\",\"single-expand\":_vm.singleExpand},scopedSlots:_vm._u([{key:`item.startDate`,fn:function({ item }){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('span',_vm._g({},on),[_vm._v(_vm._s(new Date(item.startDate).toLocaleString()))])]}}],null,true)},[_c('span',[_vm._v(_vm._s(item.startDate))])])]}},{key:\"expanded-item\",fn:function({ headers, item }){return [_c('td',{attrs:{\"colspan\":headers.length}},[_vm._v(\" Record id: \"+_vm._s(item.id)+\" \")])]}}],null,true)})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from 'vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { User } from '@auth0/auth0-spa-js';\r\n\r\nexport default defineComponent({\r\n title() {\r\n return 'Audit';\r\n },\r\n components: {\r\n },\r\n data() {\r\n return {\r\n users: [] as User[],\r\n headers: [\r\n {\r\n text: this.$t(\"startdate\"),\r\n value: 'startDate',\r\n sortable: true,\r\n },\r\n {\r\n text: this.$t(\"eventtype\"),\r\n value: 'eventType'\r\n },\r\n {\r\n text: this.$t(\"environment\"),\r\n value: 'environment'\r\n },\r\n {\r\n text: this.$t(\"duration\"),\r\n value: 'duration',\r\n sortable: false\r\n },\r\n {\r\n text: this.$t(\"status\"),\r\n value: 'responseStatus'\r\n },\r\n {\r\n text: '',\r\n value: 'data-table-expand'\r\n }\r\n ],\r\n auditLog: [],\r\n filterUserEmail: null,\r\n loading: false,\r\n singleExpand: false\r\n };\r\n },\r\n methods: {\r\n getAuditing: waitFor('getAuditing', async function () {\r\n console.log(this.filterUserEmail);\r\n this.loading = true;\r\n\r\n try {\r\n const logs = await ApiV2.http.get(`/api/auditing?email=${this.filterUserEmail}`).then((r) => r.data);\r\n this.auditLog = logs;\r\n } finally {\r\n this.loading = false;\r\n }\r\n }),\r\n getUsers: waitFor('getUsers', async function () {\r\n const users = await ApiV2.http.get(`api/metadata/tenants/current/allusers`).then((r) => r.data);\r\n\r\n this.users = users;\r\n }),\r\n },\r\n created() {\r\n this.getUsers();\r\n },\r\n});\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AuditView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AuditView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AuditView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AuditView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AuditView.vue?vue&type=template&id=9cd3fa5c&\"\nimport script from \"./AuditView.vue?vue&type=script&lang=ts&\"\nexport * from \"./AuditView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AuditView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"value\":true,\"no-click-animation\":\"\",\"persistent\":\"\",\"max-width\":\"400\",\"scrollable\":\"\",\"hide-overlay\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly}},[_c('choose-tenant-card',{attrs:{\"loading\":_vm.$wait.is(['loadingProfiles', 'choosingProfile']),\"items\":_vm.accountStore.tenants,\"hide-create\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, loading }){return [_c('v-btn',{attrs:{\"to\":\"/logout\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"login\")]),_vm._v(\" \"+_vm._s(_vm.$t('views.chooseProfile.logout'))+\" \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"form\":formId,\"disabled\":!isValid || loading,\"loading\":loading,\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleChooseEvent(form.tenantId)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(_vm._s(_vm.$t('views.chooseProfile.login')))],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"loading\":_vm.loading,\"title\":_vm.title || _vm.$t('chooseTenantCard.title.default'),\"subtitle\":_vm.subtitle || _vm.items.length > 0 ? _vm.$t('chooseTenantCard.subtitle.default') : _vm.$t('chooseTenantCard.subtitle.none'),\"lazy-validation\":false},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"isValid\":!!_vm.tenantId && _vm.valid,\"clear\":reset,\"form\":{ tenantId: _vm.tenantId },\"formId\":formId,\"loading\":_vm.loading})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-skeleton-loader',{attrs:{\"loading\":_vm.loading,\"type\":\"list-item@4\"}},[(_vm.items.length > 0)?_c('tenant-radio-group',{attrs:{\"tenants\":_vm.items,\"hide-create\":_vm.hideCreate,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.tenantId),callback:function ($$v) {_vm.tenantId=$$v},expression:\"tenantId\"}}):_c('empty-state',{attrs:{\"icon\":\"warning\",\"message\":_vm.$t('chooseTenantCard.contact')}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"href\":`mailto:${_vm.mailToAddress}`,\"text\":\"\"}},[_vm._v(_vm._s(_vm.mailToAddress))])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list',[_c('v-radio-group',{staticClass:\"pa-0 ma-0\",attrs:{\"value\":_vm.value,\"hide-details\":\"\",\"rules\":_vm.rules},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_vm._t(\"prepend\"),(!_vm.hideCreate)?_c('v-list-item',{on:{\"click\":function($event){return _vm.$refs.createDialog.open()}}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(\"add\")])],1),_c('v-list-item-content',[_vm._v(_vm._s(_vm.$t('tenantRadioGroup.create-button')))])],1):_vm._e(),_c('v-divider'),_vm._l((_vm.tenants),function(tenant,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.$emit('input', tenant.tenantId)}}},[[_c('v-list-item-action',[_c('v-radio',{attrs:{\"value\":tenant.tenantId,\"color\":\"primary\"}})],1),_c('v-list-item-content',[_vm._v(_vm._s(tenant.tenantName))])]],2)}),_vm._t(\"append\")],2),_c('create-tenant-dialog',{ref:\"createDialog\",on:{\"created\":_vm.handleCreation}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function(props){return [_vm._t(\"activator\",null,null,props)]}}],null,true),model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('set-tenant-card',{attrs:{\"loading\":_vm.$wait.is('creatingTenant'),\"title\":_vm.$t('views.createTenantDialog.title'),\"subtitle\":_vm.$t('views.createTenantDialog.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear }){return [_c('back-button',{on:{\"click\":function($event){_vm.show = false}}}),_c('v-spacer'),_c('post-tenant-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingTenant'),expression:\"'creatingTenant'\"}],attrs:{\"value\":{ ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":_vm.onSubmit}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/metadata/tenant/current/children\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postTenantButton.errorMessage\": \"There was an error encountered while creating this tenant. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostTenantButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostTenantButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostTenantButton.vue?vue&type=template&id=48b70ecb&\"\nimport script from \"./PostTenantButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PostTenantButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.createTenantDialog.title\": \"Create Tenant\",\r\n \"views.createTenantDialog.subtitle\": \"The tenant you create here will be charged under your current billing agreement unless other arrangements are made specifically.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateTenantDialog.vue?vue&type=template&id=42f4df05&\"\nimport script from \"./CreateTenantDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateTenantDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateTenantDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"tenantRadioGroup.create-button\": \"Create Tenant\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantRadioGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantRadioGroup.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantRadioGroup.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TenantRadioGroup.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TenantRadioGroup.vue?vue&type=template&id=5d9571a0&scoped=true&\"\nimport script from \"./TenantRadioGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./TenantRadioGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TenantRadioGroup.vue?vue&type=style&index=0&id=5d9571a0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d9571a0\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TenantRadioGroup.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"chooseTenantCard.title.default\": \"Choose Tenant\", \r\n \"chooseTenantCard.subtitle.default\": \"Please choose a tenant\",\r\n \"chooseTenantCard.subtitle.none\": \"No tenants available\",\r\n \"chooseTenantCard.contact\": \"Please contact support\"\r\n } \r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenantCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenantCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ChooseTenantCard.vue?vue&type=template&id=18f512bf&\"\nimport script from \"./ChooseTenantCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ChooseTenantCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ChooseTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.chooseProfile.title\": \"Choose Profile\",\r\n \"views.chooseProfile.logout\": \"Logout\",\r\n \"views.chooseProfile.login\": \"Choose\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Choose.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Choose.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Choose.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Choose.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Choose.vue?vue&type=template&id=4f9d9b46&\"\nimport script from \"./Choose.vue?vue&type=script&lang=js&\"\nexport * from \"./Choose.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Choose.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"value\":true,\"no-click-animation\":\"\",\"persistent\":\"\",\"max-width\":\"800\",\"scrollable\":\"\",\"hide-overlay\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly,\"loading\":_vm.$wait.is('creatingTenant')}},[_c('create-tenant-card',{scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, clear }){return [_c('v-btn',{attrs:{\"to\":\"/logout\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"login\")]),_vm._v(\" \"+_vm._s(_vm.$t('views.selfService.createTenant.logout'))+\" \")],1),_c('v-spacer'),_c('post-create-tenant-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingTenant'),expression:\"'creatingTenant'\"}],attrs:{\"value\":{ ...form },\"clear\":clear,\"valid\":isValid,\"form\":formId},on:{\"http2xx\":_vm.tenantCreated}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.$t('selfservice.createTenant.title')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":{\n CustomerName: _vm.name,\n BillingEmailAddress: _vm.billingEmail,\n DisplayCurrencyCode: _vm.displayCurrencyCode,\n },\"formId\":formId,\"isValid\":_vm.valid,\"clear\":reset})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required()],\"required\":\"\",\"autofocus\":\"\",\"label\":_vm.$t('selfservice.createTenant.name')},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-text-field',{attrs:{\"rules\":[_vm.$rules.required(), _vm.$rules.email()],\"required\":\"\",\"label\":_vm.$t('selfservice.createTenant.billingEmail')},model:{value:(_vm.billingEmail),callback:function ($$v) {_vm.billingEmail=$$v},expression:\"billingEmail\"}}),_c('currency-combo-box',{attrs:{\"rules\":[_vm.$rules.required()]},model:{value:(_vm.displayCurrencyCode),callback:function ($$v) {_vm.displayCurrencyCode=$$v},expression:\"displayCurrencyCode\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n {\r\n \"en\": {\r\n \"selfservice.createTenant.title\": \"Create a new Customer Account\",\r\n \"selfservice.createTenant.name\": \"Customer Name\",\r\n \"selfservice.createTenant.billingEmail\": \"Billing Email Address\"\r\n }\r\n }\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateTenantCard.vue?vue&type=template&id=0fb7474c&\"\nimport script from \"./CreateTenantCard.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateTenantCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateTenantCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/billing/selfservice/tenant\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postCreateTenantButton.errorMessage\": \"There was an error encountered while creating this tenant. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCreateTenantButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCreateTenantButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCreateTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostCreateTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostCreateTenantButton.vue?vue&type=template&id=984e9294&\"\nimport script from \"./PostCreateTenantButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PostCreateTenantButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostCreateTenantButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"views.selfService.createTenant.logout\": \"Logout\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenant.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenant.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateTenant.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateTenant.vue?vue&type=template&id=78f5ccea&\"\nimport script from \"./CreateTenant.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateTenant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateTenant.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"value\":true,\"no-click-animation\":\"\",\"persistent\":\"\",\"max-width\":\"800\",\"scrollable\":\"\",\"hide-overlay\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly}},[_c('plan-card')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectPlan.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectPlan.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectPlan.vue?vue&type=template&id=809e0342&\"\nimport script from \"./SelectPlan.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectPlan.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('resourceExplorer.title'),\"icon\":\"insights\",\"extended\":\"\",\"needs-filters\":\"\"}},[_c('v-tabs',{attrs:{\"background-color\":\"transparent\",\"align-with-title\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.tabs),function(t){return _c('v-tab',{key:t.key,attrs:{\"to\":t.to,\"disabled\":_vm.$wait.is('gettingUsageRecords')}},[(t.icon)?_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(_vm._s(t.icon))]):_vm._e(),_vm._v(\" \"+_vm._s(t.title)+\" \")],1)}),1)],1),_c('v-container',[_c('form-dialog',{attrs:{\"width\":300},scopedSlots:_vm._u([{key:\"activator\",fn:function(activatorBindings){return [_vm._t(\"activator\",null,null,activatorBindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('resourceExplorer.rangeSelectedDialog.dialogTitle'),\"subtitle\":_vm.trendDialogSubtitle}},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Total for period\")]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.currentRangeEvent?.rangeTotal,_vm.tenantStore.currencyCode)))])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Average for period\")]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.avgTotal,_vm.tenantStore.currencyCode)))])],1)],1),_c('v-list-item',[_c('v-list-item-content',[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.processRangeEvent()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"analytics\")]),_vm._v(\" Go to Trends \")],1),_c('v-spacer')],1)],1)],1),[_c('back-button',{on:{\"click\":function($event){return close()}}})]],2)]}}],null,true),model:{value:(_vm.rangeSelectedDialog),callback:function ($$v) {_vm.rangeSelectedDialog=$$v},expression:\"rangeSelectedDialog\"}}),_c('form-dialog',{attrs:{\"width\":500},scopedSlots:_vm._u([{key:\"activator\",fn:function(activatorBindings){return [_vm._t(\"activator\",null,null,activatorBindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('resourceExplorer.annotationDialog.dialogTitle'),\"subtitle\":_vm.annotationDialogSubtitle}},[_c('annotations-timeline',{attrs:{\"annotations\":_vm.selectedAnnotations,\"allowEdit\":false,\"showNavigate\":true,\"showProduct\":true}}),[_c('back-button',{on:{\"click\":function($event){return close()}}})]],2)]}}],null,true),model:{value:(_vm.annotationDialog),callback:function ($$v) {_vm.annotationDialog=$$v},expression:\"annotationDialog\"}}),_c('content-card',{attrs:{\"title\":_vm.chartTitle,\"title-icon\":\"savings\",\"loading\":_vm.$wait.is('gettingUsageRecords')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"aria-label\":\"Star explorer tab\",\"title\":\"Star explorer tab\",\"role\":\"button\"},on:{\"click\":function($event){_vm.starred = !_vm.starred}}},[_c('v-icon',{attrs:{\"color\":_vm.starred ? 'yellow' : undefined}},[_vm._v(\"star\")])],1)]},proxy:true}])},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{attrs:{\"loading\":_vm.$wait.is('gettingUsageRecords'),\"date-supported-keys\":['30d', '60d', '6m', 'custom'],\"hide-segregation\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.usageOptions),callback:function ($$v) {_vm.usageOptions=$$v},expression:\"usageOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"annotations\":_vm.annotations,\"granularity\":_vm.usageOptions.granularity,\"allow-range-selection\":true},on:{\"click\":_vm.handleDatasetClicked,\"onRangeSelection\":_vm.onRangeSelection}})],1),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{attrs:{\"items\":_vm.groupingItems,\"currency-code\":_vm.tenantStore.currencyCode,\"segregate-by\":_vm.usageOptions.segregateBy,\"name-header-title\":_vm.currentHeaderName,\"tag-key\":_vm.tagKey,\"unitOfDisplay\":_vm.unitOfDisplay}})],1),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-container',{staticClass:\"d-flex flex-row-reverse\",attrs:{\"fluid\":\"\"}},[_c('v-radio-group',{attrs:{\"row\":\"\"},on:{\"change\":function($event){return _vm.unitChanged()}},model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}},[_c('v-radio',{attrs:{\"label\":\"Cost\",\"value\":_vm.displayOptions.cost}}),_c('v-radio',{attrs:{\"label\":\"Consumption\",\"value\":_vm.displayOptions.consumption}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," \r\nimport { defineComponent } from 'vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n props: {\r\n value: String,\r\n },\r\n data() {\r\n return {\r\n selectedValue: this.value ?? UnitOfDisplay.cost,\r\n displayOptions: UnitOfDisplay\r\n };\r\n },\r\n methods: {\r\n unitChanged() {\r\n this.$emit('input', this.selectedValue); \r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageUnitToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageUnitToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpendUsageUnitToggle.vue?vue&type=template&id=04e32bd2&\"\nimport script from \"./SpendUsageUnitToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsageUnitToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-skeleton-loader',{attrs:{\"loading\":_vm.loading,\"type\":\"list-item@6\"}},[(_vm.annotations.length > 0)?_c('v-timeline',{attrs:{\"align-top\":\"\",\"dense\":\"\",\"clipped\":\"\"}},_vm._l((_vm.allAnnotations),function(annotation){return _c('v-timeline-item',{key:annotation.id},[_c('v-card',{attrs:{\"flat\":\"\",\"outlined\":\"\"}},[_c('v-card-text',[_c('p',[_vm._v(_vm._s(annotation.text))]),(annotation.serviceName && _vm.showProduct)?_c('p',{staticClass:\"caption text-xs-center grey--text\"},[_vm._v(_vm._s(annotation.serviceName))]):_vm._e(),_c('div',{staticClass:\"d-flex justify-space-between\"},[_c('div',{staticStyle:{\"align-content\":\"end\"}},[(_vm.showNavigate)?_c('router-link',{attrs:{\"to\":`/explore/services/${annotation.serviceId}/annotations`}},[_vm._v(\" \"+_vm._s(_vm.$t('view'))+\" ► \")]):_vm._e()],1),_c('div',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(annotation.annotationCreatedBy)+\" \"),_c('v-spacer'),_vm._v(\" \"+_vm._s(annotation.date)+\" \"),(_vm.allowEdit)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',{attrs:{\"light\":\"\"}},[(annotation.isEditable)?_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditAnnotation(annotation)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('edit')))])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteAnnotation(annotation)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('delete')))])],1)],1)],1)],1):_vm._e()],1)])])],1)],1)}),1):_c('empty-state',{attrs:{\"icon\":\"history\",\"message\":_vm.$t('annotationsTimeline.noAnnotations')}},[_vm._t(\"no-data\")],2),_c('delete-annotation-dialog',{attrs:{\"annotation\":_vm.annotationToDelete},on:{\"http2xx\":_vm.onAnnotationChangeSuccess},model:{value:(_vm.dialogs.deleteAnnotation),callback:function ($$v) {_vm.$set(_vm.dialogs, \"deleteAnnotation\", $$v)},expression:\"dialogs.deleteAnnotation\"}}),_c('edit-annotation-dialog',{attrs:{\"annotation\":_vm.annotationToEdit},on:{\"http2xx\":_vm.onAnnotationChangeSuccess},model:{value:(_vm.dialogs.editAnnotation),callback:function ($$v) {_vm.$set(_vm.dialogs, \"editAnnotation\", $$v)},expression:\"dialogs.editAnnotation\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-annotation-card',{attrs:{\"loading\":_vm.$wait.is('deleteAnnotation'),\"value\":_vm.annotation,\"title\":_vm.$t('deleteAnnotationDialog.deleteAnnotationTitle'),\"subtitle\":_vm.$t('deleteAnnotationDialog.deleteAnnotationSubtitle'),\"simple\":true},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-annotation-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deleteAnnotation'),expression:\"'deleteAnnotation'\"}],attrs:{\"annotationId\":_vm.annotation.id,\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.handleDeleteSuccess($event))}}})]}}],null,true)})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":_vm.annotationId ? `/api/annotations/${_vm.annotationId}` : null,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteAnnotationButton.errorMessage\": \"There was an error encountered while deleting this annotation. If anything does not look right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteAnnotationButton.vue?vue&type=template&id=6598a4c5&\"\nimport script from \"./DeleteAnnotationButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteAnnotationButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteAnnotationDialog.deleteAnnotationTitle\": \"Delete Annotation\",\r\n \"deleteAnnotationDialog.deleteAnnotationSubtitle\": \"This action is not reversable, you will need to add a new annotation.\",\r\n \"deleteAnnotationDialog.successfulDelete\": \"Annotation successfully deleted.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteAnnotationDialog.vue?vue&type=template&id=1f8f6fa4&\"\nimport script from \"./DeleteAnnotationDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteAnnotationDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('edit-annotation-card',{attrs:{\"loading\":_vm.$wait.is('editAnnotation'),\"value\":_vm.annotation,\"title\":_vm.$t('editAnnotationDialog.editAnnotationTitle'),\"subtitle\":_vm.$t('editAnnotationDialog.editAnnotationSubtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading, form, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('edit-annotation-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('editAnnotation'),expression:\"'editAnnotation'\"}],attrs:{\"value\":{ ...form },\"clear\":clear,\"annotationId\":_vm.annotation.id,\"valid\":isValid,\"loading\":loading,\"form\":formId},on:{\"http2xx\":function($event){close().then(() => _vm.handleEditSuccess($event))}}})]}}],null,true)})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId }){return [_vm._t(\"actions\",null,{\"isValid\":_vm.valid,\"clear\":_vm.resetForm,\"formId\":formId,\"loading\":_vm.loading,\"form\":{ Text: _vm.annotation, AnnotationDate: _vm.annotationDate }})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('annotationCard.annotationDate'),\"value\":_vm.annotationDate},model:{value:(_vm.annotationDate),callback:function ($$v) {_vm.annotationDate=$$v},expression:\"annotationDate\"}}),_c('div',{staticClass:\"pt-2\"},[_c('v-textarea',{attrs:{\"outlined\":\"\",\"rules\":[ _vm.$rules.required(), _vm.$rules.maxLength(500) ],\"label\":_vm.$t('annotationCard.annotation'),\"value\":_vm.annotation,\"persistent-hint\":\"\",\"rows\":\"8\",\"required\":\"\"},model:{value:(_vm.annotation),callback:function ($$v) {_vm.annotation=$$v},expression:\"annotation\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n{\r\n \"en\": {\r\n \"annotationCard.annotation\": \"Annotation\", \r\n \"annotationCard.annotationDate\": \"Annotation Date\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AnnotationCard.vue?vue&type=template&id=367ded48&\"\nimport script from \"./AnnotationCard.vue?vue&type=script&lang=js&\"\nexport * from \"./AnnotationCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AnnotationCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"href\":_vm.annotationId ? `/api/annotations/${_vm.annotationId}` : null,\"value\":_vm.getPatchChanges(),\"isJsonPatch\":\"\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(_vm._s(_vm.$t('patchAnnotationsButton.text'))+\" \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchAnnotationsButton.text\": \"Edit Annotation\",\r\n \"patchAnnotationsButton.errorMessage\": \"There was an error encountered while updating this annotation. If anything does not look right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EditAnnotationButton.vue?vue&type=template&id=d1d4a0ae&\"\nimport script from \"./EditAnnotationButton.vue?vue&type=script&lang=js&\"\nexport * from \"./EditAnnotationButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EditAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"editAnnotationDialog.editAnnotationTitle\": \"Edit Annotation\",\r\n \"editAnnotationDialog.editAnnotationSubtitle\": \"Edit annotation for this service.\",\r\n \"editAnnotationDialog.successfulEdit\": \"Annotation successfully updated.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EditAnnotationDialog.vue?vue&type=template&id=ec4827ee&\"\nimport script from \"./EditAnnotationDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditAnnotationDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EditAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"annotationsTimeline.noAnnotations\": \"There are no annotations here yet.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationsTimeline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationsTimeline.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationsTimeline.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AnnotationsTimeline.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AnnotationsTimeline.vue?vue&type=template&id=76a5f414&\"\nimport script from \"./AnnotationsTimeline.vue?vue&type=script&lang=js&\"\nexport * from \"./AnnotationsTimeline.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AnnotationsTimeline.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"resourceExplorer.title\": \"Cost Explorer\",\r\n \"resourceExplorer.tabs.productcategories\": \"Product Categories\",\r\n \"resourceExplorer.tabs.resources\": \"Services\",\r\n \"resourceExplorer.tabs.subscriptions\": \"Subscriptions\",\r\n \"resourceExplorer.tabs.cloudproviders\": \"Cloud Providers\",\r\n \"resourceExplorer.tabs.cloudaccounts\": \"Cloud Connections\",\r\n \"resourceExplorer.tabs.products\": \"Products\",\r\n \"resourceExplorer.headers.productCategories\": \"Product Category\",\r\n \"resourceExplorer.headers.subscriptions\": \"Subscription Name\",\r\n \"resourceExplorer.headers.cloudAccounts\": \"Cloud Connection Name\",\r\n \"resourceExplorer.headers.products\": \"Product Name\",\r\n \"resourceExplorer.headers.services\": \"Service Name\",\r\n \"resourceExplorer.headers.tags\": \"Tag Value\",\r\n \"resourceExplorer.toast.navigationError\": \"Detailed information not yet available for this dimension\",\r\n \"resourceExplorer.rangeSelectedDialog.dialogTitle\": \"Range Information\",\r\n \"resourceExplorer.annotationDialog.dialogTitle\": \"Annotations\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=4fc8f128&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showServiceDialog),callback:function ($$v) {_vm.showServiceDialog=$$v},expression:\"showServiceDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedService,\"loading\":_vm.$wait.is('loadingServices')},on:{\"input\":function($event){return Object.assign(_vm.selectedService, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"servicesDialog.serviceNotFound\": \"There is no remaining reference to this service within the last 13 months of usage.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=8e9df7b4&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"md\":\"8\",\"cols\":\"12\"}},[_c('v-card-title',{staticClass:\"mb-4 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Service\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.serviceName : '...')+\" \"),(_vm.tenantStore.hasPermission('CanContribute'))?_c('service-manage-menu',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_vm._e()],1),(_vm.value)?_c('v-card-subtitle',{staticClass:\"my-0 pt-0 pb-2\"},[_c('service-metadata-chips',{attrs:{\"value\":_vm.value}})],1):_vm._e()],1),_c('v-col',{attrs:{\"md\":\"4\",\"cols\":\"12\"}},[_c('cost-summary-widget',{attrs:{\"actual-total\":_vm.forecast.actualTotal,\"projected-total\":_vm.forecast.projectedTotal,\"past-total\":_vm.forecast.pastTotal,\"currency-code\":_vm.tenantStore.currencyCode,\"spend-limit\":_vm.value ? _vm.value.monthlySpendLimit : 0}})],1)],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-badge',{attrs:{\"color\":\"secondary\",\"dot\":\"\",\"value\":tab.key === 'annotations' && _vm.value && _vm.value.annotationCount > 0}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"trending_up\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.projectedTotal,_vm.currencyCode))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"grey--text\"},[_vm._v(\" projected \"+_vm._s(_vm._f(\"dateFormat\")(new Date(),'MMMM'))+\" \")])],1)],1),_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"history\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.pastTotal,_vm.currencyCode))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"grey--text\"},[_vm._v(\" vs. \"+_vm._s(_vm._f(\"dateFormat\")(_vm.oneMonthAgo,'MMMM'))+\" total \")])],1)],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',[_c('v-list-item-icon',[(_vm.percentageOf >= 100)?_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"error\")]):(_vm.percentageOf > 90)?_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]):_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[(!_vm.spendLimit)?_c('fragment',[_c('v-list-item-title',[_c('span',{attrs:{\"data-testid\":\"spendLimit\"}},[_vm._v(\"N/A\")])]),_c('v-list-item-subtitle',{staticClass:\"grey--text\"},[_vm._v(\" spend limit \")])],1):_c('fragment',[_c('v-list-item-title',[_c('span',{attrs:{\"data-testid\":\"spendLimit\"}},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.spendLimit,_vm.currencyCode)))])]),_c('v-list-item-subtitle',{staticClass:\"grey--text\"},[_vm._v(\" spend limit \")])],1)],1)],1),_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"update\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.actualTotal,_vm.currencyCode))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"grey--text\"},[_vm._v(\" \"+_vm._s(_vm._f(\"dateFormat\")(new Date(),'MMMM'))+\" so far \")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CostSummaryWidget.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CostSummaryWidget.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CostSummaryWidget.vue?vue&type=template&id=62e43f2a&\"\nimport script from \"./CostSummaryWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./CostSummaryWidget.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Subscription\"}}),_vm._v(\" Subscription: \"+_vm._s(_vm.value.subscriptionName)+\" \")],1),_vm._l((_vm.value.regionNames || []),function(regionName,i){return _c('v-chip',{key:i,staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"place\")]),_vm._v(\" \"+_vm._s(regionName)+\" \")],1)}),(_vm.value.remoteId && _vm.value.remoteId.startsWith('/subscriptions'))?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"color\":\"blue\",\"outlined\":\"\",\"label\":\"\",\"href\":`https://portal.azure.com/#resource${_vm.value.remoteId}`,\"target\":\"_top\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"insert_link\")]),_vm._v(\" \"+_vm._s(_vm.$t('serviceMetadataChips.viewInAzure'))+\" \")],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"serviceMetadataChips.viewInAzure\": \"View in Azure\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceMetadataChips.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceMetadataChips.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ServiceMetadataChips.vue?vue&type=template&id=014d2faf&\"\nimport script from \"./ServiceMetadataChips.vue?vue&type=script&lang=js&\"\nexport * from \"./ServiceMetadataChips.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ServiceMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",function(){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"depressed\":\"\"}},bindings.on),[_vm._v(\" manage\"),_c('v-icon',{attrs:{\"right\":\"\",\"x-small\":\"\"}},[_vm._v(\"menu_open\")])],1)]},null,bindings)]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.isEditingSpendLimit = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('serviceManageMenu.editSpendLimit'))+\" \")])],1)],1)],1)],1),_c('edit-service-spend-limit-dialog',{attrs:{\"service\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.isEditingSpendLimit),callback:function ($$v) {_vm.isEditingSpendLimit=$$v},expression:\"isEditingSpendLimit\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value,\"max-width\":\"600\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ open }){return [_c('update-entity-spend-limit-card',{attrs:{\"value\":_vm.service,\"loading\":_vm.$wait.is('updateServiceSpendLimit')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return open()}}}),_c('v-spacer'),_c('patch-service-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updateServiceSpendLimit'),expression:\"'updateServiceSpendLimit'\"}],attrs:{\"value\":_vm.service,\"patches\":[{ op: 'replace', path: 'monthlySpendLimit', value: form.monthlySpendLimit }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":_vm.handleSuccessfulSpendLimit}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-card',{attrs:{\"title\":_vm.title,\"subtitle\":_vm.subtitle,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"default\",null,{\"isValid\":_vm.valid,\"clear\":reset,\"formId\":formId,\"loading\":_vm.loading,\"form\":{ monthlySpendLimit: Number(_vm.monthlySpendLimit) }})]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"persistent-hint\":\"\",\"label\":_vm.$t('updateEntitySpendLimitCard.monthlySpendLimit.title'),\"required\":\"\"},model:{value:(_vm.monthlySpendLimit),callback:function ($$v) {_vm.monthlySpendLimit=$$v},expression:\"monthlySpendLimit\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"updateEntitySpendLimitCard.monthlySpendLimit.title\": \"Monthly Spend Limit\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntitySpendLimitCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntitySpendLimitCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntitySpendLimitCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UpdateEntitySpendLimitCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./UpdateEntitySpendLimitCard.vue?vue&type=template&id=4cad3f73&\"\nimport script from \"./UpdateEntitySpendLimitCard.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateEntitySpendLimitCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./UpdateEntitySpendLimitCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":`/api/metadata/services/${(_vm.value || {}).serviceId}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchServiceButton.errorMessage\": \"There was an error encountered while patching this service. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchServiceButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchServiceButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchServiceButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchServiceButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PatchServiceButton.vue?vue&type=template&id=079b98c1&\"\nimport script from \"./PatchServiceButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PatchServiceButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PatchServiceButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditServiceSpendLimitDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditServiceSpendLimitDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditServiceSpendLimitDialog.vue?vue&type=template&id=71800aa0&\"\nimport script from \"./EditServiceSpendLimitDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditServiceSpendLimitDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"serviceManageMenu.editSpendLimit\": \"Set Spend Limit\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManageMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManageMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ServiceManageMenu.vue?vue&type=template&id=35f7b366&\"\nimport script from \"./ServiceManageMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ServiceManageMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ServiceManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CostSummaryWidget from '@/components/Domain.Usage/CostSummaryWidget.vue';\r\nimport ServiceMetadataChips from '@/components/Domain.Services/ServiceMetadataChips.vue';\r\nimport ServiceManageMenu from '@/components/Domain.Services/ServiceManageMenu.vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport moment from '@/lib/moment';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { defineComponent, computed, ref } from 'vue';\r\n\r\nexport default defineComponent({\r\n components: { ServiceMetadataChips, ServiceManageMenu, CostSummaryWidget },\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() => {\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n return [\r\n hasUsageDataset ? { key: 'usage', icon: 'insights', text: 'views.dialogService.tabs.usage' } : null,\r\n hasEmissionsDataset ? { key: 'carbon', icon: 'co2', text: 'views.dialogService.tabs.carbon' } : null,\r\n { key: 'tags', icon: 'sell', text: 'views.dialogService.tabs.tags' },\r\n { key: 'virtualtags', icon: 'sell', text: 'views.dialogService.tabs.virtualtags' },\r\n { key: 'annotations', icon: 'chat', text: 'views.dialogService.tabs.annotations' },\r\n hasUsageDataset ? { key: 'raw', icon: 'visibility', text: 'views.dialogService.tabs.raw' } : null,\r\n ].filter((t) => t);\r\n });\r\n const forecast = ref({\r\n actualTotal: 0,\r\n projectedTotal: 0,\r\n pastTotal: 0,\r\n });\r\n return { tab, tabs, tenantStore, forecast };\r\n },\r\n methods: {\r\n loadServiceProjections: waitFor('loadingSvcForecast', async function loadServiceProjections(id) {\r\n const toDate = moment.utc().endOf('month');\r\n const params = { toDate: toDate.format(), serviceIds: [id].join(), granularity: 'Daily' };\r\n const response = await ApiV2.http\r\n .get('/api/forecast', { params })\r\n .catch((err) => {\r\n if (err.response.status === 400) return { data: {} };\r\n throw err;\r\n })\r\n .then((r) => r.data);\r\n const year = toDate.format('YYYY');\r\n const month = toDate.format('MM');\r\n const previousDate = moment.utc().subtract(1, 'months').endOf('month');\r\n const prevYear = previousDate.format('YYYY');\r\n const prevMonth = previousDate.format('MM');\r\n this.forecast.actualTotal = response.monthlySpendTotals?.[year]?.[month] || 0;\r\n this.forecast.projectedTotal =\r\n this.forecast.actualTotal + response.monthlyForecastTotals?.[year]?.[month] || 0;\r\n this.forecast.pastTotal = response.monthlySpendTotals?.[prevYear]?.[prevMonth] || 0;\r\n }),\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.loadServiceProjections(val.serviceId);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=13230f51&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('add-annotation-dialog',{attrs:{\"serviceId\":_vm.serviceId},on:{\"http2xx\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.annotations.length > 0 && _vm.tenantStore.hasPermission('CanContribute')),expression:\"annotations.length > 0 && tenantStore.hasPermission('CanContribute')\"}],staticClass:\"ml-3\",attrs:{\"color\":\"secondary\",\"fab\":\"\",\"depressed\":\"\",\"small\":\"\"}},on),[_c('v-icon',[_vm._v(\"add\")])],1)]}}]),model:{value:(_vm.dialogs.isAddingAnnotation),callback:function ($$v) {_vm.$set(_vm.dialogs, \"isAddingAnnotation\", $$v)},expression:\"dialogs.isAddingAnnotation\"}})],1),_c('annotations-timeline',{attrs:{\"annotations\":_vm.annotations,\"serviceId\":_vm.serviceId,\"allowEdit\":true,\"loading\":_vm.loading || _vm.$wait.is(['getAnnotations'])},on:{\"onAnnotationChangeSuccess\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(_vm.tenantStore.hasPermission('CanContribute'))?_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.dialogs.isAddingAnnotation = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1):_vm._e()]},proxy:true}])}),(_vm.hasMore)?_c('div',{staticClass:\"text-center\"},[_c('v-btn',{staticClass:\"mt-2\",attrs:{\"small\":\"\",\"depressed\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.loadMore()}}},[_vm._v(\" \"+_vm._s(_vm.$t('annotations.loadMoreButton'))+\" \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('add-annotation-card',{attrs:{\"loading\":_vm.$wait.is('isAddingAnnotation'),\"title\":_vm.$t('addAnnotationDialog.addAnnotationTitle'),\"subtitle\":_vm.$t('addAnnotationDialog.addAnnotationSubtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, loading, form, clear }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('add-annotation-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('isAddingAnnotation'),expression:\"'isAddingAnnotation'\"}],attrs:{\"value\":{ ...form, cloudAccountId: _vm.cloudAccountId, subscriptionId: _vm.subscriptionId, serviceId: _vm.serviceId },\"clear\":clear,\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulAnnotationChange($event))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":`/api/annotations`,\"value\":_vm.value,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(_vm._s(_vm.$t('postAnnotationsButton.text'))+\" \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postAnnotationsButton.text\": \"Add Annotation\",\r\n \"postAnnotationsButton.errorMessage\": \"There was an error encountered while creating this annotation. If anything does not look right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AddAnnotationButton.vue?vue&type=template&id=4b8c86a6&\"\nimport script from \"./AddAnnotationButton.vue?vue&type=script&lang=js&\"\nexport * from \"./AddAnnotationButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AddAnnotationButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"addAnnotationDialog.addAnnotationTitle\": \"Add Annotation\",\r\n \"addAnnotationDialog.addAnnotationSubtitle\": \"Add a new annotation for this entity\",\r\n \"addAnnotationDialog.successfulAdd\": \"Annotation successfully added.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AddAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./AddAnnotationDialog.vue?vue&type=template&id=57ed49ce&\"\nimport script from \"./AddAnnotationDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./AddAnnotationDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./AddAnnotationDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Annotations.vue?vue&type=template&id=6593ac4d&\"\nimport script from \"./Annotations.vue?vue&type=script&lang=js&\"\nexport * from \"./Annotations.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-alert',{staticClass:\"mt-3\",attrs:{\"border\":\"left\",\"text\":\"\",\"type\":\"info\",\"elevation\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('serviceDialog.tags.sourceDescription'))+\" \")]),_c('tag-form',{attrs:{\"loading\":_vm.loading || _vm.$wait.is('getServiceTags'),\"value\":_vm.formData,\"hide-create\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-form',{staticClass:\"mt-3\",attrs:{\"value\":_vm.value ? _vm.value.valid : true},on:{\"input\":function($event){_vm.$emit('input', { ...(_vm.value || {}), valid: $event })}}},[_c('v-skeleton-loader',{attrs:{\"loading\":_vm.loading,\"type\":\"list-item@6\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(!_vm.value || !_vm.value.data)?_c('empty-state',{attrs:{\"icon\":\"warning\",\"message\":\"There was an error processing this form.\"}}):(!_vm.value.data.length)?_c('empty-state',{attrs:{\"icon\":\"warning\",\"message\":_vm.$t('tagForm.noTags')}},[(!_vm.hideCreate)?_c('v-btn',{attrs:{\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.addNewTag()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('tagForm.newTag'))+\" \")],1):_vm._e()],1):_c('fragment',[_vm._l((_vm.value.data),function(tag,i){return _c('v-row',{key:i},[_c('v-col',{attrs:{\"cols\":\"5\"}},[_c('tag-key-autocomplete',{attrs:{\"disabled\":!tag.Sources ||\n !tag.Sources.length ||\n tag.Sources.length > 1 ||\n tag.Sources[0] !== 'CloudControl'},on:{\"input\":function($event){return _vm.$emit('input', _vm.value)}},model:{value:(tag.Key),callback:function ($$v) {_vm.$set(tag, \"Key\", $$v)},expression:\"tag.Key\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('tag-value-autocomplete',{attrs:{\"tag-key\":tag.Key,\"disabled\":!tag.Sources ||\n !tag.Sources.length ||\n tag.Sources.length > 1 ||\n tag.Sources[0] !== 'CloudControl'},on:{\"input\":function($event){return _vm.$emit('input', _vm.value)}},model:{value:(tag.Value),callback:function ($$v) {_vm.$set(tag, \"Value\", $$v)},expression:\"tag.Value\"}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-btn',{staticClass:\"mt-3\",attrs:{\"icon\":\"\",\"color\":\"error\",\"disabled\":!tag.Sources ||\n !tag.Sources.length ||\n tag.Sources.length > 1 ||\n tag.Sources[0] !== 'CloudControl'},on:{\"click\":function($event){return _vm.deleteTag(tag, i)}}},[_c('v-icon',[_vm._v(\"close\")])],1)],1)],1)}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"5\"}},[(!_vm.hideCreate)?_c('v-btn',{attrs:{\"color\":\"secondary\",\"text\":\"\",\"block\":\"\"},on:{\"click\":function($event){return _vm.addNewTag()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('tagForm.newTag'))+\" \")],1):_vm._e()],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_vm._t(\"default\")],2)],1)],2)]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('entity-search-autocomplete',_vm._b({attrs:{\"filled\":\"\",\"types\":['Tag'],\"value\":_vm.tagValueEntity,\"label\":_vm.$t('tagValueAutocomplete.tagValue.label'),\"prepend-icon\":null,\"search-prefix\":_vm.tagKey ? _vm.tagKey + ':' : null,\"hide-details\":\"\",\"support-create\":\"\"},on:{\"input\":_vm.handleTagValueSelection}},'entity-search-autocomplete',_vm.$props,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"tagValueAutocomplete.tagValue.label\": \"Value\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagValueAutocomplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagValueAutocomplete.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagValueAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagValueAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagValueAutocomplete.vue?vue&type=template&id=5193e019&\"\nimport script from \"./TagValueAutocomplete.vue?vue&type=script&lang=js&\"\nexport * from \"./TagValueAutocomplete.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagValueAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"tagForm.tagKey.title\": \"Key\",\r\n \"tagForm.tagValue.title\": \"Value\",\r\n \"tagForm.newTag\": \"New Tag\",\r\n \"tagForm.noTags\": \"You do not currently have any tags here\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagForm.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagForm.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagForm.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagForm.vue?vue&type=template&id=136fb078&\"\nimport script from \"./TagForm.vue?vue&type=script&lang=js&\"\nexport * from \"./TagForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagForm.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"serviceDialog.tags.sourceDescription\": \"The tags visible here are sourced from the last 60 days of usage records for this service. To update the tags of this service, please tag the corresponding resource in the source cloud provider. We recommend utilizing resource policies where appropriate to speed this up.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecordTags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecordTags.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecordTags.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecordTags.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./RecordTags.vue?vue&type=template&id=53878f86&\"\nimport script from \"./RecordTags.vue?vue&type=script&lang=js&\"\nexport * from \"./RecordTags.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RecordTags.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-alert',{staticClass:\"mt-3\",attrs:{\"border\":\"left\",\"text\":\"\",\"type\":\"warning\",\"elevation\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('serviceDialog.virtualTags.sourceDescription'))+\" \")]),_c('virtual-tag-table',{attrs:{\"loading\":_vm.$wait.is(['getServiceVirtualTags', 'addServiceTag']),\"items\":_vm.virtualTags},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, form, loading, reset }){return [_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!isValid || loading,\"loading\":loading,\"form\":formId,\"text\":\"\"},on:{\"click\":function($event){_vm.addServiceTag(form).then(reset)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}},{key:\"item\",fn:function({ item }){return [_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\",\"loading\":_vm.$wait.is('deleteServiceTag')},on:{\"click\":function($event){return _vm.deleteServiceTag(item)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"delete\")]),_vm._v(\" Drop \")],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-form',{ref:\"form\",attrs:{\"id\":_vm.formId},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Tag Key\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Tag Value\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Period\")]),_c('th')])]),_c('tbody',[(_vm.tenantStore.hasPermission('CanContribute'))?_c('tr',[_c('td',[_c('v-text-field',{staticClass:\"py-3\",attrs:{\"rules\":[_vm.$rules.required()],\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.newTagKey),callback:function ($$v) {_vm.newTagKey=$$v},expression:\"newTagKey\"}})],1),_c('td',[_c('v-text-field',{staticClass:\"py-3\",attrs:{\"rules\":[_vm.$rules.required()],\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.newTagValue),callback:function ($$v) {_vm.newTagValue=$$v},expression:\"newTagValue\"}})],1),_c('td',[_c('v-select',{staticClass:\"py-3\",attrs:{\"rules\":[_vm.$rules.required()],\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"items\":_vm.supportedPeriods,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.newTagPeriod),callback:function ($$v) {_vm.newTagPeriod=$$v},expression:\"newTagPeriod\"}})],1),_c('td',[_vm._t(\"default\",null,{\"formId\":_vm.formId,\"reset\":_vm.reset,\"resetValidation\":_vm.resetValidation,\"isValid\":_vm.isValid,\"form\":_vm.newTag,\"loading\":_vm.loading})],2)]):_vm._e(),_vm._l((_vm.items),function(item,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(item.tagKey))]),_c('td',[_vm._v(_vm._s(item.tagValue))]),_c('td',[_vm._v(_vm._s(`${item.month} / ${item.year}`))]),_c('td',[_vm._t(\"item\",null,{\"item\":item})],2)])}),(!_vm.items || _vm.items.length === 0)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('virtualTagsTable.noRecords'))+\" \")])]):_vm._e()],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"virtualTagsTable.noRecords\": \"There are no virtual tags configured for this service.\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTagTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTagTable.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTagTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTagTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./VirtualTagTable.vue?vue&type=template&id=1eccb7b8&scoped=true&\"\nimport script from \"./VirtualTagTable.vue?vue&type=script&lang=js&\"\nexport * from \"./VirtualTagTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VirtualTagTable.vue?vue&type=style&index=0&id=1eccb7b8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1eccb7b8\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./VirtualTagTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"serviceDialog.virtualTags.sourceDescription\": \"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\r\n \"serviceDialog.virtualTags.errorCreating\": \"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\r\n \"serviceDialog.virtualTags.successCreating\": \"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\r\n \"serviceDialog.virtualTags.errorDeleting\": \"There was an error deleting this virtual tag. Please refresh this page and try again.\",\r\n \"serviceDialog.virtualTags.successDeleting\": \"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./VirtualTags.vue?vue&type=template&id=86a6570c&\"\nimport script from \"./VirtualTags.vue?vue&type=script&lang=js&\"\nexport * from \"./VirtualTags.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getServiceUsage'),\"hide-search\":\"\"},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getServiceUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"filter_alt\")]),_vm._l((_vm.value),function(filter){return _c('v-chip',{key:filter.id,staticClass:\"mx-1\",attrs:{\"outlined\":\"\",\"close\":\"\",\"label\":\"\"},on:{\"click:close\":function($event){return _vm.dropFilter(filter)}}},[_c('v-icon',{attrs:{\"left\":\"\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"truncate\")(filter.name,20))+\" \")],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\r\nimport VueI18n from \"vue-i18n\";\r\n\r\nVue.use(VueI18n);\r\n\r\nconst i18nRules = {\r\n en: {\r\n \"validation.required\": \"Required\",\r\n \"validation.invalid\": \"Invalid\",\r\n \"validation.maxLength\": \"Must be {num} or less characters\",\r\n \"validation.minLength\": \"Must be {num} or more characters\",\r\n \"validation.email\": \"Must be a valid email\",\r\n \"validation.time\": \"Must be a valid time (hh:mm)\",\r\n \"validation.multipleOf\": \"Increments of {num}\",\r\n \"validation.max\": \"Must be {num} or less\",\r\n \"validation.min\": \"Must be {num} or more\",\r\n \"validation.doesNotMatch\": \"Does not match\",\r\n \"validation.containsDigit\": \"Must contain a digit\",\r\n \"validation.containsLower\": \"Must contain a lowercase character\",\r\n \"validation.containsUpper\": \"Must contain an uppercase character\",\r\n \"validation.containsSpecialChar\":\r\n \"Must contain a special character like -+_!@#$%^&*.,?\",\r\n \"validation.regex\": \"Does not meet all requirements for this input\",\r\n },\r\n};\r\n\r\nconst i8nShared = {\r\n en: {\r\n \"shared.meterInformationNotSupported\":\r\n \"Drill down into Meter usage is not currently supported.\",\r\n },\r\n};\r\n\r\nexport const i18n = new VueI18n({\r\n locale: \"en\",\r\n silentTranslationWarn: true,\r\n messages: {\r\n en: {\r\n ...i18nRules.en,\r\n ...i8nShared.en,\r\n name: \"Name\",\r\n useTenantCurrencies: \"Apply tenant FX overrides\",\r\n \"useTenantCurrencies.tooltip\":\r\n \"In lieu of any overrides tenants will apply a core set of static FX rates updated monthly. To update the overrides navigate to the FX rates tab in the settings page.\",\r\n edit: \"Edit\",\r\n type: \"Type\",\r\n none: \"None\",\r\n description: \"Description\",\r\n back: \"Back\",\r\n permissions: \"Permissions\",\r\n delete: \"Delete\",\r\n view: \"View\",\r\n disable: \"Disable\",\r\n close: \"Close\",\r\n create: \"Create\",\r\n connected: \"Connected\",\r\n \"cloud accounts\": \"Cloud Connections\",\r\n \"azure accounts\": \"Azure Accounts\",\r\n \"amazon accounts\": \"Amazon Accounts\",\r\n \"alibaba accounts\": \"Alibaba Accounts\",\r\n \"usage connection\": \"Usage Connection\",\r\n \"arm connection\": \"ARM Connection\",\r\n \"edit name\": \"Edit Name\",\r\n \"edit currencies\": \"Edit FX Rates\",\r\n \"contact us\": \"Contact Us\",\r\n \"all azure accounts\": \"All Azure accounts\",\r\n \"all amazon accounts\": \"All Amazon accounts\",\r\n \"all alibaba accounts\": \"All Alibaba accounts\",\r\n \"edit enhanced connection\": \"Edit Enhanced Connection\",\r\n \"edit usage connection\": \"Edit Usage Connection\",\r\n \"edit connection\": \"Edit Connection\",\r\n \"copy cloud account\": \"Copy Cloud Connection\",\r\n expiry: \"Expiry\",\r\n email: \"Email\",\r\n administrator: \"Administrator\",\r\n role: \"Role\",\r\n actions: \"Actions\",\r\n login: \"Login\",\r\n password: \"Password\",\r\n \"old password\": \"Old Password\",\r\n \"confirm password\": \"Confirm Password\",\r\n company: \"Company\",\r\n \"spendUsageChartCard.customDateTextFormat\":\r\n \"Usage by {segregatedBy} ({fromDate} - {toDate})\",\r\n \"spendUsageChartCard.fixedDateTextFormat\":\r\n \"{granularity} usage by {segregateBy} (Last {total} {granularityName})\",\r\n \"spendUsageChartCard.products.title\": \"Products\",\r\n \"spendUsageChartCard.productcategories.title\": \"Categories\",\r\n \"spendUsageChartCard.cloudproviders.title\": \"Cloud Providers\",\r\n \"spendUsageChartCard.services.title\": \"Services\",\r\n \"spendUsageChartCard.subscriptions.title\": \"Subscriptions\",\r\n \"spendUsageChartCard.meters.title\": \"Meters\",\r\n \"spendUsageChartCard.cloudaccounts.title\": \"Cloud Connections\",\r\n \"spendUsageChartCard.regions.title\": \"Regions\",\r\n \"spendUsageChartCard.tags.title\": \"Tags\",\r\n },\r\n ja: {\r\n name: \"名前\",\r\n edit: \"を編集\",\r\n none: \"なし\",\r\n back: \"戻る\",\r\n delete: \"削除する\",\r\n create: \"つくる\",\r\n \"cloud accounts\": \"統合\",\r\n \"azure accounts\": \"Azure統合\",\r\n \"amazon accounts\": \"Amazon統合\",\r\n \"usage connection\": \"消費接続\",\r\n \"arm connection\": \"ARM接続\",\r\n },\r\n },\r\n});\r\n","\r\nimport { toastInfo } from '@/components/Common/Toast.vue';\r\nimport { i18n } from '@/i18n';\r\nimport { ISpendParameters, CloudProviderType, EntityType } from '@/models';\r\nimport { appendValueToCommaString } from '@/lib';\r\n\r\nexport interface IChipViewModel {\r\n id: string;\r\n name: string;\r\n type: EntityType;\r\n}\r\n\r\nexport function filterUsageParamsByFilterChips(chips: IChipViewModel[], params: ISpendParameters) {\r\n const cloneParams = { ...params };\r\n chips.forEach((f) => {\r\n if (f.type === EntityType.service) {\r\n cloneParams.serviceIds = appendValueToCommaString(params.serviceIds, f.id);\r\n } else if (f.type === EntityType.subscription) {\r\n cloneParams.subscriptionIds = appendValueToCommaString(params.subscriptionIds, f.id);\r\n } else if (f.type === EntityType.cloudAccount) {\r\n cloneParams.cloudAccountIds = appendValueToCommaString(params.cloudAccountIds, f.id);\r\n } else if (f.type === EntityType.product) {\r\n cloneParams.productIds = appendValueToCommaString(params.productIds, f.id);\r\n } else if (f.type === EntityType.productCategory) {\r\n const categoryName = f.id\r\n .split(':')\r\n .reverse()\r\n .find((x: string) => x);\r\n cloneParams.productCategories = appendValueToCommaString(params.productCategories, `\"${categoryName}\"`);\r\n } else if (f.type === EntityType.region) {\r\n const [providerType, regionName] = f.id.split(':');\r\n cloneParams.providerType = providerType as CloudProviderType;\r\n cloneParams.regionNames = appendValueToCommaString(params.regionNames, regionName);\r\n } else if (f.type == EntityType.tag) {\r\n cloneParams.tagKeyValues = appendValueToCommaString(params.tagKeyValues, f.id)\r\n } else if (f.type == EntityType.geography) {\r\n cloneParams.geographyNames = appendValueToCommaString(params.geographyNames, f.name);\r\n } else if (f.type == EntityType.cloudProvider) {\r\n cloneParams.providerType = appendValueToCommaString(params.providerType, f.name);\r\n } else if (f.type == EntityType.customView) {\r\n cloneParams.savedViewId = appendValueToCommaString(params.savedViewId, f.id);\r\n }\r\n });\r\n return cloneParams;\r\n}\r\n\r\nexport function handleSeriesClicked(chips: IChipViewModel[], series) {\r\n if (series.metaType === EntityType.meter) {\r\n toastInfo(i18n.t('shared.meterInformationNotSupported'));\r\n } else if (!chips.find((v) => v.id === series.metaId && v.type === series.metaType)) {\r\n chips.push({\r\n id: series.metaId,\r\n name: series.name,\r\n type: series.metaType,\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n props: {\r\n value: Array,\r\n },\r\n methods: {\r\n dropFilter(filter) {\r\n const filtersWithoutFilter = this.value.filter((i) => i != filter);\r\n this.$emit('input', filtersWithoutFilter);\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFilterChips.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UsageFilterChips.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UsageFilterChips.vue?vue&type=template&id=1d90e452&\"\nimport script from \"./UsageFilterChips.vue?vue&type=script&lang=ts&\"\nexport * from \"./UsageFilterChips.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore, mapStores } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, IServiceMetaResult, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n }\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.meters})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.meter, EntityType.product]);\r\n const segregationSupportedKeys = ref([PluralEntityType.meters, PluralEntityType.products]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getServiceUsage', async () => {\r\n const { serviceId } = p.value as IServiceMetaResult;\r\n const options: SpendUsageOptions = { ...spendOptions.value, serviceId };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, usageResponse, options.costView);\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, serviceId: undefined };\r\n filterStore.setFilter(options);\r\n })\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getServiceUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=6ce2394a&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getServiceCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getServiceCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, onUnmounted, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, IServiceMetaResult } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.meters})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.meter, EntityType.tag]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.meters,\r\n PluralEntityType.tags,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getServiceCO2e\", async () => {\r\n const { serviceId } = p.value as IServiceMetaResult;\r\n const options: SpendUsageOptions = { ...spendOptions.value, serviceId };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey),\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getServiceCO2e\")) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, serviceId: undefined };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=fd2d24d8&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"headers\":_vm.headers,\"items\":_vm.records,\"single-expand\":\"\",\"expanded\":_vm.expanded,\"item-key\":\"i\",\"show-expand\":\"\"},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event},\"update:expanded\":function($event){_vm.expanded=$event}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-spacer'),_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"depressed\":\"\",\"color\":\"secondary\"}},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"download\")]),_vm._v(\" Export \")],1)]}}])},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.downloadAsCsv()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"table_chart\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Download to CSV\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.downloadAsJson()}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"data_object\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Download to JSON\")])],1)],1)],1)],1)],1)]},proxy:true},{key:`item.cost`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.cost,item.currency))+\" \")]}},{key:`item.unitsConsumed`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.unitsConsumed.toFixed(2))+\" x \"+_vm._s(item.unit)+\" \")]}},{key:`item.chargeDate`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"calendarFormat\")(item.chargeDate))+\" \")]}},{key:\"expanded-item\",fn:function({ headers, item }){return [_c('td',{attrs:{\"colspan\":headers.length}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Metadata\")]),_c('th',[_vm._v(\"Tags\")])])]),_c('tbody',[_c('tr',[_c('td',_vm._l((item.metaData || {}),function(v,k){return _c('v-chip',{key:k,staticClass:\"ma-1\",attrs:{\"small\":\"\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(`${k}:${v}`)+\" \")])}),1),_c('td',_vm._l((item.tags || {}),function(v,k){return _c('v-chip',{key:k,staticClass:\"ma-1\",attrs:{\"small\":\"\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(`${k}:${v}`)+\" \")])}),1)])])])],1)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { defineComponent, ref } from 'vue';\r\nimport Downloader from '@/lib/Downloader';\r\nimport { IRawUsageRecord } from '@/models';\r\nexport default defineComponent({\r\n props: ['value', 'loading'],\r\n setup() {\r\n const records = ref([]);\r\n const headers = [\r\n ['chargeDate', 'Charge Date'],\r\n ['cost', 'Cost'],\r\n ['unitsConsumed', 'Consumption'],\r\n ['meterName', 'Meter Name'],\r\n ['regionName', 'Region'],\r\n ].map(([value, text]) => ({\r\n text,\r\n align: 'left',\r\n sortable: true,\r\n value,\r\n }));\r\n const sortBy = ref('chargeDate');\r\n const sortDesc = ref(true);\r\n const getServiceRawRecords = waitFor('gettingRawRecords', async function getFn(serviceId: string) {\r\n const rawRecords: IRawUsageRecord[] = await ApiV2.http\r\n .get(`/api/raw/services/${serviceId}`)\r\n .then((r) => r.data);\r\n records.value = rawRecords.map((val, i) => ({ ...val, i }));\r\n });\r\n const downloadAsJson = () => {\r\n Downloader.exportJSON(records.value, 'Usage.json');\r\n };\r\n const downloadAsCsv = () => {\r\n const csvHeaders = [\r\n 'chargeDate',\r\n 'cost',\r\n 'currency',\r\n 'unit',\r\n 'unitsConsumed',\r\n 'meterId',\r\n 'meterName',\r\n 'resourceName',\r\n 'regionName',\r\n 'productName',\r\n 'tags',\r\n 'metaData',\r\n ];\r\n const values = records.value.map((i) =>\r\n csvHeaders.map((h) => {\r\n if (h === 'metaData' || h === 'tags') {\r\n return Object.entries(i[h])\r\n .map(([k, v]) => `${k}:${v}`)\r\n .join('|');\r\n } else {\r\n return i[h];\r\n }\r\n })\r\n );\r\n Downloader.exportCSV([csvHeaders, ...values], 'Usage.csv');\r\n };\r\n return { records, getServiceRawRecords, headers, expanded: [], sortBy, sortDesc, downloadAsJson, downloadAsCsv };\r\n },\r\n watch: {\r\n value: {\r\n handler(svc) {\r\n if (!svc) return;\r\n this.getServiceRawRecords(svc.serviceId);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawUsage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RawUsage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RawUsage.vue?vue&type=template&id=44e92c43&\"\nimport script from \"./RawUsage.vue?vue&type=script&lang=ts&\"\nexport * from \"./RawUsage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showSubscriptionDialog),callback:function ($$v) {_vm.showSubscriptionDialog=$$v},expression:\"showSubscriptionDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedSubscription,\"loading\":_vm.$wait.is('loadingSubscriptions')},on:{\"input\":function($event){return Object.assign(_vm.selectedSubscription, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"subscriptionsDialog.subscriptionNotFound\": \"There is no remaining reference to this subscription within the last 13 months of usage.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=7865b5d4&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"md\":\"8\",\"cols\":\"12\"}},[_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Subscription\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.subscriptionName : '...')+\" \"),(_vm.tenantStore.hasPermission('CanContribute'))?_c('subscription-manage-menu',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_vm._e(),_c('v-spacer')],1),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" Vendor Subscription Id: \"+_vm._s(_vm.value ? _vm.value.remoteId : '...')+\" \")]),(_vm.value)?_c('v-card-subtitle',{staticClass:\"my-0 pt-0 pb-2\"},[_c('subscription-metadata-chips',{attrs:{\"value\":_vm.value}})],1):_vm._e()],1),_c('v-col',{attrs:{\"md\":\"4\",\"cols\":\"12\"}},[_c('cost-summary-widget',{attrs:{\"actual-total\":_vm.forecast.actualTotal,\"projected-total\":_vm.forecast.projectedTotal,\"past-total\":_vm.forecast.pastTotal,\"currency-code\":_vm.tenantStore.currencyCode,\"spend-limit\":_vm.value ? _vm.value.monthlySpendLimit : 0}})],1)],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-badge',{attrs:{\"color\":\"secondary\",\"dot\":\"\",\"value\":tab.key === 'annotations' && _vm.value && _vm.value.annotationCount > 0}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",function(){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"depressed\":\"\"}},bindings.on),[_vm._v(\" manage\"),_c('v-icon',{attrs:{\"right\":\"\",\"x-small\":\"\"}},[_vm._v(\"menu_open\")])],1)]},null,bindings)]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.isEditingSpendLimit = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('subscriptionManageMenu.editSpendLimit'))+\" \")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){_vm.isEditingName = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('subscriptionManageMenu.editName'))+\" \")])],1)],1)],1)],1),_c('edit-subscription-name-dialog',{attrs:{\"subscription\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.isEditingName),callback:function ($$v) {_vm.isEditingName=$$v},expression:\"isEditingName\"}}),_c('edit-subscription-spend-limit-dialog',{attrs:{\"subscription\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.isEditingSpendLimit),callback:function ($$v) {_vm.isEditingSpendLimit=$$v},expression:\"isEditingSpendLimit\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('update-entity-name-card',{attrs:{\"value\":_vm.legacySubscriptionModel,\"loading\":_vm.$wait.is('updatingSubscriptionName')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('patch-subscription-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingSubscriptionName'),expression:\"'updatingSubscriptionName'\"}],attrs:{\"value\":_vm.subscription,\"patches\":[{ op: 'replace', path: 'subscriptionName', value: form.Name }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulRename(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":`/api/metadata/subscriptions/${(_vm.value || {}).subscriptionId}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchSubscriptionButton.errorMessage\": \"There was an error encountered while patching this subscription. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchSubscriptionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchSubscriptionButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchSubscriptionButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchSubscriptionButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PatchSubscriptionButton.vue?vue&type=template&id=0cae40e1&\"\nimport script from \"./PatchSubscriptionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PatchSubscriptionButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PatchSubscriptionButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditSubscriptionNameDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditSubscriptionNameDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditSubscriptionNameDialog.vue?vue&type=template&id=5acd3e3a&\"\nimport script from \"./EditSubscriptionNameDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditSubscriptionNameDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value,\"max-width\":\"600\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ open }){return [_c('update-entity-spend-limit-card',{attrs:{\"value\":_vm.subscription,\"loading\":_vm.$wait.is('updateSubscriptionSpendLimit')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return open()}}}),_c('v-spacer'),_c('patch-subscription-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updateSubscriptionSpendLimit'),expression:\"'updateSubscriptionSpendLimit'\"}],attrs:{\"value\":_vm.subscription,\"patches\":[{ op: 'replace', path: 'monthlySpendLimit', value: form.monthlySpendLimit }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":_vm.handleSuccessfulSpendLimit}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditSubscriptionSpendLimitDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditSubscriptionSpendLimitDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditSubscriptionSpendLimitDialog.vue?vue&type=template&id=01e7d682&\"\nimport script from \"./EditSubscriptionSpendLimitDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditSubscriptionSpendLimitDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"subscriptionManageMenu.editSpendLimit\": \"Set Spend Limit\",\r\n \"subscriptionManageMenu.editName\": \"Edit Name\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionManageMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionManageMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SubscriptionManageMenu.vue?vue&type=template&id=6e325745&\"\nimport script from \"./SubscriptionManageMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./SubscriptionManageMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SubscriptionManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\",\"alt\":\"Cloud Connection\"}},[_c('cloud-provider-type-icon',{attrs:{\"size\":\"20\",\"left\":\"\",\"value\":_vm.value.cloudProviderType}}),_vm._v(\" Cloud Connection: \"+_vm._s(_vm.value.cloudAccountName)+\" \")],1),(_vm.value.offerId)?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"shopping_cart\")]),_vm._v(\" OfferId: \"+_vm._s(_vm.value.offerId)+\" \")],1):_vm._e(),(_vm.value.domain)?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"domain\")]),_vm._v(\" Domain: \"+_vm._s(_vm.value.domain)+\" \")],1):_vm._e(),(_vm.value.customerName)?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"person\")]),_vm._v(\" Customer: \"+_vm._s(_vm.value.customerName)+\" \")],1):_vm._e(),(_vm.value.remoteId && _vm.value.cloudProviderType === 'Azure')?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\",\"color\":\"blue\",\"href\":`https://portal.azure.com/#${_vm.value.domain ? `${_vm.value.domain}/` : ''}resource/subscriptions/${\n _vm.value.remoteId\n }`,\"target\":\"_top\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"insert_link\")]),_vm._v(\" \"+_vm._s(_vm.$t('subscriptionMetadataChips.viewInAzure'))+\" \")],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n {\r\n \"en\": {\r\n \"subscriptionMetadataChips.viewInAzure\": \"View in Azure\"\r\n }\r\n }\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionMetadataChips.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionMetadataChips.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SubscriptionMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SubscriptionMetadataChips.vue?vue&type=template&id=d4f0fa10&\"\nimport script from \"./SubscriptionMetadataChips.vue?vue&type=script&lang=js&\"\nexport * from \"./SubscriptionMetadataChips.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SubscriptionMetadataChips.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport CostSummaryWidget from '@/components/Domain.Usage/CostSummaryWidget.vue';\r\nimport SubscriptionManageMenu from '@/components/Domain.Subscriptions/SubscriptionManageMenu.vue';\r\nimport SubscriptionMetadataChips from '@/components/Domain.Subscriptions/SubscriptionMetadataChips.vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport moment from '@/lib/moment';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { defineComponent, computed, ref } from 'vue';\r\n\r\nexport default defineComponent({\r\n components: { CostSummaryWidget, SubscriptionManageMenu, SubscriptionMetadataChips },\r\n props: {\r\n value: Object,\r\n loading: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() => {\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n return [\r\n hasUsageDataset\r\n ? { key: 'usage', icon: 'insights', text: 'views.dialogSubscription.tabs.usage' }\r\n : null,\r\n hasEmissionsDataset\r\n ? { key: 'carbon', icon: 'co2', text: 'views.dialogSubscription.tabs.carbon' }\r\n : null,\r\n { key: 'virtualtags', icon: 'sell', text: 'views.dialogSubscription.tabs.virtualtags' },\r\n hasUsageDataset\r\n ? { key: 'trends', icon: 'compare_arrows', text: 'views.dialogSubscription.tabs.trends' }\r\n : null,\r\n { key: 'annotations', icon: 'chat', text: 'views.dialogSubscription.tabs.annotations' },\r\n ].filter((t) => t);\r\n });\r\n const forecast = ref({\r\n actualTotal: 0,\r\n projectedTotal: 0,\r\n pastTotal: 0,\r\n });\r\n\r\n return { tabs, tab, forecast, tenantStore };\r\n },\r\n methods: {\r\n loadSubscriptionProjections: waitFor('loadingSubForecast', async function loadSubscriptionProjections(id) {\r\n const toDate = moment.utc().endOf('month');\r\n const params = { toDate: toDate.format(), subscriptionIds: [id].join(), granularity: 'Daily' };\r\n const response = await ApiV2.http\r\n .get('/api/forecast', { params })\r\n .catch((err) => {\r\n if (err.response.status === 400) return { data: {} };\r\n throw err;\r\n })\r\n .then((r) => r.data);\r\n const year = toDate.format('YYYY');\r\n const month = toDate.format('MM');\r\n const previousDate = moment.utc().subtract(1, 'months').endOf('month');\r\n const prevYear = previousDate.format('YYYY');\r\n const prevMonth = previousDate.format('MM');\r\n this.forecast.actualTotal = response.monthlySpendTotals?.[year]?.[month] || 0;\r\n this.forecast.projectedTotal =\r\n this.forecast.actualTotal + response.monthlyForecastTotals?.[year]?.[month] || 0;\r\n this.forecast.pastTotal = response.monthlySpendTotals?.[prevYear]?.[prevMonth] || 0;\r\n }),\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.loadSubscriptionProjections(val.subscriptionId);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=73c300ed&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('usage-comparison-options-toolbar',{attrs:{\"loading\":_vm.$wait.is('loadServiceComparisons'),\"segregate-types\":['products', 'services']},on:{\"input\":function($event){return _vm.loadServiceComparisons()}},model:{value:(_vm.configuration),callback:function ($$v) {_vm.configuration=$$v},expression:\"configuration\"}}),(_vm.configuration.segregateBy === 'services')?_c('service-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):(_vm.configuration.segregateBy === 'products')?_c('product-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Trends.vue?vue&type=template&id=2a861cb7&\"\nimport script from \"./Trends.vue?vue&type=script&lang=js&\"\nexport * from \"./Trends.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getSubscriptionUsage'),\"hide-search\":\"\"},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getSubscriptionUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, ISubscriptionMetaResult, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageTable,\r\n SpendUsageUnitToggle,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n },\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({ segregateBy: PluralEntityType.productCategories });\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.tag,EntityType.region,EntityType.geography,]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.productCategories,\r\n PluralEntityType.products,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getSubscriptionUsage', async () => {\r\n const { subscriptionId } = p.value as ISubscriptionMetaResult;\r\n const options: SpendUsageOptions = { ...spendOptions.value, subscriptionIds: [subscriptionId] };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getSubscriptionUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, subscriptionIds: [] };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=3938b676&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getSubscriptionCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getSubscriptionCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, onUnmounted, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport {\r\n EntityType,\r\n PluralEntityType,\r\n ISubscriptionMetaResult,\r\n} from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.products})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.tag]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.services\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getSubscriptionCO2e\", async () => {\r\n const { subscriptionId } = p.value as ISubscriptionMetaResult;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n subscriptionIds: [subscriptionId],\r\n };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey),\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getSubscriptionCO2e\")) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, subscriptionIds: [] };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=3d605b75&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('add-annotation-dialog',{attrs:{\"subscriptionId\":_vm.subscriptionId},on:{\"http2xx\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.annotations.length > 0 && _vm.tenantStore.hasPermission('CanContribute')),expression:\"annotations.length > 0 && tenantStore.hasPermission('CanContribute')\"}],staticClass:\"ml-3\",attrs:{\"color\":\"secondary\",\"fab\":\"\",\"depressed\":\"\",\"small\":\"\"}},on),[_c('v-icon',[_vm._v(\"add\")])],1)]}}]),model:{value:(_vm.dialogs.isAddingAnnotation),callback:function ($$v) {_vm.$set(_vm.dialogs, \"isAddingAnnotation\", $$v)},expression:\"dialogs.isAddingAnnotation\"}})],1),_c('annotations-timeline',{attrs:{\"annotations\":_vm.annotations,\"subscriptionId\":_vm.subscriptionId,\"allowEdit\":true,\"loading\":_vm.loading || _vm.$wait.is(['getAnnotations'])},on:{\"onAnnotationChangeSuccess\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"no-data\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.dialogs.isAddingAnnotation = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]},proxy:true}:null],null,true)}),(_vm.hasMore)?_c('div',{staticClass:\"text-center\"},[_c('v-btn',{staticClass:\"mt-2\",attrs:{\"small\":\"\",\"depressed\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.loadMore()}}},[_vm._v(\" \"+_vm._s(_vm.$t('annotations.loadMoreButton'))+\" \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Annotations.vue?vue&type=template&id=35060a38&\"\nimport script from \"./Annotations.vue?vue&type=script&lang=js&\"\nexport * from \"./Annotations.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-alert',{staticClass:\"mt-3\",attrs:{\"border\":\"left\",\"text\":\"\",\"type\":\"warning\",\"elevation\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('subscriptionDialog.virtualTags.sourceDescription'))+\" \")]),_c('virtual-tag-table',{attrs:{\"loading\":_vm.$wait.is(['getSubscriptionAccountVirtualTags', 'addSubscriptionTag']),\"items\":_vm.virtualTags},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, form, loading, reset }){return [_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!isValid || loading,\"loading\":loading,\"form\":formId,\"text\":\"\"},on:{\"click\":function($event){_vm.addSubscriptionTag(form).then(reset)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}},{key:\"item\",fn:function({ item }){return [_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\",\"loading\":_vm.$wait.is('deleteSubscriptionTag')},on:{\"click\":function($event){return _vm.deleteSubscriptionTag(item)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"delete\")]),_vm._v(\" Drop \")],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"subscriptionDialog.virtualTags.sourceDescription\": \"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\r\n \"subscriptionDialog.virtualTags.errorCreating\": \"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\r\n \"subscriptionDialog.virtualTags.successCreating\": \"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\r\n \"subscriptionDialog.virtualTags.errorDeleting\": \"There was an error deleting this virtual tag. Please refresh this page and try again.\",\r\n \"subscriptionDialog.virtualTags.successDeleting\": \"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./VirtualTags.vue?vue&type=template&id=73cb437e&\"\nimport script from \"./VirtualTags.vue?vue&type=script&lang=js&\"\nexport * from \"./VirtualTags.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showProductDialog),callback:function ($$v) {_vm.showProductDialog=$$v},expression:\"showProductDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedProduct,\"loading\":_vm.$wait.is('loadingProducts')},on:{\"input\":function($event){return Object.assign(_vm.selectedProduct, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref } from 'vue';\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showProductDialog = ref(false);\r\n const showProductId = ref(null);\r\n const selectedProduct = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showProductDialog.value = false;\r\n showProductId.value = null;\r\n selectedProduct.value = null;\r\n }\r\n emit('input', isOpen);\r\n };\r\n\r\n const loadProductDetails = waitFor('loadingProducts', async function (id: string) {\r\n try {\r\n selectedProduct.value = await ApiV2.http.get(`/api/metadata/products/${id}`).then((r) => r.data);\r\n this.$title = selectedProduct.value.productName;\r\n } catch (err) {\r\n toastError(this.$t('productDialog.productNotFound'));\r\n tryCloseDialog(false);\r\n }\r\n });\r\n\r\n return {\r\n showProductDialog,\r\n showProductId,\r\n selectedProduct,\r\n tryCloseDialog,\r\n loadProductDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showProductId === to.params.productId) return;\r\n this.showProductId = to.params.productId || null;\r\n this.showProductDialog = !!this.showProductId;\r\n if (this.selectedProduct && this.selectedProduct.productId === this.showProductId) return;\r\n if (!this.showProductId) return;\r\n this.loadProductDetails(this.showProductId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=fd4a1b02&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Product\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.productName : '...')+\" \"),(_vm.tenantStore.hasPermission('CanContribute'))?_c('product-manage-menu',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_vm._e()],1),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.cloudProviderType : '...')+\" \")]),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",function(){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"depressed\":\"\"}},bindings.on),[_vm._v(\" manage\"),_c('v-icon',{attrs:{\"right\":\"\",\"x-small\":\"\"}},[_vm._v(\"menu_open\")])],1)]},null,bindings)]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.isEditingSpendLimit = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('productManageMenu.editSpendLimit'))+\" \")])],1)],1)],1)],1),_c('edit-product-spend-limit-dialog',{attrs:{\"product\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.isEditingSpendLimit),callback:function ($$v) {_vm.isEditingSpendLimit=$$v},expression:\"isEditingSpendLimit\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value,\"max-width\":\"600\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ open }){return [_c('update-entity-spend-limit-card',{attrs:{\"value\":_vm.product,\"loading\":_vm.$wait.is('updateProductSpendLimit')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return open()}}}),_c('v-spacer'),_c('patch-product-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updateProductSpendLimit'),expression:\"'updateProductSpendLimit'\"}],attrs:{\"value\":_vm.product,\"patches\":[{ op: 'replace', path: 'monthlySpendLimit', value: form.monthlySpendLimit }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":_vm.handleSuccessfulSpendLimit}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":`/api/metadata/products/${(_vm.value || {}).productId}`},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchProductButton.errorMessage\": \"There was an error encountered while patching this product. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchProductButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchProductButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchProductButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchProductButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PatchProductButton.vue?vue&type=template&id=26729526&\"\nimport script from \"./PatchProductButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PatchProductButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PatchProductButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditProductSpendLimitDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditProductSpendLimitDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditProductSpendLimitDialog.vue?vue&type=template&id=93247788&\"\nimport script from \"./EditProductSpendLimitDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProductSpendLimitDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"productManageMenu.editSpendLimit\": \"Set Spend Limit\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductManageMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductManageMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ProductManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ProductManageMenu.vue?vue&type=template&id=73727542&\"\nimport script from \"./ProductManageMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductManageMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ProductManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, computed } from 'vue';\r\nimport ProductManageMenu from '@/components/Domain.Products/ProductManageMenu.vue';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\n\r\nexport default defineComponent({\r\n components: { ProductManageMenu },\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() => {\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n return [\r\n hasUsageDataset ? { key: 'usage', icon: 'insights', text: 'views.dialogProduct.tabs.usage' } : null,\r\n hasEmissionsDataset ? { key: 'carbon', icon: 'co2', text: 'views.dialogProduct.tabs.carbon' } : null,\r\n hasUsageDataset ?{ key: 'trends', icon: 'compare_arrows', text: 'views.dialogProduct.tabs.trends' } : null,\r\n ].filter((t) => t);\r\n });\r\n\r\n return { tab, tabs, tenantStore };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=eccc3eca&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getProductUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity,\"allow-range-selection\":true},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getProductUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, IProductModel, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\n\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n }\r\n },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.services})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.subscription, EntityType.tag, EntityType.geography, EntityType.cloudProvider]);\r\n const segregationSupportedKeys = ref([PluralEntityType.services, PluralEntityType.meters]);\r\n const loadTabUsage = async () =>\r\n await whilst('getProductUsage', async () => {\r\n const { productId } = p.value as IProductModel;\r\n const options: SpendUsageOptions = { ...spendOptions.value, productId };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, usageResponse, options.costView);\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getProductUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, productId: undefined };\r\n filterStore.setFilter(options);\r\n })\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=9af313ee&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getProductCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getProductCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, onUnmounted, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, IProductModel } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.services})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getProductCO2e\", async () => {\r\n const { productId } = p.value as IProductModel;\r\n const options: SpendUsageOptions = { ...spendOptions.value, productId };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey)\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getProductCO2e\")) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n \r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, productId: undefined };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=a308da6e&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('usage-comparison-options-toolbar',{attrs:{\"loading\":_vm.$wait.is('loadServiceComparisons'),\"segregate-types\":['services']},on:{\"input\":function($event){return _vm.loadServiceComparisons()}},model:{value:(_vm.configuration),callback:function ($$v) {_vm.configuration=$$v},expression:\"configuration\"}}),_c('service-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { waitFor } from \"@/plugins/vue-wait\";\r\nimport { getTrends } from \"@/lib/Api\";\r\nimport { PluralEntityType } from \"@/models\";\r\nimport ServiceComparisonsTable from \"@/components/Domain.Services/ServiceComparisonsTable.vue\";\r\nimport UsageComparisonOptionsToolbar from \"@/components/Domain.Usage/UsageComparisonOptionsToolbar.vue\";\r\nimport { defineComponent, ref } from \"vue\";\r\nimport { useTenantStore } from \"@/stores/tenant\";\r\n\r\nexport default defineComponent({\r\n components: { ServiceComparisonsTable, UsageComparisonOptionsToolbar },\r\n props: {\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup(props) {\r\n const comparisons = ref([]);\r\n const configuration = ref({\r\n segregateBy: PluralEntityType.services,\r\n period: \"month\",\r\n toDate: new Date(),\r\n });\r\n const loadServiceComparisons = waitFor(\r\n \"loadServiceComparisons\",\r\n async function loadServiceComparisonsFn() {\r\n if (!props.value) return;\r\n const params = {\r\n productIds: props.value.productInd,\r\n period: configuration.value.period,\r\n toDate: configuration.value.toDate.toISOString(),\r\n };\r\n const segregateBy = configuration.value.segregateBy as\r\n | PluralEntityType.services\r\n | PluralEntityType.products;\r\n const response = await getTrends(segregateBy, params);\r\n comparisons.value = response.entities;\r\n }\r\n );\r\n\r\n const tenantStore = useTenantStore();\r\n\r\n return {\r\n comparisons,\r\n configuration,\r\n loadServiceComparisons,\r\n tenantStore,\r\n };\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.loadServiceComparisons();\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Trends.vue?vue&type=template&id=41d276f2&\"\nimport script from \"./Trends.vue?vue&type=script&lang=ts&\"\nexport * from \"./Trends.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showRegionDialog),callback:function ($$v) {_vm.showRegionDialog=$$v},expression:\"showRegionDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedRegion,\"loading\":_vm.$wait.is('loadingRegions')},on:{\"input\":function($event){return Object.assign(_vm.selectedRegion, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref } from 'vue';\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showRegionDialog = ref(false);\r\n const showRegionId = ref(null);\r\n const selectedRegion = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showRegionDialog.value = false;\r\n showRegionId.value = null;\r\n selectedRegion.value = null;\r\n }\r\n emit('input', isOpen);\r\n };\r\n\r\n const loadRegionDetails = waitFor('loadingRegions', async function (id: string) {\r\n try {\r\n selectedRegion.value = await ApiV2.http.get(`/api/regions/${id}`).then((r) => r.data);\r\n this.$title = selectedRegion.value.name;\r\n } catch (err) {\r\n toastError(this.$t('regionDialog.regionNotFound'));\r\n tryCloseDialog(false);\r\n }\r\n });\r\n\r\n return {\r\n showRegionDialog,\r\n showRegionId,\r\n selectedRegion,\r\n tryCloseDialog,\r\n loadRegionDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showRegionId === to.params.regionId) return;\r\n this.showRegionId = to.params.regionId || null;\r\n this.showRegionDialog = !!this.showRegionId;\r\n if (this.selectedRegion && this.selectedRegion.regionId === this.showRegionId) return;\r\n if (!this.showRegionId) return;\r\n this.loadRegionDetails(this.showRegionId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=0c1f138e&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Region\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.name : '...')+\" \")],1),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.providerType : '...')+\" \")]),(_vm.value)?_c('v-card-subtitle',{staticClass:\"my-0 pt-0 pb-2\"},[_c('region-metadata-chips',{attrs:{\"value\":_vm.value}})],1):_vm._e(),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"place\")]),_vm._v(\" Geography: \"+_vm._s(_vm.value.geography)+\" \")],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionMetadataChips.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegionMetadataChips.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RegionMetadataChips.vue?vue&type=template&id=757c2286&\"\nimport script from \"./RegionMetadataChips.vue?vue&type=script&lang=js&\"\nexport * from \"./RegionMetadataChips.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, computed } from 'vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport RegionMetadataChips from '@/components/Domain.Regions/RegionMetadataChips.vue';\r\n\r\nexport default defineComponent({\r\n components: { RegionMetadataChips },\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() =>\r\n [\r\n { key: 'usage', icon: 'insights', text: 'views.dialogRegion.tabs.usage' },\r\n tenantStore.hasTenantFeature('EmissionsAndEnergy')\r\n ? { key: 'carbon', icon: 'co2', text: 'views.dialogRegion.tabs.carbon' }\r\n : null,\r\n ].filter((t) => t)\r\n );\r\n return { tab, tabs, tenantStore };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=4d1117bb&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getRegionUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getRegionUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, IRegionResult, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.products})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.subscription, EntityType.tag]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getRegionUsage', async () => {\r\n const { name, geography } = p.value as IRegionResult;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n regionName: name,\r\n geographyName: geography,\r\n };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, {\r\n reportType: UsageReportTypes.charges,\r\n });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getRegionUsage')) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=76a91313&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getRegionCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getRegionCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, ref, watch } from \"vue\";\r\nimport { getCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, IRegionResult, Granularity } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const spendOptions = ref({\r\n dateRangeKey: \"60d\",\r\n forecastRangeKey: '7d',\r\n granularity: Granularity.daily,\r\n topXResults: 10,\r\n segregateBy: PluralEntityType.products,\r\n });\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getRegionCO2e\", async () => {\r\n const { name, geography } = p.value as IRegionResult;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n regionName: name,\r\n geographyName: geography,\r\n };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n newChartData.value = {\r\n labels: [...usageDataset.labels],\r\n datasets: [...usageDataset.datasets],\r\n };\r\n maxDate.value = params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getRegionCO2e\")) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=54712734&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showProductCategoryDialog),callback:function ($$v) {_vm.showProductCategoryDialog=$$v},expression:\"showProductCategoryDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedProductCategory,\"loading\":false},on:{\"input\":function($event){return Object.assign(_vm.selectedProductCategory, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { IProductCategoryModel } from '@/models';\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showProductCategoryDialog = ref(false);\r\n const showProductCategoryId = ref(null);\r\n const selectedProductCategory = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showProductCategoryDialog.value = false;\r\n showProductCategoryId.value = null;\r\n selectedProductCategory.value = null;\r\n }\r\n emit('input', isOpen);\r\n };\r\n\r\n const loadProductCategoryDetails = function (id: string) {\r\n const productCategoryName = id\r\n .split(':')\r\n .reverse()\r\n .find((x: string) => x);\r\n selectedProductCategory.value = { productCategoryName };\r\n this.$title = productCategoryName;\r\n };\r\n\r\n return {\r\n showProductCategoryDialog,\r\n showProductCategoryId,\r\n selectedProductCategory,\r\n tryCloseDialog,\r\n loadProductCategoryDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showProductCategoryId === to.params.productCategoryId) return;\r\n this.showProductCategoryId = to.params.productCategoryId || null;\r\n this.showProductCategoryDialog = !!this.showProductCategoryId;\r\n if (\r\n this.selectedProductCategory &&\r\n this.selectedProductCategory.productCategoryId === this.showProductCategoryId\r\n )\r\n return;\r\n if (!this.showProductCategoryId) return;\r\n this.loadProductCategoryDetails(this.showProductCategoryId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=38ad2012&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"ProductCategory\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.productCategoryName : '...')+\" \")],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tabs = [\r\n { key: 'usage', icon: 'insights', text: 'views.dialogProductCategory.tabs.usage' }\r\n ];\r\n return { tab, tabs };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=12e27ceb&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getProductUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getProductUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore, mapStores } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n CostView,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, IProductCategoryModel, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n },\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({ segregateBy: PluralEntityType.products });\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.product,\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.tag,\r\n EntityType.region,\r\n EntityType.geography,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getProductUsage', async () => {\r\n const { productCategoryName } = p.value as IProductCategoryModel;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n productCategory: `\"${productCategoryName}\"`,\r\n };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getProductUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=5e912376&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showCloudProviderDialog),callback:function ($$v) {_vm.showCloudProviderDialog=$$v},expression:\"showCloudProviderDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedCloudProvider,\"loading\":false},on:{\"input\":function($event){return Object.assign(_vm.selectedCloudProvider, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport { CloudProviderType } from \"@/models\";\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showCloudProviderDialog = ref(false);\r\n const showCloudProviderId = ref(null);\r\n const selectedCloudProvider = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showCloudProviderDialog.value = false;\r\n showCloudProviderId.value = null;\r\n selectedCloudProvider.value = null;\r\n }\r\n emit(\"input\", isOpen);\r\n };\r\n\r\n const loadCloudProviderDetails = function (id: string) {\r\n selectedCloudProvider.value = id as CloudProviderType;\r\n this.$title = id;\r\n };\r\n\r\n return {\r\n showCloudProviderDialog,\r\n showCloudProviderId,\r\n selectedCloudProvider,\r\n tryCloseDialog,\r\n loadCloudProviderDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showCloudProviderId === to.params.cloudProviderId) return;\r\n this.showCloudProviderId = to.params.cloudProviderId || null;\r\n this.showCloudProviderDialog = !!this.showCloudProviderId;\r\n if (\r\n this.selectedCloudProvider &&\r\n this.selectedCloudProvider.cloudProviderId === this.showCloudProviderId\r\n )\r\n return;\r\n if (!this.showCloudProviderId) return;\r\n this.loadCloudProviderDetails(this.showCloudProviderId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=039bedcb&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"CloudProvider\"}}),_vm._v(\" \"+_vm._s(_vm.value || \"...\")+\" \")],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from \"vue\";\r\n\r\nexport default defineComponent({\r\n props: {\r\n me: Object,\r\n value: String,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tabs = [\r\n { key: \"usage\", icon: \"insights\", text: \"views.dialogCloudProvider.tabs.usage\" },\r\n ];\r\n return { tab, tabs };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=12cd7531&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getCloudProviderUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getCloudProviderUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, CloudProviderType, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n },\r\n },\r\n props: { value: String, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({ segregateBy: PluralEntityType.products });\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.product,\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getCloudProviderUsage', async () => {\r\n const cloudProviderType = p.value as CloudProviderType;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n providerType: cloudProviderType,\r\n };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n });\r\n\r\n const handleDatasetClicked = ({ isOther, name, datasetGroupId }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else if (!Array.isArray(spendOptions.value.segregateBy)) {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getCloudProviderUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, providerType: undefined };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=ac9ed0ae&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showGeographyDialog),callback:function ($$v) {_vm.showGeographyDialog=$$v},expression:\"showGeographyDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedGeography,\"loading\":false},on:{\"input\":function($event){return Object.assign(_vm.selectedGeography, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { CloudProviderType, IGeographyModel } from '@/models';\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showGeographyDialog = ref(false);\r\n const showGeographyId = ref(null);\r\n const selectedGeography = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showGeographyDialog.value = false;\r\n showGeographyId.value = null;\r\n selectedGeography.value = null;\r\n }\r\n emit('input', isOpen);\r\n };\r\n\r\n const loadGeographyDetails = function (id: string) {\r\n const [providerType, geographyName] = id.split(':') as [CloudProviderType, string];\r\n selectedGeography.value = { providerType, geographyName };\r\n this.$title = geographyName;\r\n };\r\n\r\n return {\r\n showGeographyDialog,\r\n showGeographyId,\r\n selectedGeography,\r\n tryCloseDialog,\r\n loadGeographyDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showGeographyId === to.params.geographyId) return;\r\n this.showGeographyId = to.params.geographyId || null;\r\n this.showGeographyDialog = !!this.showGeographyId;\r\n if (this.selectedGeography && this.selectedGeography.geographyId === this.showGeographyId) return;\r\n if (!this.showGeographyId) return;\r\n this.loadGeographyDetails(this.showGeographyId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=77d47473&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Geography\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.geographyName : '...')+\" \")],1),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.providerType : '...')+\" \")]),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent , computed} from 'vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\n\r\nexport default defineComponent({\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() =>\r\n [\r\n { key: 'usage', icon: 'insights', text: 'views.dialogGeography.tabs.usage' },\r\n tenantStore.hasTenantFeature('EmissionsAndEnergy')\r\n ? { key: 'carbon', icon: 'co2', text: 'views.dialogGeography.tabs.carbon' }\r\n : null,\r\n ].filter((t) => t)\r\n );\r\n return { tab, tabs };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=2b9f759a&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getGeographyUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getGeographyUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, IGeographyModel, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.regions});\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.subscription, EntityType.tag]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.regions,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getGeographyUsage', async () => {\r\n const { geographyName, providerType } = p.value as IGeographyModel;\r\n const options: SpendUsageOptions = { ...spendOptions.value, geographyName, providerType };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, {\r\n reportType: UsageReportTypes.charges,\r\n });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n });\r\n\r\n const handleDatasetClicked = ({ isOther, name, datasetGroupId }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getGeographyUsage')) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=71acae02&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getGeographyCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getGeographyCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, IGeographyModel, Granularity } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const spendOptions = ref({\r\n dateRangeKey: \"60d\",\r\n forecastRangeKey: '7d',\r\n granularity: Granularity.daily,\r\n topXResults: 10,\r\n segregateBy: PluralEntityType.regions,\r\n });\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.service,\r\n EntityType.subscription,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.regions,\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getGeographyCO2e\", async () => {\r\n const { geographyName, providerType } = p.value as IGeographyModel;\r\n const options: SpendUsageOptions = {\r\n ...spendOptions.value,\r\n geographyName,\r\n providerType,\r\n };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey)\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getGeographyCO2e\")) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=5c0a59be&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showTagDialog),callback:function ($$v) {_vm.showTagDialog=$$v},expression:\"showTagDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedTag,\"loading\":_vm.$wait.is('loadingTag')},on:{\"input\":function($event){return Object.assign(_vm.selectedTag, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { defineComponent, ref } from 'vue';\r\nimport { ITagMetadataResult } from '@/models';\r\n\r\nexport default defineComponent({\r\n setup(_, { emit }) {\r\n const showTagDialog = ref(false);\r\n const showTagId = ref(null);\r\n const selectedTag = ref(null);\r\n\r\n const tryCloseDialog = (isOpen: boolean) => {\r\n if (!isOpen) {\r\n showTagDialog.value = false;\r\n showTagId.value = null;\r\n selectedTag.value = null;\r\n }\r\n emit('input', isOpen);\r\n };\r\n\r\n const loadTagDetails = async (id: string) => {\r\n selectedTag.value = await ApiV2.http.get(`/api/metadata/tagkeyvalue/${id}`).then((r) => r.data);\r\n };\r\n\r\n return {\r\n showTagDialog,\r\n showTagId,\r\n selectedTag,\r\n tryCloseDialog,\r\n loadTagDetails,\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n // Need to handle routes that are Envionrment:Blah or Blah\r\n if (!to.params.tagId) {\r\n this.showTagId = null;\r\n return;\r\n }\r\n const tagIdParts:string[] = (to.params.tagId || '').split(':');\r\n const tagKeyPart = tagIdParts.length === 1 ? to.params.tagkey : (tagIdParts[0] || to.params.tagkey);\r\n const tagValuePart = tagIdParts.length === 1 ? to.params.tagId : tagIdParts.slice(1).join(':');\r\n const referencedTagKeyValue = `${tagKeyPart}:${tagValuePart}`;\r\n if (this.showTagId === referencedTagKeyValue) return;\r\n this.showTagId = referencedTagKeyValue || null;\r\n this.showTagDialog = !!this.showTagId;\r\n if (this.selectedTag && this.selectedTag.tagKeyValue === this.showTagId) return;\r\n if (!this.showTagId) return;\r\n this.loadTagDetails(this.showTagId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=484be868&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"TagKey\"}}),_vm._v(\" \"+_vm._s(_vm.tagName)+\" \"),(_vm.tenantStore.hasPermission('CanContribute'))?_c('tag-key-value-manage-menu',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}}}):_vm._e()],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":{\n path: tab.key,\n query: _vm.$route.query,\n }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",function(){return [_c('v-btn',_vm._g({staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"depressed\":\"\"}},bindings.on),[_vm._v(\" manage\"),_c('v-icon',{attrs:{\"right\":\"\",\"x-small\":\"\"}},[_vm._v(\"menu_open\")])],1)]},null,bindings)]}}],null,true),model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.isEditingSpendLimit = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('tagKeyValueManageMenu.editSpendLimit'))+\" \")])],1)],1),(!_vm.isDimension)?_c('v-list-item',{on:{\"click\":_vm.tryPromoteToDimension}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"publish\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('tagKeyValueManageMenu.promoteToDimension'))+\" \")])],1)],1):_c('v-list-item',{on:{\"click\":_vm.tryDemoteToTagKey}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"unpublished\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('tagKeyValueManageMenu.demoteToTagKey'))+\" \")])],1)],1)],1)],1),_c('edit-tag-key-value-spend-limit-dialog',{attrs:{\"tagkeyvalue\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('input', $event)}},model:{value:(_vm.isEditingSpendLimit),callback:function ($$v) {_vm.isEditingSpendLimit=$$v},expression:\"isEditingSpendLimit\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value,\"max-width\":\"600\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ open }){return [_c('update-entity-spend-limit-card',{attrs:{\"value\":_vm.tagkeyvalue,\"loading\":_vm.$wait.is('updateTagKeyValueSpendLimit')},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return open()}}}),_c('v-spacer'),_c('patch-tag-key-value-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updateTagKeyValueSpendLimit'),expression:\"'updateTagKeyValueSpendLimit'\"}],attrs:{\"value\":_vm.tagkeyvalue,\"patches\":[{ op: 'replace', path: 'monthlySpendLimit', value: form.monthlySpendLimit }],\"form\":formId,\"clear\":() => {},\"valid\":isValid,\"loading\":loading},on:{\"http2xx\":_vm.handleSuccessfulSpendLimit}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-patch-button',_vm._g(_vm._b({attrs:{\"value\":_vm.patches,\"href\":`/api/metadata/tagkeyvalue/${(_vm.value || {}).tagKeyValue}`},on:{\"http4xx\":_vm.onError}},'http-patch-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"patchTagButton.errorMessage\": \"There was an error encountered while patching this tag keyvalue. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchTagKeyValueButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchTagKeyValueButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchTagKeyValueButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PatchTagKeyValueButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PatchTagKeyValueButton.vue?vue&type=template&id=46fb1c4e&\"\nimport script from \"./PatchTagKeyValueButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PatchTagKeyValueButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PatchTagKeyValueButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditTagKeyValueSpendLimitDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditTagKeyValueSpendLimitDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditTagKeyValueSpendLimitDialog.vue?vue&type=template&id=1379ba5e&\"\nimport script from \"./EditTagKeyValueSpendLimitDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./EditTagKeyValueSpendLimitDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"tagKeyValueManageMenu.editSpendLimit\": \"Set Spend Limit\",\r\n \"tagKeyValueManageMenu.promoteToDimension\": \"Promote to Dimension!\",\r\n \"tagKeyValueManageMenu.demoteToTagKey\": \"Demote to Tag Key!\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyValueManageMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyValueManageMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyValueManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagKeyValueManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./TagKeyValueManageMenu.vue?vue&type=template&id=18d462e5&\"\nimport script from \"./TagKeyValueManageMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./TagKeyValueManageMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./TagKeyValueManageMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, computed } from 'vue';\r\nimport TagKeyValueManageMenu from '@/components/Domain.Tags/TagKeyValueManageMenu.vue';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\n\r\nexport default defineComponent({\r\n components: { TagKeyValueManageMenu },\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() => {\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n return [\r\n hasUsageDataset ? { key: 'usage', icon: 'insights', text: 'views.dialogTag.tabs.usage' } : null,\r\n hasUsageDataset ? { key: 'trends', icon: 'compare_arrows', text: 'views.dialogTag.tabs.trends' } : null,\r\n hasEmissionsDataset ? { key: 'carbon', icon: 'co2', text: 'views.dialogTag.tabs.carbon' } : null,\r\n ].filter((t) => t);\r\n });\r\n return { tab, tabs, tenantStore };\r\n },\r\n computed: {\r\n tagName() {\r\n return (this.value?.tagKeyValue ?? \"...\").replace(\"(Blanks)\",\"\");\r\n }\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=18a8d8d5&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"},scopedSlots:_vm._u([(_vm.filters.length > 1)?{key:\"extension\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true)},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getTagUsage'),\"hide-search\":_vm.filters.length > 1},scopedSlots:_vm._u([{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}]),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getTagUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, ITagMetadataResult, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n }\r\n },\r\n watch: {\r\n $route: {\r\n handler(url) {\r\n url.query.tagKeyValues?.split(',').forEach((tkv : string) => {\r\n this.filters.push({ type: EntityType.tag, name: tkv, id: tkv });\r\n });\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.productCategories})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.service, EntityType.subscription, EntityType.region, EntityType.geography, EntityType.cloudProvider]);\r\n const segregationSupportedKeys = ref([PluralEntityType.services, PluralEntityType.meters]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getTagUsage', async () => {\r\n const { tagKeyValue } = p.value as ITagMetadataResult;\r\n const options: SpendUsageOptions = { ...spendOptions.value, tagKeyValue };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, usageResponse, options.costView);\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else if (!Array.isArray(spendOptions.value.segregateBy)) {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getTagUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, tagKeyValue: undefined };\r\n filterStore.setFilter(options);\r\n })\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore,\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=2525fa48&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"},scopedSlots:_vm._u([(_vm.filters.length > 1)?{key:\"extension\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true)},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getTagCO2e'),\"hide-search\":_vm.filters.length > 1},scopedSlots:_vm._u([{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}]),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getTagCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, onUnmounted, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, ITagMetadataResult } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n watch: {\r\n $route: {\r\n handler(url) {\r\n url.query.tagKeyValues?.split(',').forEach((tkv : string) => {\r\n this.filters.push({ type: EntityType.tag, name: tkv, id: tkv });\r\n });\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.products})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.service,\r\n EntityType.subscription,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.services,\r\n PluralEntityType.meters,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getTagCO2e\", async () => {\r\n const { tagKeyValue } = p.value as ITagMetadataResult;\r\n const options: SpendUsageOptions = { ...spendOptions.value, tagKeyValue };\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey),\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getTagCO2e\")) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, tagKeyValue: undefined };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=4e7393d6&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[(_vm.filters.length > 0)?_c('AdditionalFiltersNotSupported',{attrs:{\"filters\":_vm.filters,\"tag-key-value\":_vm.tagKeyValue}}):_vm._e(),_c('usage-comparison-options-toolbar',{attrs:{\"filters\":_vm.filters,\"loading\":_vm.$wait.is('loadSpendComparisons'),\"segregate-types\":['services', 'products']},on:{\"input\":function($event){return _vm.loadSpendComparisons()}},model:{value:(_vm.configuration),callback:function ($$v) {_vm.configuration=$$v},expression:\"configuration\"}}),(_vm.configuration.segregateBy === 'services')?_c('service-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):(_vm.configuration.segregateBy === 'products')?_c('product-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-alert',{staticClass:\"mt-3\",attrs:{\"border\":\"left\",\"colored-border\":\"\",\"type\":\"warning\",\"text\":\"\",\"dismissible\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_vm._v(\" Only showing trends for \"),_c('code',[_vm._v(_vm._s(_vm.tagKeyValue.tagKeyValue))]),_c('v-spacer'),_vm._v(\" Trends does not currently support additional filters \"),_c('code',[_vm._v(_vm._s(_vm.filterText))]),_c('v-spacer'),(_vm.showSupportEmail)?_c('span',[_vm._v(\" Use the support button to let us know if you would like to see this feature added \")]):_vm._e()],1),(_vm.showSupportEmail)?_c('v-col',{staticClass:\"shrink\"},[_c('v-btn',{attrs:{\"href\":`mailto:${_vm.supportEmail}?subject=Feature request: additional filters`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Support \")],1)],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { computed, defineComponent, PropType } from 'vue';\r\nimport { ITagMetadataResult } from '@/models';\r\nimport { IChipViewModel } from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport Config from '@/lib/Config';\r\n\r\nexport default defineComponent({\r\n props: {\r\n filters: {\r\n type: Object as PropType,\r\n required: true\r\n },\r\n tagKeyValue: {\r\n type: Object as PropType,\r\n required: true\r\n }\r\n },\r\n setup(props) {\r\n const filterText = computed(() => {\r\n return props.filters.map((item: IChipViewModel) => item.id.split(\":\")[0]).join(\", \");\r\n })\r\n\r\n return {\r\n filterText,\r\n supportEmail: Config.get().SUPPORT_EMAIL,\r\n showSupportEmail: Config.isFeatureEnabled('ShowSupportButton') && Config.get().SUPPORT_EMAIL,\r\n };\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdditionalFiltersNotSupported.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdditionalFiltersNotSupported.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdditionalFiltersNotSupported.vue?vue&type=template&id=2774807a&\"\nimport script from \"./AdditionalFiltersNotSupported.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdditionalFiltersNotSupported.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport ServiceComparisonsTable from '@/components/Domain.Services/ServiceComparisonsTable.vue';\r\nimport ProductComparisonsTable from '@/components/Domain.Products/ProductComparisonsTable.vue';\r\nimport UsageComparisonOptionsToolbar from '@/components/Domain.Usage/UsageComparisonOptionsToolbar.vue';\r\nimport { defineComponent, ref } from 'vue';\r\nimport { useTenantStore } from '../../stores/tenant';\r\nimport { EntityType, ITagMetadataResult } from '@/models';\r\nimport { IChipViewModel } from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport AdditionalFiltersNotSupported from '@/views/Dialog.Tag/AdditionalFiltersNotSupported.vue';\r\n\r\nexport default defineComponent({\r\n computed: {\r\n EntityType() {\r\n return EntityType\r\n }\r\n },\r\n components: { AdditionalFiltersNotSupported, ServiceComparisonsTable, ProductComparisonsTable, UsageComparisonOptionsToolbar },\r\n props: {\r\n value: Object,\r\n loading: Boolean,\r\n },\r\n setup(props) {\r\n const filters = ref([]);\r\n const comparisons = ref([]);\r\n const configuration = ref({ segregateBy: 'services', period: 'month', toDate: new Date() });\r\n const tagKeyValue = ref();\r\n const loadSpendComparisons = waitFor('loadSpendComparisons', async function loadSpendComparisonsFn() {\r\n if (!props.value) return;\r\n tagKeyValue.value = props.value as ITagMetadataResult;\r\n const params = {\r\n tagKeyValue: tagKeyValue.value.tagKeyValue,\r\n orderBy: 'delta',\r\n period: configuration.value.period,\r\n toDate: configuration.value.toDate.toISOString(),\r\n };\r\n const response = await ApiV2.http\r\n .get(`/api/cost-explorer/${configuration.value.segregateBy}`, { params })\r\n .then((r) => r.data);\r\n comparisons.value = response.entities;\r\n });\r\n const tenantStore = useTenantStore();\r\n\r\n return { comparisons, configuration, filters, loadSpendComparisons, tagKeyValue, tenantStore };\r\n },\r\n watch: {\r\n $route: {\r\n handler(url) {\r\n url.query.tagKeyValues?.split(',').forEach((tkv : string) => {\r\n this.filters.push({ type: EntityType.tag, name: tkv, id: tkv });\r\n });\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.loadSpendComparisons();\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Trends.vue?vue&type=template&id=4e9e9744&\"\nimport script from \"./Trends.vue?vue&type=script&lang=ts&\"\nexport * from \"./Trends.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showCloudAccountDialog),callback:function ($$v) {_vm.showCloudAccountDialog=$$v},expression:\"showCloudAccountDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedCloudAccount,\"loading\":_vm.$wait.is('loadingCloudAccount')},on:{\"input\":function($event){return Object.assign(_vm.selectedCloudAccount, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"cloudAccountDialog.cloudAccountNotFound\": \"We could not find reference to this cloud connection within this tenant.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=7eea4759&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"md\":\"8\",\"cols\":\"12\"}},[_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_c('cloud-provider-type-icon',{attrs:{\"left\":\"\",\"value\":_vm.value ? _vm.value.providerType : ''}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.name : '...')+\" \")],1),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('views.dialogCloudAccount.accountType', { type: _vm.value ? _vm.value.type : '...' }))+\" \")])],1),_c('v-col',{attrs:{\"md\":\"4\",\"cols\":\"12\"}},[_c('cost-summary-widget',{attrs:{\"actual-total\":_vm.forecast.actualTotal,\"projected-total\":_vm.forecast.projectedTotal,\"past-total\":_vm.forecast.pastTotal,\"currency-code\":_vm.tenantStore.currencyCode,\"spend-limit\":_vm.value ? _vm.value.monthlySpendLimit : null}})],1)],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport CostSummaryWidget from '@/components/Domain.Usage/CostSummaryWidget.vue';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport moment from '@/lib/moment';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { defineComponent, computed, ref } from 'vue';\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n if (ctx.value) {\r\n return ctx.value.Name;\r\n } else {\r\n return ctx.$t('views.dialogCloudAccount.title');\r\n }\r\n },\r\n components: { CostSummaryWidget },\r\n props: {\r\n value: Object,\r\n loading: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() => {\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n return [\r\n hasUsageDataset\r\n ? { key: 'usage', icon: 'insights', text: 'views.dialogCloudAccount.tabs.usage' }\r\n : null,\r\n hasEmissionsDataset\r\n ? { key: 'carbon', icon: 'co2', text: 'views.dialogCloudAccount.tabs.carbon' }\r\n : null,\r\n hasUsageDataset\r\n ? { key: 'trends', icon: 'compare_arrows', text: 'views.dialogCloudAccount.tabs.trends' }\r\n : null,\r\n { key: 'virtualtags', icon: 'sell', text: 'views.dialogCloudAccount.tabs.virtualtags' },\r\n { key: 'annotations', icon: 'forum', text: 'views.dialogCloudAccount.tabs.annotations' },\r\n hasUsageDataset\r\n ? { key: 'copies', icon: 'content_copy', text: 'views.dialogCloudAccount.tabs.copies' }\r\n : null,\r\n ].filter((t) => t);\r\n });\r\n const isEditingName = ref(false);\r\n const forecast = ref({\r\n actualTotal: 0,\r\n projectedTotal: 0,\r\n pastTotal: 0,\r\n });\r\n return { tab, tabs, tenantStore, isEditingName, forecast };\r\n },\r\n methods: {\r\n loadAccountProjections: waitFor('loadingAccountForecast', async function loadAccountProjections(id) {\r\n const toDate = moment.utc().endOf('month');\r\n const params = { toDate: toDate.format(), cloudAccountIds: [id].join(), granularity: 'Daily' };\r\n const response = await ApiV2.http\r\n .get('/api/forecast', { params })\r\n .catch((err) => {\r\n if (err.response.status === 400) return { data: {} };\r\n throw err;\r\n })\r\n .then((r) => r.data);\r\n const year = toDate.format('YYYY');\r\n const month = toDate.format('MM');\r\n const previousDate = moment.utc().subtract(1, 'months').endOf('month');\r\n const prevYear = previousDate.format('YYYY');\r\n const prevMonth = previousDate.format('MM');\r\n this.forecast.actualTotal = (response.monthlySpendTotals[year] || {})[month] || 0;\r\n this.forecast.projectedTotal =\r\n this.forecast.actualTotal + (response.monthlyForecastTotals[year] || {})[month] || 0;\r\n this.forecast.pastTotal = (response.monthlySpendTotals[prevYear] || {})[prevMonth] || 0;\r\n }),\r\n },\r\n watch: {\r\n value: {\r\n handler(val) {\r\n if (!val) return;\r\n this.loadAccountProjections(val.id);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=301f23b6&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pt-5\"},[_c('cloud-account-copies-table',{attrs:{\"loading\":_vm.$wait.is('getAccountCopies'),\"items\":_vm.copies},scopedSlots:_vm._u([(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?{key:\"top\",fn:function(){return [_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"to\":`/copy/cloudaccounts/${_vm.value ? _vm.value.cloudAccountId : ''}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"content_copy\")]),_vm._v(\" \"+_vm._s(_vm.$t('dialogCloudAccount.copyCloudAccount'))+\" \")],1)],1)]},proxy:true}:null,{key:`item.Actions`,fn:function({ item }){return [_c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[(_vm.tenantStore.hasTenantFeature('CopyCloudAccount'))?_c('v-list-item',{attrs:{\"to\":`/copy/cloudaccounts/${_vm.value ? _vm.value.cloudAccountId : ''}?copy=${item.Id}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Edit Share \")])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteCopy(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Delete Share \")])],1)],1)],1)],1)]}}],null,true)}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"loading\":_vm.$wait.is('deletingCopy'),\"value\":_vm.copyToDelete,\"title\":_vm.$t('deleteCopyCard.title'),\"subtitle\":_vm.$t('deleteCopyCard.subtitle')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, clear, formId, loading }){return [_c('back-button',{on:{\"click\":close}}),_c('v-spacer'),_c('delete-cloud-account-copy-button',{attrs:{\"cloudAccountId\":_vm.value ? _vm.value.cloudAccountId : null,\"value\":_vm.copyToDelete,\"valid\":isValid,\"clear\":clear,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.getAccountCopies(_vm.value.cloudAccountId))}}})]}}],null,true)})]}}]),model:{value:(_vm.showDeleteCopy),callback:function ($$v) {_vm.showDeleteCopy=$$v},expression:\"showDeleteCopy\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.tableEntities,\"item-key\":\"Id\",\"items-per-page\":_vm.itemsPerPage,\"sort-by\":_vm.sortedBy,\"sort-desc\":_vm.sortedDesc},on:{\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"update:sortBy\":function($event){_vm.sortedBy=$event},\"update:sort-by\":function($event){_vm.sortedBy=$event},\"update:sortDesc\":function($event){_vm.sortedDesc=$event},\"update:sort-desc\":function($event){_vm.sortedDesc=$event}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_vm._t(\"top\")]},proxy:true},{key:`item.Actions`,fn:function({ item }){return [_vm._t(\"item.Actions\",null,{\"item\":item})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"cloudAccountCopiesTable.customerName\": \"Customer Name\",\r\n \"cloudAccountCopiesTable.sharedCloudAccountName\": \"Shared Cloud Connection Name\",\r\n \"cloudAccountCopiesTable.markupPercentage\": \"Markup Percentage\",\r\n \"cloudAccountCopiesTable.tagAllocations\": \"Tags\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudAccountCopiesTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudAccountCopiesTable.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudAccountCopiesTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloudAccountCopiesTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CloudAccountCopiesTable.vue?vue&type=template&id=caee0898&\"\nimport script from \"./CloudAccountCopiesTable.vue?vue&type=script&lang=js&\"\nexport * from \"./CloudAccountCopiesTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CloudAccountCopiesTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteCopyCard.title\": \"Delete Copy\",\r\n \"deleteCopyCard.subtitle\": \"Warning: This process is irreversible! The copy cloud connection data will be deleted permanently and you will need to re-copy your account if you want to see your data again.\",\r\n \"dialogCloudAccount.copyCloudAccount\": \"Share Cloud Connection\"\r\n } \r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Copies.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Copies.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Copies.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Copies.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Copies.vue?vue&type=template&id=37ab0b8c&\"\nimport script from \"./Copies.vue?vue&type=script&lang=js&\"\nexport * from \"./Copies.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Copies.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('add-annotation-dialog',{attrs:{\"cloudAccountId\":_vm.cloudAccountId},on:{\"http2xx\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.annotations.length > 0 && _vm.tenantStore.hasPermission('CanContribute')),expression:\"annotations.length > 0 && tenantStore.hasPermission('CanContribute')\"}],staticClass:\"ml-3\",attrs:{\"color\":\"secondary\",\"fab\":\"\",\"depressed\":\"\",\"small\":\"\"}},on),[_c('v-icon',[_vm._v(\"add\")])],1)]}}]),model:{value:(_vm.dialogs.isAddingAnnotation),callback:function ($$v) {_vm.$set(_vm.dialogs, \"isAddingAnnotation\", $$v)},expression:\"dialogs.isAddingAnnotation\"}})],1),_c('annotations-timeline',{attrs:{\"annotations\":_vm.annotations,\"cloudAccountId\":_vm.cloudAccountId,\"allowEdit\":true,\"loading\":_vm.loading || _vm.$wait.is(['getAnnotations'])},on:{\"onAnnotationChangeSuccess\":_vm.handleSuccessfulAnnotationChange},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"no-data\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.dialogs.isAddingAnnotation = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]},proxy:true}:null],null,true)}),(_vm.hasMore)?_c('div',{staticClass:\"text-center\"},[_c('v-btn',{staticClass:\"mt-2\",attrs:{\"small\":\"\",\"depressed\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.loadMore()}}},[_vm._v(\" \"+_vm._s(_vm.$t('annotations.loadMoreButton'))+\" \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Annotations.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Annotations.vue?vue&type=template&id=d73246e8&\"\nimport script from \"./Annotations.vue?vue&type=script&lang=js&\"\nexport * from \"./Annotations.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getAccountUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),(_vm.showUnitToggle)?_c('SpendUsageUnitToggle',{attrs:{\"value\":_vm.unitOfDisplay},model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getAccountUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue';\r\nimport { getUsage, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, ICloudAccountModel, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageUnitToggle,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n computed: {\r\n showUnitToggle() {\r\n return this.filterStore.$state.options.segregateBy == PluralEntityType.meters;\r\n }\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.subscriptions})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.subscription,\r\n EntityType.service,\r\n EntityType.product,\r\n EntityType.tag,\r\n EntityType.region,\r\n EntityType.geography,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.productCategories,\r\n PluralEntityType.subscriptions,\r\n PluralEntityType.services,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getAccountUsage', async () => {\r\n const { cloudAccountId } = p.value as ICloudAccountModel;\r\n const options: SpendUsageOptions = { ...spendOptions.value, cloudAccountId };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getUsage(segregateBy, params),\r\n getForecast(params, options.dateRangeKey, options.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n \r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate;\r\n\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, usageResponse, options.costView);\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else if (!Array.isArray(spendOptions.value.segregateBy)) {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getAccountUsage')) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, cloudAccountId: undefined };\r\n filterStore.setFilter(options);\r\n })\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n maxDate,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n filterStore\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=f1ee4a44&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('usage-comparison-options-toolbar',{staticClass:\"mt-3\",attrs:{\"loading\":_vm.$wait.is('loadServiceComparisons'),\"segregate-types\":['services', 'products']},on:{\"input\":function($event){return _vm.loadServiceComparisons()}},model:{value:(_vm.configuration),callback:function ($$v) {_vm.configuration=$$v},expression:\"configuration\"}}),(_vm.configuration.segregateBy === 'services')?_c('service-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):(_vm.configuration.segregateBy === 'products')?_c('product-comparisons-table',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Trends.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Trends.vue?vue&type=template&id=52ef91dc&\"\nimport script from \"./Trends.vue?vue&type=script&lang=js&\"\nexport * from \"./Trends.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-alert',{staticClass:\"mt-3\",attrs:{\"border\":\"left\",\"text\":\"\",\"type\":\"warning\",\"elevation\":\"0\"}},[_vm._v(\" \"+_vm._s(_vm.$t('virtualTags.sourceDescription'))+\" \")]),_c('virtual-tag-table',{attrs:{\"loading\":_vm.$wait.is(['getCloudAccountVirtualTags', 'addCloudAccountVirtualTag']),\"items\":_vm.virtualTags},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid, formId, form, loading, reset }){return [_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!isValid || loading,\"loading\":loading,\"form\":formId,\"text\":\"\"},on:{\"click\":function($event){_vm.addCloudAccountVirtualTag(form).then(reset)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}},{key:\"item\",fn:function({ item }){return [_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\",\"loading\":_vm.$wait.is('deleteCloudAccountVirtualTag')},on:{\"click\":function($event){return _vm.deleteCloudAccountVirtualTag(item)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"delete\")]),_vm._v(\" Drop \")],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"virtualTags.sourceDescription\": \"Virtual tags are a stop gap solution that should be used sparingly. Best practices dictate tagging your consumption in the cloud vendor of choice instead. However, in the cases where historical spend has not been tagged properly you can use virtual tags to cover untracked spend.\",\r\n \"virtualTags.errorCreating\": \"There was an error creating this virtual tag. Please check that there are no conflicting tag keys already on this service.\",\r\n \"virtualTags.successCreating\": \"Your virtual tag has been successfully created. These rules will be applied during the next import at the end of the day.\",\r\n \"virtualTags.errorDeleting\": \"There was an error deleting this virtual tag. Please refresh this page and try again.\",\r\n \"virtualTags.successDeleting\": \"Your virtual tag has been successfully deleted for this period. This update in rules will be applied during the next import at the end of the day.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./VirtualTags.vue?vue&type=template&id=fce3c79c&\"\nimport script from \"./VirtualTags.vue?vue&type=script&lang=js&\"\nexport * from \"./VirtualTags.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./VirtualTags.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getAccountCO2e')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.tableItems,\"loading\":_vm.wait.is('getAccountCO2e'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from \"@/stores\";\r\nimport CarbonBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n ReverseLookup,\r\n IClickEvent,\r\n} from \"@/components/Domain.Carbon/CarbonBarChart.vue\";\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from \"@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue\";\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from \"@/components/Domain.Usage/UsageFilterChips.vue\";\r\nimport CarbonTable, {\r\n convertToItemRecords,\r\n ICarbonTableRecordsViewModel,\r\n} from \"@/components/Domain.Carbon/CarbonTable.vue\";\r\nimport { toastError } from \"@/components/Common/Toast.vue\";\r\nimport { defineComponent, onUnmounted, ref, watch } from \"vue\";\r\nimport { getCO2e, getForecastCO2e } from \"@/lib/Api\";\r\nimport { fromPlural } from \"@/models/EntityType\";\r\nimport { EntityType, PluralEntityType, ICloudAccountModel } from \"@/models\";\r\nimport { i18n } from \"@/i18n\";\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n CarbonTable,\r\n CarbonBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.products})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const tableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.subscription,\r\n EntityType.service,\r\n EntityType.product,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.products,\r\n PluralEntityType.subscriptions,\r\n PluralEntityType.services,\r\n ]);\r\n\r\n let reverseLookup: ReverseLookup | null = null;\r\n const loadTabUsage = async () =>\r\n await whilst(\"getAccountCO2e\", async () => {\r\n const { cloudAccountId } = p.value as ICloudAccountModel;\r\n const options: SpendUsageOptions = { ...spendOptions.value, cloudAccountId };\r\n const segregateBy = options.segregateBy as PluralEntityType;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [carbonResponse, forecastResponse] = await Promise.all([\r\n getCO2e(segregateBy, params),\r\n getForecastCO2e(params, options.dateRangeKey)\r\n ]);\r\n const [usageDataset, datasetIndexes] = convertCO2eResponseToDatasets(\r\n carbonResponse\r\n );\r\n reverseLookup = datasetIndexes;\r\n const forecastDataset = convertProjectionsResponseToDataset(forecastResponse);\r\n newChartData.value = {\r\n labels: [...usageDataset.labels, ...forecastDataset.labels],\r\n datasets: [...usageDataset.datasets, ...forecastDataset.datasets],\r\n };\r\n maxDate.value = forecastResponse?.maxUsageDate || params.toDate;\r\n tableItems.value = convertToItemRecords(params, carbonResponse);\r\n });\r\n\r\n const handleDatasetClicked = ({ index, isOther, name }: IClickEvent) => {\r\n const datasetGroupId = reverseLookup[index];\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t(\"shared.meterInformationNotSupported\"));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is(\"getAccountCO2e\")) return;\r\n filterStore.setFilter(spendOptions.value);\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n onUnmounted(() => {\r\n const options: SpendUsageOptions = { ...spendOptions.value, cloudAccountId: undefined };\r\n filterStore.setFilter(options);\r\n });\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n tableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Carbon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Carbon.vue?vue&type=template&id=70e77308&\"\nimport script from \"./Carbon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Carbon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedEntity,\"loading\":_vm.$wait.is('loadingEntity')},on:{\"input\":function($event){return Object.assign(_vm.selectedEntity, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"reservationDialog.reservationsNotFound\": \"There is no reference to this reservation currently. This may happen in rare circumstances, please check back in a few minutes.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=34d3e50d&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"md\":\"8\",\"cols\":\"12\"}},[_c('v-card-title',{staticClass:\"mb-4 pb-0\"},[_c('entity-type-icon',{attrs:{\"left\":\"\",\"value\":\"Reservation\"}}),_vm._v(\" \"+_vm._s(_vm.value ? _vm.value.commitmentId : '...')+\" \")],1),(_vm.value)?_c('v-card-subtitle',{staticClass:\"my-0 pt-0 pb-2\"},[_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('cloud-provider-type-icon',{attrs:{\"size\":\"20\",\"left\":\"\",\"value\":_vm.value.cloudProviderType}}),_vm._v(\" Connection: \"+_vm._s(_vm.value.cloudAccountName)+\" \")],1),(_vm.value && _vm.value.scope)?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"store\")]),_vm._v(\" Scope: \"+_vm._s(_vm.value.scope)+\" \")],1):_vm._e(),(_vm.value && _vm.value.paymentOption)?_c('v-chip',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"credit_card\")]),_vm._v(\" Payment: \"+_vm._s(_vm.value.paymentOption)+\" \")],1):_vm._e()],1):_vm._e()],1)],1),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-badge',{attrs:{\"color\":\"secondary\",\"dot\":\"\",\"value\":tab.key === 'annotations' && _vm.value && _vm.value.annotationCount > 0}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { defineComponent, computed } from 'vue';\r\n\r\nexport default defineComponent({\r\n props: {\r\n me: Object,\r\n value: Object,\r\n loading: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n },\r\n setup() {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() =>\r\n [\r\n { key: 'usage', icon: 'insights', text: 'views.dialogReservation.tabs.usage' },\r\n ].filter((t) => t)\r\n );\r\n return { tab, tabs, tenantStore };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=9c5f9e46&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getUsage'),\"hide-search\":\"\"},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs, useFilterStore } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n CostView,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { getUsage } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport { EntityType, PluralEntityType, ISpendUsageTableRecordsViewModel } from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\n\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const filterStore = useFilterStore();\r\n filterStore.setFilter({segregateBy: PluralEntityType.services, costView: CostView.Utilized})\r\n const spendOptions = ref(filterStore.options);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([EntityType.meter, EntityType.product]);\r\n const segregationSupportedKeys = ref([PluralEntityType.meters, PluralEntityType.products]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getServiceUsage', async () => {\r\n const { reservationId } = p.value;\r\n const options: SpendUsageOptions = { ...spendOptions.value, reservationId };\r\n if (Array.isArray(options.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = options.segregateBy;\r\n let params = convertSpendOptionsToQuery(options);\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const usageResponse = await getUsage(segregateBy, params);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, {\r\n reportType: UsageReportTypes.charges,\r\n }); \r\n newChartData.value = {\r\n labels: [...usageDataset.labels],\r\n datasets: [...usageDataset.datasets],\r\n };\r\n maxDate.value = usageResponse.maxDate || params.toDate\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n options.costView\r\n );\r\n });\r\n\r\n const handleDatasetClicked = ({ datasetGroupId, isOther, name }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getUsage')) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n unitOfDisplay,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=165b7c95&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"value\":true,\"no-click-animation\":\"\",\"persistent\":\"\",\"max-width\":\"400\",\"scrollable\":\"\",\"hide-overlay\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly}},[_c('form-card',{attrs:{\"title\":\"AWS Marketplace\",\"subtitle\":\"Welcome from the AWS Marketplace!\",\"loading\":_vm.loading}},[(!_vm.isAuthenticated)?_c('v-alert',{attrs:{\"text\":\"\"}},[_vm._v(\" We have received a request to manage a CloudCtrl x AWS Marketplace subscription on your behalf. To continue you will need to authenticate with CloudCtrl first. \"),_c('br'),_c('br'),_vm._v(\" If you already have a CloudCtrl account you can login, otherwise please register below: \"),_c('v-btn',{staticClass:\"mt-2\",attrs:{\"color\":\"info\",\"block\":\"\"},on:{\"click\":function($event){return _vm.startLogin()}}},[_vm._v(\" Login \")]),_c('v-btn',{staticClass:\"mt-2\",attrs:{\"color\":\"info\",\"block\":\"\"},on:{\"click\":function($event){return _vm.startRegister()}}},[_vm._v(\" Register \")])],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Auth0Client } from '@auth0/auth0-spa-js';\r\nimport Config from '@/lib/Config';\r\n\r\nconst config = Config.get();\r\n\r\nconst instance = new Auth0Client({\r\n domain: config.AUTH0_DOMAIN,\r\n clientId: config.AUTH0_CLIENTID,\r\n authorizationParams: {\r\n audience: config.AUTH0_AUDIENCE,\r\n redirect_uri: window.location.origin\r\n }\r\n});\r\n\r\nconst initialize = async ({ onRedirectCallback }: { onRedirectCallback: (returnTo: string) => void }) => {\r\n if (window.location.search.includes('code=') && window.location.search.includes('state=')) {\r\n const { appState } = await instance.handleRedirectCallback();\r\n onRedirectCallback(appState?.returnTo || window.location.pathname);\r\n }\r\n\r\n if (!await instance.isAuthenticated()) {\r\n await loginWithRedirect({});\r\n }\r\n}\r\n\r\nconst loginWithRedirect = async (options: any) => {\r\n await instance.loginWithRedirect({ appState: { returnTo: window.location.pathname }, ...options });\r\n}\r\n\r\nconst getTokenSilently = async () => {\r\n try {\r\n return await instance.getTokenSilently();\r\n } catch (error) {\r\n instance.loginWithRedirect({});\r\n }\r\n}\r\n\r\nconst isAuthenticated = async () => {\r\n return await instance.isAuthenticated();\r\n}\r\n\r\nconst logoutWithRedirect = async () => {\r\n await instance.logout({ logoutParams: { returnTo: window.location.origin }});\r\n}\r\n\r\nconst getUser = () => {\r\n return instance.getUser();\r\n}\r\n\r\nexport default {\r\n instance,\r\n initialize,\r\n isAuthenticated,\r\n getTokenSilently,\r\n getUser,\r\n loginWithRedirect,\r\n logoutWithRedirect\r\n};","import { PublicClientApplication, LogLevel, InteractionRequiredAuthError } from '@azure/msal-browser';\r\nimport Config from '@/lib/Config';\r\n\r\nconst config = Config.get();\r\n\r\nconst scopes = ['user.read'];\r\n\r\nconst loginRequest = { scopes };\r\n\r\nconst msalConfig = {\r\n auth: {\r\n clientId: config.MSAL_CLIENTID,\r\n authority: config.MSAL_AUTHORITY,\r\n redirectUri: window.location.origin,\r\n },\r\n cache: {\r\n cacheLocation: 'localStorage',\r\n storeAuthStateInCookie: false,\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level, message, containsPii) => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nconst instance = new PublicClientApplication(msalConfig);\r\n\r\nconst initialize = async ({ onRedirectCallback }: { onRedirectCallback: (returnTo: string) => void }) => {\r\n await instance.initialize();\r\n\r\n await instance.handleRedirectPromise();\r\n await loginWithRedirect({});\r\n\r\n onRedirectCallback(null)\r\n}\r\n\r\nconst loginWithRedirect = async (options: any) => {\r\n const accounts = instance.getAllAccounts();\r\n if (accounts.length === 0) {\r\n instance.loginRedirect({ ...loginRequest, ...options });\r\n } else {\r\n instance.setActiveAccount(accounts[0]);\r\n }\r\n}\r\n\r\nconst getTokenSilently = async () => {\r\n try {\r\n const response = await instance.acquireTokenSilent(loginRequest);\r\n return response.idToken;\r\n } catch (error) {\r\n if (error instanceof InteractionRequiredAuthError) {\r\n instance.loginRedirect(loginRequest);\r\n }\r\n }\r\n}\r\n\r\nconst isAuthenticated = async () => {\r\n return instance.getActiveAccount() != null;\r\n}\r\n\r\nconst logoutWithRedirect = async () => {\r\n const account = instance.getActiveAccount();\r\n if (account) {\r\n await instance.logoutRedirect({ account, postLogoutRedirectUri: window.location.origin });\r\n } else {\r\n console.warn('No active account found. Cannot log out.');\r\n }\r\n}\r\n\r\nconst getUser = async () => {\r\n const account = instance.getActiveAccount();\r\n if (account) {\r\n return { \r\n name: account.name,\r\n email: account.username,\r\n };\r\n }\r\n}\r\n\r\nexport default {\r\n instance,\r\n initialize,\r\n isAuthenticated,\r\n getTokenSilently,\r\n getUser,\r\n loginWithRedirect,\r\n logoutWithRedirect\r\n};\r\n","import auth0Client from \"./auth0\";\r\nimport msalClient from \"./msal\";\r\nimport Config from '@/lib/Config';\r\nimport Vue from 'vue';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport { Auth0Client } from '@auth0/auth0-spa-js';\r\n\r\nconst DEFAULT_REDIRECT_CALLBACK = s => window.history.replaceState({}, document.title, window.location.pathname);\r\n\r\nconst client =\r\n Config.isFeatureEnabled('UseMsalAuthentication') ? msalClient : auth0Client;\r\n\r\nexport interface IAuthVue {\r\n getTokenSilently(): Promise;\r\n loginWithRedirect(o: any): Promise;\r\n logoutWithRedirect(): Promise;\r\n}\r\n\r\nexport interface IAuthVueData {\r\n loading: boolean;\r\n isAuthenticated: boolean;\r\n user: Record;\r\n client: null | Auth0Client | PublicClientApplication;\r\n error: null | Error;\r\n}\r\n\r\nlet instance: Vue & IAuthVue & IAuthVueData | null = null;\r\n\r\nexport const getInstance = () => instance;\r\n\r\nexport const useAuth = ({\r\n onRedirectCallback = DEFAULT_REDIRECT_CALLBACK\r\n}) => {\r\n if (instance) return instance;\r\n\r\n instance = new Vue({\r\n data(): IAuthVueData {\r\n return {\r\n loading: true,\r\n isAuthenticated: false,\r\n user: {},\r\n client: null,\r\n error: null\r\n };\r\n },\r\n methods: {\r\n getTokenSilently: () => client.getTokenSilently(),\r\n loginWithRedirect: (options: any) => client.loginWithRedirect(options),\r\n logoutWithRedirect: () => client.logoutWithRedirect()\r\n },\r\n /** Use this lifecycle method to instantiate the SDK client */\r\n async created() {\r\n try {\r\n this.client = client;\r\n await client.initialize({ onRedirectCallback });\r\n } catch (error) {\r\n this.error = error;\r\n } finally {\r\n this.isAuthenticated = await client.isAuthenticated();\r\n this.user = await client.getUser();\r\n this.loading = false;\r\n }\r\n }\r\n });\r\n \r\n return instance;\r\n}\r\n\r\nexport const AuthPlugin = {\r\n install(vue, options) {\r\n vue.prototype.$auth = useAuth(options);\r\n }\r\n};","\r\nimport { defineComponent } from 'vue';\r\nimport Config from '@/lib/Config';\r\nimport AuthClient from '@/lib/Auth';\r\nimport { getInstance } from '@/plugins/auth';\r\nexport default defineComponent({\r\n data: () => ({\r\n isAuthenticated: false,\r\n loading: false,\r\n supportEmail: Config.get().SUPPORT_EMAIL,\r\n }),\r\n methods: {\r\n async startLogin() {\r\n const auth = getInstance();\r\n await auth.loginWithRedirect({\r\n provider: ''\r\n });\r\n },\r\n async startRegister() {\r\n const auth = getInstance();\r\n await auth.loginWithRedirect({\r\n provider: '',\r\n screen_hint: 'signup'\r\n });\r\n },\r\n },\r\n watch: {\r\n $route: {\r\n immediate: true,\r\n deep: true,\r\n async handler(route) {\r\n this.isAuthenticated = AuthClient.isAuthenticated;\r\n localStorage.setItem('aws-marketplace-token', route.query.token);\r\n\r\n if (this.isAuthenticated) {\r\n await this.$router.push('/choose');\r\n } else {\r\n AuthClient.tenantId = null;\r\n }\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AWSMarketplace.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AWSMarketplace.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AWSMarketplace.vue?vue&type=template&id=26b7c959&\"\nimport script from \"./AWSMarketplace.vue?vue&type=script&lang=ts&\"\nexport * from \"./AWSMarketplace.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('page-header',{attrs:{\"title\":_vm.$t('copyCloudAccount.index.title', { cloudAccountName: _vm.cloudAccountName }),\"icon\":\"content_copy\"}}),_c('v-stepper',{staticClass:\"elevation-0\",model:{value:(_vm.currentStep),callback:function ($$v) {_vm.currentStep=$$v},expression:\"currentStep\"}},[_c('v-stepper-header',_vm._l((['chooseTenant', 'pricing', 'filters', 'finish']),function(val,i){return _c('fragment',{key:i},[_c('v-stepper-step',{attrs:{\"complete\":_vm.currentStep > i + 1,\"step\":i + 1,\"color\":\"secondary\"}},[_vm._v(_vm._s(_vm.$t(`copyCloudAccount.steps.${val}`)))]),_c('v-divider')],1)}),1),_c('v-container',[_c('v-container',[_c('router-view',{attrs:{\"cloudAccount\":_vm.cloudAccount,\"cloudAccounts\":_vm.cloudAccounts,\"tenants\":_vm.tenants,\"editing\":_vm.editing,\"loading\":_vm.$wait.is(['loadingCopyConfiguration', 'loadingCloudAccounts', 'loadingTenants'])},on:{\"changeCloudAccountId\":function($event){return _vm.changeCloudAccount($event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ isValid }){return [_c('back-button',{attrs:{\"route\":\"\"}}),_c('v-spacer'),(_vm.currentStep !== 4)?_c('v-btn',{attrs:{\"disabled\":!isValid,\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.$router.push(_vm.nextStepRoute)}}},[_vm._v(\" Continue \")]):_c('v-btn',{attrs:{\"disabled\":!isValid || _vm.$wait.is('submittingCopyCloudAccount'),\"loading\":_vm.$wait.is('submittingCopyCloudAccount'),\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.submitConfiguration()}}},[_vm._v(\" Submit \")])]}}]),model:{value:(_vm.copyConfiguration),callback:function ($$v) {_vm.copyConfiguration=$$v},expression:\"copyConfiguration\"}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"copyCloudAccount.index.title\": \"Sharing {cloudAccountName}\",\r\n \"copyCloudAccount.steps.chooseTenant\": \"Share Details\",\r\n \"copyCloudAccount.steps.pricing\": \"Pricing\",\r\n \"copyCloudAccount.steps.filters\": \"Filters\",\r\n \"copyCloudAccount.steps.finish\": \"Finish\",\r\n \"copyCloudAccount.success.added\": \"Shared cloud connection into customer\",\r\n \"copyCloudAccount.success.updated\": \"Updated shared cloud connection rules\"\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=33a860a9&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":_vm.$t('copyCloudAccount.chooseTenant.title'),\"caption\":_vm.$t('copyCloudAccount.chooseTenant.caption'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"default\",null,{\"isValid\":_vm.value.tenant.id && _vm.cloudAccount})]},proxy:true}],null,true)},[_c('v-select',{attrs:{\"value\":_vm.cloudAccount ? _vm.cloudAccount.id : null,\"items\":_vm.cloudAccounts,\"disabled\":_vm.editing,\"item-value\":\"id\",\"item-text\":\"name\",\"label\":\"Cloud Connection\"},on:{\"input\":function($event){return _vm.$emit('changeCloudAccountId', $event)}}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('copyCloudAccount.chooseTenant.share')},model:{value:(_vm.value.shareParentConnection),callback:function ($$v) {_vm.$set(_vm.value, \"shareParentConnection\", $$v)},expression:\"value.shareParentConnection\"}}),_c('v-select',{attrs:{\"value\":_vm.value.tenant.id,\"items\":_vm.tenants,\"disabled\":_vm.editing,\"item-value\":\"tenantId\",\"item-text\":\"tenantName\",\"label\":\"Customer\"},on:{\"input\":function($event){return _vm.$emit('input', { ..._vm.value, tenant: { ..._vm.value.tenant, id: $event } })}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"copyCloudAccount.chooseTenant.title\": \"Sharing\",\r\n \"copyCloudAccount.chooseTenant.caption\": \"Choose the cloud connection to copy into which customer.\",\r\n \"copyCloudAccount.chooseTenant.share\": \"Share cloud connection credentials for enhanced services e.g. Recommendations and reservations.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenant.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenant.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChooseTenant.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ChooseTenant.vue?vue&type=template&id=6891b377&\"\nimport script from \"./ChooseTenant.vue?vue&type=script&lang=js&\"\nexport * from \"./ChooseTenant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ChooseTenant.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":_vm.$t('copyCloudAccount.finish.title'),\"caption\":_vm.$t('copyCloudAccount.finish.caption'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"default\",null,{\"isValid\":!!_vm.value.name})]},proxy:true}],null,true)},[_c('v-text-field',{attrs:{\"value\":_vm.value.name,\"label\":_vm.$t('copyCloudAccount.finish.name.label')},on:{\"input\":function($event){return _vm.$emit('input', { ..._vm.value, name: $event })}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"copyCloudAccount.finish.title\": \"Finish\",\r\n \"copyCloudAccount.finish.caption\": \"Finally what would you like to call the shared cloud connection.\",\r\n \"copyCloudAccount.finish.name.label\": \"Shared cloud connection name\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Finish.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Finish.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Finish.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Finish.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Finish.vue?vue&type=template&id=53b4a53f&\"\nimport script from \"./Finish.vue?vue&type=script&lang=js&\"\nexport * from \"./Finish.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Finish.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":_vm.$t('copyCloudAccount.pricing.title'),\"caption\":_vm.$t('copyCloudAccount.pricing.caption'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"default\",null,{\"isValid\":!(_vm.absoluteMarkupCheck && _vm.value.rules.currentMarkup === null)})]},proxy:true}],null,true)},[_c('v-form',[_c('v-container',{attrs:{\"fluid\":\"\",\"wrap\":\"\"}},[_c('v-skeleton-loader',{attrs:{\"loading\":_vm.loading,\"type\":\"list-item@6\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('fragment',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-checkbox',{model:{value:(_vm.value.useTenantCurrencies),callback:function ($$v) {_vm.$set(_vm.value, \"useTenantCurrencies\", $$v)},expression:\"value.useTenantCurrencies\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('span',{staticStyle:{\"line-height\":\"63px !important\"}},[_vm._v(_vm._s(_vm.$t('copyCloudAccount.pricing.useTenantCurrencies')))])])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"1\"}},[(_vm.prices.length === 1)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',_vm._g({},on),[_c('v-checkbox',{attrs:{\"disabled\":\"\"},model:{value:(_vm.editSelectedPrice),callback:function ($$v) {_vm.editSelectedPrice=$$v},expression:\"editSelectedPrice\"}})],1)]}}],null,false,29335597)},[_c('span',[_vm._v(_vm._s(_vm.$t('copyCloudAccount.pricing.baseCostOnly')))])]):_c('v-checkbox',{model:{value:(_vm.editSelectedPrice),callback:function ($$v) {_vm.editSelectedPrice=$$v},expression:\"editSelectedPrice\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-select',{attrs:{\"items\":_vm.prices,\"item-value\":\"id\",\"item-text\":\"name\",\"label\":_vm.$t('copyCloudAccount.pricing.initialPrice'),\"disabled\":!_vm.editSelectedPrice},on:{\"input\":function($event){return _vm.$emit('input', { ..._vm.value, rules: { ..._vm.value.rules, origin: $event } })}},model:{value:(_vm.value.rules.origin),callback:function ($$v) {_vm.$set(_vm.value.rules, \"origin\", $$v)},expression:\"value.rules.origin\"}})],1)],1),(_vm.isActionsEnabled)?_c('v-row',[_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-checkbox',{model:{value:(_vm.setScriptId),callback:function ($$v) {_vm.setScriptId=$$v},expression:\"setScriptId\"}})],1),_c('v-col',{attrs:{\"cols\":\"3\"}},[_c('v-select',{attrs:{\"items\":_vm.scripts,\"item-value\":\"actionId\",\"item-text\":\"actionName\",\"label\":\"Action\",\"disabled\":!_vm.setScriptId},on:{\"input\":function($event){return _vm.$emit('input', { ..._vm.value, scriptId: $event })}},model:{value:(_vm.scriptId),callback:function ($$v) {_vm.scriptId=$$v},expression:\"scriptId\"}})],1)],1):_vm._e(),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-checkbox',{model:{value:(_vm.absoluteMarkupCheck),callback:function ($$v) {_vm.absoluteMarkupCheck=$$v},expression:\"absoluteMarkupCheck\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-text-field',{attrs:{\"disabled\":!_vm.absoluteMarkupCheck,\"type\":\"number\",\"label\":_vm.$t('copyCloudAccount.pricing.markupPercent')},on:{\"input\":function($event){return _vm.$emit('input', {\n ..._vm.value,\n rules: { ..._vm.value.rules, markupPercentage: $event },\n })}},model:{value:(_vm.value.rules.currentMarkup.markupPercentage),callback:function ($$v) {_vm.$set(_vm.value.rules.currentMarkup, \"markupPercentage\", $$v)},expression:\"value.rules.currentMarkup.markupPercentage\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('copyCloudAccount.pricing.effectiveFrom'),\"outlined\":\"\",\"noTitle\":true,\"type\":\"month\",\"disabled\":!_vm.absoluteMarkupCheck ||\n !(_vm.value.rules.currentMarkup && _vm.value.rules.currentMarkup.id == -1)},model:{value:(_vm.value.rules.currentMarkup.effectiveFromDate),callback:function ($$v) {_vm.$set(_vm.value.rules.currentMarkup, \"effectiveFromDate\", $$v)},expression:\"value.rules.currentMarkup.effectiveFromDate\"}})],1)],1),_vm._l((_vm.value.rules.futureMarkups),function(markup,i){return _c('v-row',{key:i},[_c('v-col',{attrs:{\"cols\":\"1\"}}),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-text-field',{attrs:{\"disabled\":!_vm.absoluteMarkupCheck,\"type\":\"number\",\"label\":_vm.$t('copyCloudAccount.pricing.markupPercent')},on:{\"input\":function($event){return _vm.$emit('input', {\n ..._vm.value,\n rules: { ..._vm.value.rules, markupPercentage: $event },\n })}},model:{value:(markup.markupPercentage),callback:function ($$v) {_vm.$set(markup, \"markupPercentage\", $$v)},expression:\"markup.markupPercentage\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('copyCloudAccount.pricing.effectiveFrom'),\"outlined\":\"\",\"noTitle\":true,\"type\":\"month\",\"disabled\":!_vm.absoluteMarkupCheck,\"min\":_vm.lastMonthString},model:{value:(markup.effectiveFromDate),callback:function ($$v) {_vm.$set(markup, \"effectiveFromDate\", $$v)},expression:\"markup.effectiveFromDate\"}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-btn',{staticClass:\"mt-3\",attrs:{\"icon\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.deleteMarkup(markup, i)}}},[_c('v-icon',[_vm._v(\"close\")])],1)],1)],1)}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"text\":\"\",\"block\":\"\",\"disabled\":!_vm.absoluteMarkupCheck},on:{\"click\":function($event){return _vm.addNewMarkup()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" \"+_vm._s(_vm.$t('copyCloudAccount.pricing.newMarkup'))+\" \")],1)],1)],1)],2)]},proxy:true}])})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport moment from '@/lib/moment';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport Config from '@/lib/Config';\r\nconst isCloudAccountActionsEnabled = Config.isFeatureEnabled('CloudAccountActions');\r\nimport { useTenantStore } from '../../stores/tenant';\r\nimport { mapStores } from 'pinia';\r\n\r\nexport default {\r\n props: {\r\n value: Object,\r\n cloudAccount: Object,\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data() {\r\n return {\r\n editSelectedPrice: false,\r\n absoluteMarkupCheck: false,\r\n lastMonth: moment.utc().startOf('month').subtract(1, 'months').toDate(),\r\n lastMonthString: moment.utc().startOf('month').subtract(1, 'months').toISOString(),\r\n nextMonth: moment.utc().startOf('month').add(1, 'months').toDate(),\r\n setScriptId: false,\r\n scriptId: null,\r\n scripts: [],\r\n };\r\n },\r\n created() {\r\n this.getActions();\r\n },\r\n methods: {\r\n addNewMarkup() {\r\n if (!this.value || !this.value.rules.futureMarkups) return;\r\n const maxDate =\r\n this.value.rules.futureMarkups.length > 0\r\n ? new Date(\r\n Math.max(\r\n ...this.value.rules.futureMarkups.map((el) => {\r\n return new Date(el.effectiveFromDate);\r\n })\r\n )\r\n )\r\n : this.nextMonth;\r\n this.value.rules.futureMarkups.push({\r\n id: -1,\r\n markupPercentage: this.value.rules.currentMarkup.markupPercentage,\r\n effectiveFromDate:\r\n this.value.rules.futureMarkups.length > 0\r\n ? moment(maxDate).add(1, 'months').toDate()\r\n : this.nextMonth,\r\n });\r\n this.$emit('input', this.value);\r\n },\r\n deleteMarkup(markup, index) {\r\n if (!this.value || !this.value.rules.futureMarkups) return;\r\n this.value.rules.futureMarkups = this.value.rules.futureMarkups.filter((_, i) => i !== index);\r\n this.$emit('input', this.value);\r\n },\r\n getActions: waitFor('gettingActionScripts', async function () {\r\n this.scripts = await ApiV2.http.get('/api/actions').then((r) => r.data);\r\n }),\r\n },\r\n watch: {\r\n value: {\r\n handler() {\r\n if (!this.value || !this.value.tenant.id) {\r\n this.absoluteMarkupCheck = false;\r\n } else {\r\n const rules = this.value.rules;\r\n this.absoluteMarkupCheck =\r\n this.absoluteMarkupCheck || (rules.currentMarkup !== null && rules.currentMarkup.id);\r\n this.editSelectedPrice = this.editSelectedPrice || rules.origin != null;\r\n if (!this.value.rules.currentMarkup) this.value.rules.currentMarkup = {};\r\n if (this.absoluteMarkupCheck && rules.currentMarkup !== null && !rules.currentMarkup.id) {\r\n rules.currentMarkup.id = -1;\r\n }\r\n this.scriptId = this.value.scriptId;\r\n this.setScriptId = !!this.value.scriptId;\r\n }\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n absoluteMarkupCheck(val) {\r\n this.value.rules.absoluteMarkupCheck = val;\r\n },\r\n editSelectedPrice(val) {\r\n if (!val && this.value.rules) this.value.rules.origin = null;\r\n },\r\n },\r\n computed: {\r\n prices() {\r\n const prices = [{ id: null, name: 'Base Cost' }];\r\n if (this.cloudAccount && this.cloudAccount.pricingOrigin) {\r\n this.cloudAccount.pricingOrigin.forEach((origin) => {\r\n prices.push({ id: origin, name: origin });\r\n });\r\n }\r\n return prices;\r\n },\r\n isActionsEnabled() {\r\n return isCloudAccountActionsEnabled && this.tenantStore.hasTenantFeature('CloudAccountActions');\r\n },\r\n ...mapStores(useTenantStore),\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PricingRules.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PricingRules.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PricingRules.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PricingRules.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PricingRules.vue?vue&type=template&id=64d4ea85&\"\nimport script from \"./PricingRules.vue?vue&type=script&lang=ts&\"\nexport * from \"./PricingRules.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PricingRules.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('content-card',{attrs:{\"title\":_vm.$t('copyCloudAccount.tags.title'),\"caption\":_vm.$t('copyCloudAccount.tags.caption'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"default\",null,{\"isValid\":_vm.tags.valid})]},proxy:true}],null,true)},[_c('tag-form',{attrs:{\"loading\":_vm.$wait.is('loadingTags')},model:{value:(_vm.tags),callback:function ($$v) {_vm.tags=$$v},expression:\"tags\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"copyCloudAccount.tags.title\": \"Filter by Tags\",\r\n \"copyCloudAccount.tags.caption\": \"You may optionally filter the usage in the copied cloud connection to only include spend, services or subscriptions with the given tags. The evaluation of these tags is an OR, i.e. if any of these tag conditions are met copy.\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tags.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tags.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tags.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tags.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Tags.vue?vue&type=template&id=1bbe2c91&\"\nimport script from \"./Tags.vue?vue&type=script&lang=js&\"\nexport * from \"./Tags.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Tags.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"fill-height text-center\"},[_c('v-row',[_c('v-col',[_c('header',{staticClass:\"text-h3\"},[_vm._v(_vm._s(_vm.$t('notFound.title')))]),_c('p',[_vm._v(_vm._s(_vm.$t('notFound.message')))]),_c('v-btn',{attrs:{\"outlined\":\"\"}},[_c('router-link',{attrs:{\"to\":\"/overview\"}},[_vm._v(_vm._s(_vm.$t('notFound.back')))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NotFound.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NotFound.vue?vue&type=template&id=29bc3520&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NotFound.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\",\"scrollable\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"input\":_vm.tryCloseDialog},model:{value:(_vm.showCustomViewDialog),callback:function ($$v) {_vm.showCustomViewDialog=$$v},expression:\"showCustomViewDialog\"}},[_c('router-view',{attrs:{\"value\":_vm.selectedCustomView,\"loading\":_vm.$wait.is('loadingCustomView')},on:{\"input\":function($event){return Object.assign(_vm.selectedCustomView, $event)}}},[_c('back-button',{on:{\"click\":function($event){return _vm.tryCloseDialog(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from 'vue';\r\nimport { getCustomView } from '@/lib/Api';\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nexport default defineComponent({\r\n data() {\r\n return {\r\n showCustomViewDialog: false,\r\n showCustomViewId: null,\r\n selectedCustomView: null,\r\n };\r\n },\r\n methods: {\r\n tryCloseDialog(isOpen) {\r\n if (!isOpen) {\r\n this.showCustomViewDialog = false;\r\n this.showCustomViewId = null;\r\n this.selectedCustomView = null;\r\n }\r\n this.$emit('input', isOpen);\r\n },\r\n loadCustomViewDetail: waitFor('loadingCustomView', async function (id:string) {\r\n try {\r\n this.selectedCustomView = await getCustomView(id);\r\n this.$title = this.selectedCustomView.name;\r\n } catch (err) {\r\n toastError(this.$t('customViewDialog.customViewNotFound'));\r\n this.tryCloseDialog(false);\r\n }\r\n }),\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (this.showCustomViewId === to.params.customViewId) return;\r\n this.showCustomViewId = to.params.customViewId || null;\r\n this.showCustomViewDialog = !!this.showCustomViewId;\r\n if (this.selectedCustomView && this.selectedCustomView.Id === this.showCustomViewId) return;\r\n if (!this.showCustomViewId) return;\r\n this.loadCustomViewDetail(this.showCustomViewId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=74b00826&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Dialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.customView ? _vm.customView.name : '...')+\" \")]),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.customView ? _vm.customView.filterDescription : '...')+\" \")]),_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)})],2),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.value,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { defineComponent, computed, ref } from 'vue';\r\nimport { ICustomViewResult } from '@/models';\r\nexport default defineComponent({\r\n title(ctx) {\r\n if (ctx.value) {\r\n return ctx.value.Name;\r\n } else {\r\n return ctx.$t('views.dialogCustomView.title');\r\n }\r\n },\r\n props: {\r\n value: Object,\r\n loading: {\r\n default: false,\r\n type: Boolean,\r\n },\r\n },\r\n setup(p) {\r\n const tab: string = null;\r\n const tenantStore = useTenantStore();\r\n const tabs = computed(() =>\r\n [\r\n { key: 'usage', icon: 'insights', text: 'views.dialogCustomView.tabs.usage' },\r\n ].filter((t) => t)\r\n );\r\n const isEditingName = ref(false);\r\n const customView = computed(() => {\r\n return p.value as ICustomViewResult; \r\n });\r\n return { tab, tabs, tenantStore, isEditingName, customView };\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=24cd9d26&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('SpendUsageOptionsToolbarForm',{staticClass:\"my-2\",attrs:{\"search-supported-types\":_vm.searchSupportedTypes,\"segregation-supported-keys\":_vm.segregationSupportedKeys,\"loading\":_vm.wait.is('getAccountUsage')},scopedSlots:_vm._u([(_vm.filters.length)?{key:\"workspace\",fn:function(){return [_c('UsageFilterChips',{model:{value:(_vm.filters),callback:function ($$v) {_vm.filters=$$v},expression:\"filters\"}})]},proxy:true}:null],null,true),model:{value:(_vm.spendOptions),callback:function ($$v) {_vm.spendOptions=$$v},expression:\"spendOptions\"}})],1),_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}}),_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('getAccountUsage'),\"segregate-by\":_vm.spendOptions.segregateBy,\"currency-code\":_vm.currencyCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs } from '@/stores';\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport SpendUsageOptionsToolbarForm, {\r\n SpendUsageOptions,\r\n CostView,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport UsageFilterChips, {\r\n filterUsageParamsByFilterChips,\r\n IChipViewModel,\r\n} from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { getSpend, getForecast } from '@/lib/Api';\r\nimport { fromPlural } from '@/models/EntityType';\r\nimport {\r\n EntityType,\r\n PluralEntityType,\r\n ICustomViewResult,\r\n Granularity,\r\n ISpendUsageTableRecordsViewModel,\r\nSpendFieldNames,\r\n} from '@/models';\r\nimport { i18n } from '@/i18n';\r\nimport { appendValueToCommaString } from '@/lib';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nexport default defineComponent({\r\n components: {\r\n SpendUsageOptionsToolbarForm,\r\n UsageFilterChips,\r\n SpendUsageTable,\r\n SpendUsageBarChart,\r\n },\r\n props: { value: Object, loading: Boolean },\r\n setup(p) {\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const spendOptions = ref({\r\n dateRangeKey: '6m',\r\n forecastRangeKey: '3m',\r\n granularity: Granularity.monthly,\r\n topXResults: 10,\r\n segregateBy: PluralEntityType.productCategories,\r\n });\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const searchSupportedTypes = ref([\r\n EntityType.subscription,\r\n EntityType.service,\r\n EntityType.product,\r\n EntityType.tag,\r\n ]);\r\n const segregationSupportedKeys = ref([\r\n PluralEntityType.productCategories,\r\n PluralEntityType.subscriptions,\r\n PluralEntityType.services,\r\n ]);\r\n\r\n const loadTabUsage = async () =>\r\n await whilst('getAccountUsage', async () => {\r\n const view = p.value as ICustomViewResult;\r\n let params = convertSpendOptionsToQuery(spendOptions.value);\r\n if (view.cloudAccountIds.length) {\r\n params.cloudAccountIds = appendValueToCommaString(\r\n params.cloudAccountIds,\r\n view.cloudAccountIds.map((a) => a.id)\r\n );\r\n }\r\n if (view.cloudProviderTypes.length) {\r\n params.providerType = appendValueToCommaString(params.providerType, view.cloudProviderTypes);\r\n }\r\n if (view.geographies.length) {\r\n params.geographyNames = appendValueToCommaString(params.geographyNames, view.geographies);\r\n }\r\n if (view.productCategories.length) {\r\n params.productCategories = appendValueToCommaString(\r\n params.productCategories,\r\n view.productCategories.map((p) => `\"${p}\"`)\r\n );\r\n }\r\n if (view.regions.length) {\r\n params.regionNames = appendValueToCommaString(params.regionNames, view.regions);\r\n }\r\n if (view.subscriptionIds) {\r\n params.subscriptionIds = appendValueToCommaString(\r\n params.subscriptionIds,\r\n view.subscriptionIds.map((s) => s.id)\r\n );\r\n }\r\n if (view.sysProductIds) {\r\n params.productIds = appendValueToCommaString(\r\n params.productIds,\r\n view.sysProductIds.map((p) => p.id)\r\n );\r\n }\r\n if (view.sysServiceIds) {\r\n params.serviceIds = appendValueToCommaString(\r\n params.serviceIds,\r\n view.sysServiceIds.map((s) => s.id)\r\n );\r\n }\r\n if (view.tagKeyValues) {\r\n params.tagKeyValue = appendValueToCommaString(params.tagKeyValue, view.tagKeyValues);\r\n }\r\n if (view.tagKeys) {\r\n // TODO\r\n }\r\n if (Array.isArray(spendOptions.value.segregateBy)) throw new Error('Multiple segregations unsupported!');\r\n const segregateBy = spendOptions.value.segregateBy;\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getSpend({ ...params, segregateBy, fields: [ SpendFieldNames.Charges ] }),\r\n getForecast(params, spendOptions.value.dateRangeKey, spendOptions.value.forecastRangeKey),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, { reportType: UsageReportTypes.charges });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n spendOptions.value.costView\r\n );\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate\r\n });\r\n\r\n const handleDatasetClicked = ({ isOther, name, datasetGroupId }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else if (!Array.isArray(spendOptions.value.segregateBy)) {\r\n filters.value.push({ id: datasetGroupId, name, type: fromPlural(spendOptions.value.segregateBy) as EntityType });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getAccountUsage')) return;\r\n loadTabUsage();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n searchSupportedTypes,\r\n segregationSupportedKeys,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n currencyCode,\r\n wait: { is },\r\n maxDate\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Usage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Usage.vue?vue&type=template&id=4a25a15e&\"\nimport script from \"./Usage.vue?vue&type=script&lang=ts&\"\nexport * from \"./Usage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('customReports.title'),\"icon\":\"insert_chart_outlined\",\"extended\":\"\",\"extension-height\":10}},[(_vm.tenantStore.hasPermission('CanContribute'))?_c('v-btn',{attrs:{\"color\":\"secondary\",\"fab\":\"\",\"absolute\":\"\",\"depressed\":\"\",\"bottom\":\"\",\"large\":\"\",\"right\":\"\",\"to\":\"/create/custom/reports\"}},[_c('v-icon',[_vm._v(\"addchart\")])],1):_vm._e()],1),_c('v-container',{staticClass:\"mt-7\",attrs:{\"fluid\":\"\"}},[_c('content-card',{attrs:{\"title\":_vm.$t('customReports.title'),\"caption\":_vm.$t('customReports.subtitle')}},[_c('reports-table',{attrs:{\"items\":_vm.savedReports},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"item\",fn:function({ item }){return [_c('report-menu',{attrs:{\"value\":item},on:{\"http2xx\":_vm.loadReports}})]}}:null],null,true)})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.reportName'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.createdDate'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.dateRangeKey'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.segregatedBy'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.nextRun'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('reportsTable.headers.actions'))+\" \")])])]),(_vm.items.length > 0)?_c('tbody',_vm._l((_vm.items || []),function(item){return _c('tr',{key:item.id},[_c('td',[_c('router-link',{attrs:{\"to\":`/custom/reports/${item.id}`}},[_vm._v(_vm._s(item.name))])],1),_c('td',[_vm._v(_vm._s(_vm._f(\"calendarFormatFromUtc\")(item.createdDate)))]),_c('td',[_vm._v(_vm._s(_vm.$t(`dateRangeSelect.key_${item.dateRangeKey}.title`)))]),_c('td',_vm._l(((item.segregateBy || '').split(',')),function(s){return _c('span',{key:s},[_vm._v(\" \"+_vm._s(s.startsWith('tags/') ? s : _vm.$t(`segregationSelect.${s}.title`))+\"; \")])}),0),(item.schedule && item.schedule.nextRun)?_c('td',[_vm._v(_vm._s(_vm._f(\"calendarFormat\")(item.schedule.nextRun)))]):_c('td',[_vm._v(\"Not Scheduled\")]),_c('td',[_vm._t(\"item\",null,{\"item\":item})],2)])}),0):_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"text-align\":\"center\"},attrs:{\"colspan\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.loading ? 'Loading...' : 'There are no reports yet')+\" \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent } from \"vue\"\r\n\r\nexport default defineComponent({\r\n props: {\r\n items: {\r\n type: Array,\r\n default: null,\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n }\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ReportsTable.vue?vue&type=template&id=992f0656&\"\nimport script from \"./ReportsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ReportsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}])},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":`/edit/custom/reports/${_vm.value ? _vm.value.id : _vm.value}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('reportMenu.edit')))])],1)],1),_c('v-list-item',{attrs:{\"to\":`/clone/custom/reports/${_vm.value ? _vm.value.id : _vm.value}`}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"content_copy\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('reportMenu.clone')))])],1)],1),_c('delete-report-dialog',{attrs:{\"report\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('reportMenu.delete')))])],1)],1)]}}]),model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"title\":_vm.$t('deleteReportDialog.title'),\"subtitle\":_vm.$t('deleteReportDialog.subtitle'),\"value\":{ name: _vm.report.name },\"loading\":_vm.$wait.is('deletingReport')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-report-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deletingReport'),expression:\"'deletingReport'\"}],attrs:{\"value\":_vm.report,\"form\":formId,\"clear\":clear,\"loading\":loading,\"valid\":isValid},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulDeletion(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/savedreports/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteReportButton.errorMessage\": \"There was an error encountered while deleting this report. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteReportButton.vue?vue&type=template&id=54e17166&\"\nimport script from \"./DeleteReportButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteReportButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteReportButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteReportDialog.events.successfulDeletion\": \"Successfully deleted the report '{reportName}'\",\r\n \"deleteReportDialog.title\": \"Delete Report\",\r\n \"deleteReportDialog.subtitle\": \"Please enter the name of this report to delete it\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteReportDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteReportDialog.vue?vue&type=template&id=0a1b0ee0&\"\nimport script from \"./DeleteReportDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteReportDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteReportDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"reportMenu.edit\": \"Edit\",\r\n \"reportMenu.delete\": \"Delete\",\r\n \"reportMenu.clone\": \"Clone\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ReportMenu.vue?vue&type=template&id=2a6e298c&\"\nimport script from \"./ReportMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ReportMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ReportsTable from '@/components/Domain.Reports/ReportsTable.vue';\r\nimport ReportMenu from '@/components/Domain.Reports/ReportMenu.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { getSavedReports } from '@/lib/Api';\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n data() {\r\n return { isShowingReport: false, savedReports: [], isCreating: false };\r\n },\r\n components: { ReportsTable, ReportMenu },\r\n created() {\r\n this.loadReports();\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n loadReports: waitFor('loadingReports', async function loadingReports() {\r\n try {\r\n this.savedReports = await getSavedReports();\r\n } catch (err) {\r\n toastError(this.$t('customReports.failedToLoad'));\r\n }\r\n }),\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReports.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReports.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReports.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReports.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomReports.vue?vue&type=template&id=232f6d90&\"\nimport script from \"./CustomReports.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomReports.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomReports.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('customReport.title', { reportName: _vm.report ? _vm.report.name : '...' }),\"icon\":\"insert_chart_outlined\"}}),_c('v-toolbar',{attrs:{\"color\":\"transparent\",\"flat\":\"\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"to\":\"/custom/reports\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" \"+_vm._s(_vm.$t('customReport.backButtonText'))+\" \")],1),_c('v-spacer'),(_vm.wait.is('loadingReportUsage'))?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}}):_vm._e(),(_vm.tenantStore.hasPermission('CanContribute'))?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"outlined\":\"\",\"to\":`/edit/custom/reports/${_vm.report ? _vm.report.id : ''}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"edit\")]),_vm._v(\" \"+_vm._s(_vm.$t('customReport.editButtonText'))+\" \")],1):_vm._e()],1),_c('v-container',{staticClass:\"pt-0\"},[(_vm.wasTruncatedTo && _vm.wasTruncatedTo > 0)?_c('v-alert',{attrs:{\"color\":\"error\",\"dense\":\"\",\"text\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"error\"}},[_vm._v(\"error\")]),_vm._v(\" The result of this query was too large to be presented in full. \")],1),_c('v-col',{staticClass:\"shrink\"},[_c('v-dialog',{attrs:{\"max-width\":\"600\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({},on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Email Full Result\")],1)]}}],null,false,3780547499),model:{value:(_vm.isMailing),callback:function ($$v) {_vm.isMailing=$$v},expression:\"isMailing\"}},[_c('v-card',[_c('v-card-title',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Deliver Email\")],1),_c('v-card-subtitle',[_vm._v(\"Deliver the full results of this saved report to the emails in the selected mailing list \")]),_c('v-card-text',[_c('v-form',[_c('v-select',{attrs:{\"label\":\"Mailing List\",\"items\":_vm.mailingLists,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.selectedMailingListId),callback:function ($$v) {_vm.selectedMailingListId=$$v},expression:\"selectedMailingListId\"}})],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.isMailing = false}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" Close\")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.selectedMailingListId},on:{\"click\":function($event){return _vm.deliverReportToMailingList()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mail\")]),_vm._v(\" Send\")],1)],1)],1)],1)],1)],1)],1):_vm._e(),(_vm.showChart)?[(_vm.dataset === 'Usage')?_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.report ? _vm.report.granularity : 'Daily'}}):_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.report ? _vm.report.granularity : 'Daily'}})]:_c('v-alert',{attrs:{\"dense\":\"\",\"text\":\"\",\"type\":\"info\"}},[_vm._v(\" Reports with more than one field do not currently have charting enabled. \")]),(_vm.dataset === 'Usage')?_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"loading\":_vm.wait.is('loadingReportUsage'),\"segregate-by\":_vm.report ? _vm.report.segregateBy : 'services',\"currency-code\":_vm.currencyCode,\"prefix\":`/custom/reports/${_vm.report ? _vm.report.id : ''}`,\"hide-intelligence\":\"\"}}):_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.emissionsTableItems,\"loading\":_vm.wait.is('loadingReportUsage'),\"segregate-by\":_vm.report ? _vm.report.segregateBy : 'services',\"currency-code\":_vm.currencyCode,\"prefix\":`/custom/reports/${_vm.report ? _vm.report.id : ''}`,\"hide-intelligence\":\"\"}})],2),_c('router-view',{on:{\"input\":_vm.handleDialogChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport SpendUsageBarChart, {\r\n convertUsageResponseToDatasets,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport CarbonBarChart, { convertUsageResponseToEmissionsDatasets } from '@/components/Domain.Carbon/CarbonBarChart.vue';\r\nimport CarbonTable, {\r\n ICarbonTableRecordsViewModel,\r\n convertToEmissionsItemRecords,\r\n} from '@/components/Domain.Carbon/CarbonTable.vue';\r\nimport { useTenantStore, useWaitStore, storeToRefs } from '@/stores';\r\nimport {\r\n ISavedReportResult,\r\n ISpendUsageTableRecordsViewModel,\r\n generateSpendParametersFromReport,\r\n IMailingListGetPutModel,\r\n SpendFieldNames,\r\n PluralEntityType,\r\n} from '@/models';\r\nimport { defineComponent, ref } from 'vue';\r\nimport { getSpend, getMailingLists, deliverSavedReport } from '@/lib/Api';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\n\r\nexport default defineComponent({\r\n components: { SpendUsageTable, SpendUsageBarChart, CarbonBarChart, CarbonTable },\r\n setup() {\r\n const tenantStore = useTenantStore();\r\n const { currencyCode } = storeToRefs(tenantStore);\r\n const { is, whilst } = useWaitStore();\r\n\r\n const reportId = ref();\r\n const report = ref(null);\r\n const usageTableItems = ref(null);\r\n const emissionsTableItems = ref(null);\r\n\r\n const isUpdating = ref(false);\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const maxDate = ref(null);\r\n const showChart = ref(false);\r\n const dataset = ref('Usage');\r\n\r\n const isMailing = ref(false);\r\n const wasTruncatedTo = ref(null);\r\n const selectedMailingListId = ref(null);\r\n const mailingLists = ref([]);\r\n\r\n getMailingLists().then((m) => (mailingLists.value = m));\r\n\r\n const deliverReportToMailingList = async () => {\r\n if (!reportId.value) return;\r\n if (!selectedMailingListId.value) return;\r\n isMailing.value = false;\r\n await deliverSavedReport(reportId.value, [], selectedMailingListId.value);\r\n };\r\n\r\n const loadReportUsage = async () => {\r\n await whilst('loadingReportUsage', async () => {\r\n const options = report.value;\r\n if (!options) return;\r\n dataset.value = report.value.dataset || 'Usage';\r\n\r\n const params = generateSpendParametersFromReport(options);\r\n const costViews = (options.costViews || ['Actual']);\r\n const usageParams = {\r\n ...params,\r\n segregateBy: options.segregateBy,\r\n };\r\n maxDate.value = params.toDate\r\n wasTruncatedTo.value = null;\r\n const fields =\r\n dataset.value === 'Usage' ? [SpendFieldNames.Charges] : [SpendFieldNames.CO2e, SpendFieldNames.kWh];\r\n const results = await Promise.all(\r\n costViews.map((cv) => getSpend({ ...usageParams, costView: cv, fields }))\r\n );\r\n if (options.segregateBy.split(',').length < 2 && costViews.length < 2) {\r\n const datasets = results.map((r, i) => {\r\n if ((r.limitedSet || 0) > (wasTruncatedTo.value || 0)) {\r\n wasTruncatedTo.value = r.limitedSet;\r\n }\r\n const costView = costViews[i];\r\n const labelSuffix = costView === 'Actual' ? 'Actual Spend' : 'Utilized Spend';\r\n const stackGroup = costView.toLowerCase();\r\n if (dataset.value === 'Usage') {\r\n return convertUsageResponseToDatasets(r, {\r\n labelSuffix,\r\n stackGroup,\r\n reportType: UsageReportTypes.charges,\r\n });\r\n } else {\r\n const [x] = convertUsageResponseToEmissionsDatasets(r);\r\n return x;\r\n }\r\n });\r\n newChartData.value = {\r\n labels: datasets.map((d) => d.labels).reduce((a, b) => [...a, ...b], []),\r\n datasets: datasets.map((d) => d.datasets).reduce((a, b) => [...a, ...b], []),\r\n };\r\n showChart.value = true;\r\n } else {\r\n newChartData.value = { labels: [], datasets: [] };\r\n showChart.value = false;\r\n }\r\n if (dataset.value === 'Usage') {\r\n const segregateByParts = options.segregateBy.split(',');\r\n const segregateBy =\r\n segregateByParts.length > 1\r\n ? (segregateByParts as PluralEntityType[])\r\n : (segregateByParts[0] as PluralEntityType);\r\n const records = results.map((r, i) => {\r\n const costView = costViews[i];\r\n return SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, r, costView);\r\n });\r\n usageTableItems.value = records[0];\r\n usageTableItems.value.records = records.map((r) => r.records).reduce((a, b) => [...a, ...b], []);\r\n } else {\r\n const records = results.map((r) => {\r\n return convertToEmissionsItemRecords(params, r);\r\n });\r\n emissionsTableItems.value = records[0];\r\n emissionsTableItems.value.records = records\r\n .map((r) => r.records)\r\n .reduce((a, b) => [...a, ...b], []);\r\n }\r\n });\r\n };\r\n const loadReport = async () => {\r\n await whilst('loadingReport', async () => {\r\n report.value = await ApiV2.http.get(`/api/savedreports/${reportId.value}`).then((r) => r.data);\r\n });\r\n await loadReportUsage();\r\n };\r\n\r\n return {\r\n reportId,\r\n report,\r\n usageTableItems,\r\n currencyCode,\r\n isUpdating,\r\n loadReportUsage,\r\n loadReport,\r\n wait: { is, whilst },\r\n newChartData,\r\n showChart,\r\n tenantStore,\r\n dataset,\r\n emissionsTableItems,\r\n wasTruncatedTo,\r\n selectedMailingListId,\r\n mailingLists,\r\n isMailing,\r\n deliverReportToMailingList,\r\n maxDate,\r\n };\r\n },\r\n\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (!to) return;\r\n this.reportId = to.params.id;\r\n this.loadReport();\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n title(ctx) {\r\n return ctx.report ? ctx.report.name : 'Report';\r\n },\r\n methods: {\r\n handleSeriesClicked(meta) {\r\n this.$router.push(`/explore/${this.report.segregateBy}/${meta.metaId}/usage`);\r\n },\r\n handleDialogChange(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push(`/custom/reports/${this.report ? this.report.id : ''}`);\r\n this.$title = this.report ? this.report.name : 'Report';\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReport.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReport.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomReport.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomReport.vue?vue&type=template&id=5be5b4b3&\"\nimport script from \"./CustomReport.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomReport.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomReport.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":\"Create Report\",\"icon\":\"add\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticStyle:{\"max-width\":\"80em\",\"margin\":\"auto\"}},[_c('ReportCard',{scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, loading }){return [_c('v-spacer'),_c('PostReportButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingReport'),expression:\"'creatingReport'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){return _vm.handleSuccessfulCreation($event)}}})]}}])})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.$t('savedReportConfigCard.title'),\"subtitle\":_vm.$t('savedReportConfigCard.subtitle'),\"loading\":_vm.loading,\"lazy-validation\":false},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.form,\"formId\":formId,\"isValid\":_vm.isValid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"autofocus\":\"\",\"rules\":[_vm.$rules.required()],\"label\":_vm.$t('savedReportConfigCard.reportName.title'),\"placeholder\":_vm.$t('savedReportConfigCard.reportName.placeholder')},model:{value:(_vm.reportName),callback:function ($$v) {_vm.reportName=$$v},expression:\"reportName\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-select',{attrs:{\"items\":['Daily', 'Monthly'],\"label\":\"Granularity\"},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('date-range-select',{model:{value:(_vm.dateRangeKey),callback:function ($$v) {_vm.dateRangeKey=$$v},expression:\"dateRangeKey\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[(_vm.dateRangeKey == 'custom')?_c('text-date-picker',{attrs:{\"range\":\"\"},model:{value:(_vm.dates),callback:function ($$v) {_vm.dates=$$v},expression:\"dates\"}}):_vm._e()],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"4\"}},[_c('v-switch',{attrs:{\"label\":\"Use Predefined View\"},model:{value:(_vm.usePredefinedView),callback:function ($$v) {_vm.usePredefinedView=$$v},expression:\"usePredefinedView\"}})],1),(_vm.usePredefinedView)?_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\"}},[_c('v-select',{attrs:{\"items\":_vm.views,\"item-text\":\"name\",\"item-value\":\"id\",\"label\":\"Select Predefined View\"},model:{value:(_vm.selectedView),callback:function ($$v) {_vm.selectedView=$$v},expression:\"selectedView\"}})],1):_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\"}},[_c('entity-search-autocomplete',{attrs:{\"label\":_vm.$t('savedReportConfigCard.filters.title'),\"placeholder\":_vm.$t('savedReportConfigCard.filters.placeholder'),\"multiple\":true},model:{value:(_vm.searchEntities),callback:function ($$v) {_vm.searchEntities=$$v},expression:\"searchEntities\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('fieldset',{staticClass:\"pl-3\",staticStyle:{\"height\":\"400px\",\"overflow-y\":\"scroll\"}},[_c('legend',[_vm._v(\"Field to Include\")]),_vm._l((_vm.availableFieldsToInclude),function(field){return _c('v-checkbox',{key:field.id,attrs:{\"hide-details\":\"\",\"label\":field.name,\"value\":field.id},model:{value:(_vm.fieldsToInclude),callback:function ($$v) {_vm.fieldsToInclude=$$v},expression:\"fieldsToInclude\"}})})],2)]),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('fieldset',{staticClass:\"pl-3\",staticStyle:{\"height\":\"400px\"}},[_c('legend',[_vm._v(\"Tags to Include\")]),_vm._l((_vm.availableTagsToInclude),function(key){return _c('v-checkbox',{key:key,attrs:{\"hide-details\":\"\",\"label\":key,\"value\":key},model:{value:(_vm.tagSelections),callback:function ($$v) {_vm.tagSelections=$$v},expression:\"tagSelections\"}})}),_c('form-dialog',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mt-2\",attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]}}]),model:{value:(_vm.isAddingTag),callback:function ($$v) {_vm.isAddingTag=$$v},expression:\"isAddingTag\"}},[_c('form-card',{attrs:{\"title\":\"Add Tag\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('back-button',{on:{\"click\":function($event){_vm.isAddingTag = false}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.addTag(_vm.tagSearch)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" Add \")],1)]},proxy:true}])},[_c('entity-search-autocomplete',{attrs:{\"types\":['TagKey'],\"label\":\"Search for tag...\"},model:{value:(_vm.tagSearch),callback:function ($$v) {_vm.tagSearch=$$v},expression:\"tagSearch\"}})],1)],1)],2)]),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('fieldset',{staticClass:\"pl-3\",staticStyle:{\"height\":\"400px\",\"overflow-y\":\"scroll\"}},[_c('legend',[_vm._v(\"Values\")]),_c('v-radio-group',{staticClass:\"mt-0\",model:{value:(_vm.dataset),callback:function ($$v) {_vm.dataset=$$v},expression:\"dataset\"}},_vm._l((_vm.datasets),function(d){return _c('v-radio',{key:d.id,staticClass:\"mt-2\",attrs:{\"value\":d.id,\"label\":d.name}})}),1),_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"hide-details\":\"\",\"label\":\"SUM(Actual)\",\"value\":\"Actual\"},model:{value:(_vm.costViews),callback:function ($$v) {_vm.costViews=$$v},expression:\"costViews\"}}),_c('v-checkbox',{attrs:{\"hide-details\":\"\",\"label\":\"SUM(Utilization)\",\"value\":\"Utilized\"},model:{value:(_vm.costViews),callback:function ($$v) {_vm.costViews=$$v},expression:\"costViews\"}})],1)]),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('fieldset',{staticClass:\"pl-3\",staticStyle:{\"height\":\"400px\",\"overflow-y\":\"scroll\"}},[_c('legend',[_vm._v(\"Schedule\")]),(!_vm.tenantStore.hasTenantFeature('ScheduledReports'))?_c('v-alert',{staticClass:\"mt-2\",attrs:{\"color\":\"warning\",\"text\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" Scheduled reports have not been enabled for this tenant. \")],1):_c('div',[_c('v-list-item',[_c('v-list-item-content',[_c('v-switch',{attrs:{\"label\":_vm.$t('savedReportConfigCard.deliverInEmail.title')},model:{value:(_vm.deliverInEmail),callback:function ($$v) {_vm.deliverInEmail=$$v},expression:\"deliverInEmail\"}})],1),_c('v-list-item-action',[_c('v-btn',{attrs:{\"color\":\"secondary\",\"disabled\":!_vm.deliverInEmail},on:{\"click\":function($event){_vm.isViewingSchedule = true}}},[_vm._v(\"Edit\")])],1)],1),_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mail\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.recipients.join(', '))+\" \")]),_c('v-list-item-subtitle',[_vm._v(\" Recipients \")])],1)],1),_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"schedule\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.frequency === 'Days' ? 'Daily' : _vm.frequency === 'Weeks' ? 'Weekly' : 'Monthly')+\", \"+_vm._s(_vm.timeOfDay)+\":00 \")]),_c('v-list-item-subtitle',[_vm._v(\"Frequency \")])],1)],1)],1)],1)])],1)],1),_c('form-dialog',{model:{value:(_vm.isViewingSchedule),callback:function ($$v) {_vm.isViewingSchedule=$$v},expression:\"isViewingSchedule\"}},[_c('form-card',{attrs:{\"title\":\"Schedule\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('back-button',{on:{\"click\":function($event){_vm.isViewingSchedule = false}}})]},proxy:true}])},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('emails-autocomplete',{attrs:{\"label\":_vm.$t('savedReportConfigCard.recipients.title'),\"disabled\":!_vm.deliverInEmail},model:{value:(_vm.recipients),callback:function ($$v) {_vm.recipients=$$v},expression:\"recipients\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('savedReportConfigCard.scheduledStartDate.title'),\"disabled\":!_vm.deliverInEmail},model:{value:(_vm.schedulingStartDate),callback:function ($$v) {_vm.schedulingStartDate=$$v},expression:\"schedulingStartDate\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('text-date-picker',{attrs:{\"label\":_vm.$t('savedReportConfigCard.scheduledEndDate.title'),\"disabled\":!_vm.deliverInEmail},model:{value:(_vm.schedulingEndDate),callback:function ($$v) {_vm.schedulingEndDate=$$v},expression:\"schedulingEndDate\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-radio-group',{attrs:{\"row\":\"\"},model:{value:(_vm.frequency),callback:function ($$v) {_vm.frequency=$$v},expression:\"frequency\"}},[_c('v-radio',{attrs:{\"label\":_vm.$t('savedReportConfigCard.days.title'),\"value\":\"Days\",\"disabled\":!_vm.deliverInEmail}}),_c('v-radio',{attrs:{\"label\":_vm.$t('savedReportConfigCard.weeks.title'),\"value\":\"Weeks\",\"disabled\":!_vm.deliverInEmail}}),_c('v-radio',{attrs:{\"label\":_vm.$t('savedReportConfigCard.months.title'),\"value\":\"Months\",\"disabled\":!_vm.deliverInEmail}})],1)],1),(_vm.frequency === 'Weeks')?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('savedReportConfigCard.selectedDaysOfWeek.title'),\"items\":_vm.daysOfWeek,\"multiple\":\"\",\"chips\":\"\"},model:{value:(_vm.selectedDaysOfWeek),callback:function ($$v) {_vm.selectedDaysOfWeek=$$v},expression:\"selectedDaysOfWeek\"}})],1):_vm._e(),(_vm.frequency === 'Months')?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('savedReportConfigCard.monthlyFrequency.title'),\"disabled\":!_vm.deliverInEmail},model:{value:(_vm.monthlyFrequencyValue),callback:function ($$v) {_vm.monthlyFrequencyValue=$$v},expression:\"monthlyFrequencyValue\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-slider',{staticClass:\"mt-4\",attrs:{\"label\":\"Time\",\"thumb-color\":\"secondary darken-1\",\"min\":0,\"max\":23,\"step\":1,\"thumb-size\":30,\"thumb-label\":\"always\",\"disabled\":!_vm.deliverInEmail},scopedSlots:_vm._u([{key:\"thumb-label\",fn:function({ value }){return [_vm._v(\" \"+_vm._s(value === 0 ? '12am' : value === 12 ? 'Noon' : value < 12 ? `${value}am` : `${value - 12}pm`)+\" \")]}}]),model:{value:(_vm.timeOfDay),callback:function ($$v) {_vm.timeOfDay=$$v},expression:\"timeOfDay\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('timezone-select',{attrs:{\"disabled\":true},model:{value:(_vm.timezone),callback:function ($$v) {_vm.timezone=$$v},expression:\"timezone\"}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-select',{attrs:{\"value\":_vm.value,\"items\":_vm.dateRanges,\"item-text\":\"name\",\"item-value\":\"id\",\"label\":_vm.$t('dateRangeSelect.label'),\"hide-details\":_vm.hideDetails,\"solo\":_vm.solo,\"flat\":_vm.flat,\"filled\":_vm.filled},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"dateRangeSelect.label\": \"Date range\",\r\n \"dateRangeSelect.key_30d.title\": \"Last 30 days\",\r\n \"dateRangeSelect.key_60d.title\": \"Last 60 days\",\r\n \"dateRangeSelect.key_90d.title\": \"Last 90 days\",\r\n \"dateRangeSelect.key_lastMonth.title\": \"Last month\",\r\n \"dateRangeSelect.key_thisMonth.title\": \"This month\",\r\n \"dateRangeSelect.key_6m.title\": \"Last 6 months\",\r\n \"dateRangeSelect.key_13m.title\": \"All usage\",\r\n \"dateRangeSelect.key_all.title\": \"All usage\",\r\n \"dateRangeSelect.key_custom.title\": \"Custom\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeSelect.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeSelect.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangeSelect.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DateRangeSelect.vue?vue&type=template&id=7d51394e&\"\nimport script from \"./DateRangeSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./DateRangeSelect.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DateRangeSelect.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('fragment',[_c('v-select',{attrs:{\"value\":_vm.value,\"label\":\"Timezone\",\"items\":_vm.items,\"item-text\":\"name\",\"item-value\":\"value\",\"disabled\":_vm.disabled},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimezoneSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimezoneSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TimezoneSelect.vue?vue&type=template&id=62aec50a&\"\nimport script from \"./TimezoneSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./TimezoneSelect.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-autocomplete',{attrs:{\"value\":_vm.value,\"label\":_vm.label || _vm.$t('emailsAutocomplete.label'),\"items\":_vm.items,\"search-input\":_vm.searchText,\"clearable\":\"\",\"prepend-icon\":\"email\",\"hide-details\":_vm.hideDetails,\"hide-selected\":\"\",\"multiple\":\"\",\"chips\":\"\",\"disabled\":_vm.disabled},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"update:searchInput\":function($event){_vm.searchText=$event},\"update:search-input\":function($event){_vm.searchText=$event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(_vm.isValidEmail(_vm.searchText))?_c('v-list-item',{on:{\"click\":function($event){return _vm.addEmail(_vm.searchText)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"add\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('emailsAutocomplete.createPrompt'))+\" \")])],1):(!_vm.searchText)?_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"info\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('emailsAutocomplete.pleaseTypePrompt'))+\" \")])],1):_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")])],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('emailsAutocomplete.notValidEmail'))+\" \")])],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n * Helpful validation functions that work directly with vuetify's form element validation.\r\n * NOTE: You should turn on lazy validatation in your form e.g. \r\n *\r\n * Installation (main.ts):\r\n * import './plugins/validation';\r\n * Vue.use(VueFragment);\r\n *\r\n * Usage:\r\n * :rules=\"[$rules.required(), $rules.maxLength(50)]\"\r\n *\r\n * Or, with custom messages:\r\n * :rules=\"[$rules.required('Name is required'), $rules.maxLength(50, 'Name must be less than 50 characters')]\"\r\n *\r\n * Conditionally required:\r\n * :rules=\"[$rules.requiredIf(() => someProp > 10), $rules.maxLength(50)]\"\r\n *\r\n * Can handle async validation:\r\n * (element)\r\n * $refs.myfield, message: 'OPTIONALMESSAGE', method: someAsyncValidator})]\"\r\n * >\r\n * (async validation method)\r\n * async someAsyncValidator(val) { return await this.someFunc(val); }\r\n */\r\n\r\nimport { i18n } from '../i18n';\r\n\r\nexport const emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\nconst timeRegex = /^[012]?[0-9]:[0-5][0-9]$/;\r\nconst digitRegex = /(?=.*\\d)/;\r\nconst upperCaseRegex = /(?=.*[A-Z])/;\r\nconst lowerCaseRegex = /(?=.*[a-z])/;\r\nconst specialCharRegex = /(?=.*[-+_!@#$%^&*.,?])/;\r\n\r\nexport interface IAsyncValidator {\r\n component: any;\r\n method: any;\r\n message?: string;\r\n}\r\n\r\nexport default {\r\n install(Vue: any) {\r\n Vue.prototype.$rules = {\r\n required(message?: string) {\r\n return (v?: string) => !!v || message || i18n.t('validation.required');\r\n },\r\n requiredIf(getter: any, message?: string) {\r\n return (v?: string) => !getter() || !!v || message || i18n.t('validation.required');\r\n },\r\n requiredLength(num: number, message?: string) {\r\n return Vue.prototype.$rules.maxLength(num, message) || Vue.prototype.$rules.minLength(num, message);\r\n },\r\n maxLength(num: number, message?: string) {\r\n return (v?: string | string[]) => (v || '').length <= num || message || i18n.t('validation.maxLength', { num });\r\n },\r\n minLength(num: number, message?: string) {\r\n return (v?: string | string[]) => (v || '').length >= num || message || i18n.t('validation.minLength', { num });\r\n },\r\n email(message?: string) {\r\n return (v?: string) => !v || emailRegex.test(v) || message || i18n.t('validation.email');\r\n },\r\n time(message?: string) {\r\n return (v?: string) => !v || timeRegex.test(v) || message || i18n.t('validation.time');\r\n },\r\n multipleOf(num: number, message?: string) {\r\n return (v?: number) => !v || (v || 0) % num == 0 || message || i18n.t('validation.multipleOf');\r\n },\r\n max(num: number, message?: string) {\r\n return (v?: number) => (v || 0) <= num || message || i18n.t('validation.max', { num });\r\n },\r\n min(num: number, message?: string) {\r\n return (v?: number) => (v || 0) >= num || message || i18n.t('validation.min', { num });\r\n },\r\n custom(fn: any, message?: string) {\r\n return () => !fn() || message || i18n.t('validation.invalid');\r\n },\r\n equalTo(comparisonValue: any, message?: string) {\r\n return (v?: any) => comparisonValue === v || message || i18n.t('validation.doesNotMatch');\r\n },\r\n containsDigit(message?: string) {\r\n return (v?: string) => !v || digitRegex.test(v) || message || i18n.t('validation.containsDigit');\r\n },\r\n containsLowercase(message?: string) {\r\n return (v?: string) => !v || lowerCaseRegex.test(v) || message || i18n.t('validation.containsLower');\r\n },\r\n containsUppercase(message?: string) {\r\n return (v?: string) => !v || upperCaseRegex.test(v) || message || i18n.t('validation.containsUpper');\r\n },\r\n containsSpecialCharacter(message?: string) {\r\n return (v?: string) => !v || specialCharRegex.test(v) || message || i18n.t('validation.containsSpecialChar');\r\n },\r\n test(regex:RegExp, message?: string) {\r\n return (v?:string) => !v || regex.test(v) || message || i18n.t('validation.regex');\r\n },\r\n\r\n /**\r\n * @description Create an async validator e.g. $rules.asyncValidator({component:() => $refs.REFNAME, message: 'OPTIONALMESSAGE', method: someAsyncValidator})\r\n * @param {IAsyncValidator} validator Model defining async validator behaviour. Validator method: e.g. async someAsyncValidator(val) { return await this.someFunc(val); }\r\n * @returnType {Function}\r\n */\r\n asyncValidator(validator: IAsyncValidator) {\r\n const message = validator.message || i18n.t('validation.invalid');\r\n\r\n let myValue = true;\r\n\r\n setTimeout(() => {\r\n validator.component().rules.push(() => myValue || message);\r\n }, 1);\r\n\r\n let running = false;\r\n return (v: any) => {\r\n if (running) {\r\n return true;\r\n }\r\n running = true;\r\n (async () => {\r\n myValue = await validator.method(v);\r\n validator.component().validate();\r\n running = false;\r\n })();\r\n return true;\r\n };\r\n }\r\n };\r\n }\r\n};\r\n","\r\nimport { emailRegex } from '@/plugins/validation';\r\n\r\nexport default {\r\n props: { value: Array, hideDetails: Boolean, disabled: Boolean, label: String },\r\n data() {\r\n return { items: [...(this.value || [])], searchText: null };\r\n },\r\n methods: {\r\n isValidEmail(searchText) {\r\n return emailRegex.test(searchText);\r\n },\r\n addEmail(searchText) {\r\n this.items.push(searchText);\r\n this.$emit('input', [...this.value, searchText]);\r\n this.searchText = null;\r\n },\r\n },\r\n};\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailsAutocomplete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailsAutocomplete.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailsAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailsAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./EmailsAutocomplete.vue?vue&type=template&id=1f16286d&\"\nimport script from \"./EmailsAutocomplete.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmailsAutocomplete.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./EmailsAutocomplete.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { watch, computed, toRefs, reactive } from 'vue';\r\nimport { defineComponent } from 'vue';\r\nimport DateRangeSelect from '@/components/Domain.Usage/DateRangeSelect.vue';\r\nimport TimezoneSelect from '@/components/Common/TimezoneSelect.vue';\r\nimport EmailsAutocomplete from '@/components/Common/EmailsAutocomplete.vue';\r\nimport { ISearchEntityViewModel } from '@/components/Common/EntitySearchAutocomplete.vue';\r\nimport moment from '@/lib/moment';\r\nimport AuthClient from '@/lib/Auth';\r\nimport { Granularity, PluralEntityType, ISavedReportResult } from '@/models';\r\nimport DateKey from '@/lib/DateKey';\r\nimport { useTenantStore, useDatasetState } from '@/stores/tenant';\r\nimport { getCustomViews } from '@/lib/Api';\r\n\r\nexport default defineComponent({\r\n components: { DateRangeSelect, TimezoneSelect, EmailsAutocomplete },\r\n props: {\r\n loading: Boolean,\r\n value: Object,\r\n },\r\n setup(props) {\r\n const tenantStore = useTenantStore();\r\n const { hasUsageDataset, hasEmissionsDataset } = useDatasetState(tenantStore);\r\n\r\n const state = reactive({\r\n isCreatingSchedule: false,\r\n reportId: null,\r\n reportName: null,\r\n isValid: false,\r\n dateRangeKey: '30d',\r\n topXResults: 10,\r\n dates: [],\r\n searchEntities: [],\r\n schedulingStartDate: new Date(),\r\n schedulingEndDate: moment().add(1, 'years').toDate(),\r\n deliverInEmail: false,\r\n recipients: [AuthClient.userEmail],\r\n frequency: 'Days',\r\n timeOfDay: 0,\r\n timezone: 0,\r\n monthlyFrequencyValue: 1,\r\n selectedDaysOfWeek: ['Monday'],\r\n daysOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n granularity: Granularity.daily,\r\n usePredefinedView: false,\r\n views: [],\r\n selectedView: null,\r\n isViewingSchedule: false,\r\n tagSelections: [],\r\n costViews: ['Actual'],\r\n dataset: 'Usage',\r\n datasets: [\r\n hasUsageDataset ? { name: 'Usage', id: 'Usage' } : null,\r\n hasEmissionsDataset ? { name: 'Energy & Emissions', id: 'EnergyAndEmissions' } : null,\r\n ].filter(r => r),\r\n availableTagsToInclude: [],\r\n fieldsToInclude: [],\r\n availableFieldsToInclude: [\r\n { name: 'Cloud Vendor', id: PluralEntityType.cloudProviders },\r\n { name: 'Subscription Name', id: PluralEntityType.subscriptions },\r\n { name: 'Product Category', id: PluralEntityType.productCategories },\r\n { name: 'Product Name', id: PluralEntityType.products },\r\n { name: 'Service', id: PluralEntityType.services },\r\n { name: 'Meter', id: PluralEntityType.meters },\r\n { name: 'Geography', id: PluralEntityType.geographies },\r\n { name: 'Region', id: PluralEntityType.regions },\r\n ],\r\n tagSearch: null,\r\n isAddingTag: false,\r\n });\r\n\r\n getCustomViews().then((v) => (state.views = v));\r\n\r\n watch(\r\n () => [tenantStore.tagKey1, tenantStore.tagKey2, tenantStore.tagKey3],\r\n ([tagKey1, tagKey2, tagKey3]) => {\r\n if (state.availableTagsToInclude.length) return;\r\n state.availableTagsToInclude = [tagKey1, tagKey2, tagKey3].filter((t) => t);\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => props.value,\r\n (val: ISavedReportResult | null | undefined) => {\r\n if (!val) return;\r\n state.reportId = val.id;\r\n state.reportName = val.name;\r\n state.dateRangeKey = val.dateRangeKey;\r\n\r\n const dateRangeKey = new DateKey(state.dateRangeKey);\r\n const fromDate = val.fromDate ? new Date(val.fromDate) : null;\r\n const toDate = val.toDate ? new Date(val.toDate) : null;\r\n state.dates = dateRangeKey.getEffectiveDateRange(fromDate, toDate);\r\n\r\n state.topXResults = val.topXResults || 10;\r\n state.searchEntities = (val.filters || []).map((r) => ({\r\n Id: r.id,\r\n Name: r.name,\r\n Type: r.type,\r\n }));\r\n state.costViews = val.costViews || ['Actual'];\r\n\r\n state.granularity = val.granularity;\r\n state.usePredefinedView = !!val.savedViewId;\r\n state.selectedView = val.savedViewId || null;\r\n const segregateByParts = val.segregateBy.split(',');\r\n state.fieldsToInclude = segregateByParts.filter((s) => !s.startsWith('tags/'));\r\n state.tagSelections = segregateByParts\r\n .filter((s) => s.startsWith('tags/'))\r\n .map((s) => s.substring('tags/'.length));\r\n\r\n const allTags = [...state.availableTagsToInclude, ...state.tagSelections];\r\n state.availableTagsToInclude = allTags.filter((value, index) => allTags.indexOf(value) === index);\r\n state.dataset = val.dataset || 'Usage';\r\n\r\n if (val.schedule) {\r\n state.deliverInEmail = true;\r\n state.frequency = val.schedule.frequency;\r\n state.recipients = val.schedule.recipients;\r\n state.schedulingStartDate = moment(val.schedule.effectiveFrom).toDate();\r\n state.schedulingEndDate = moment(val.schedule.effectiveTo).toDate();\r\n state.timeOfDay = val.schedule.scheduledHour;\r\n state.monthlyFrequencyValue = val.schedule.scheduledDay;\r\n state.timezone = 0;\r\n state.selectedDaysOfWeek = val.schedule.daysOfWeek;\r\n }\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n watch(\r\n () => state.dateRangeKey,\r\n (key) => {\r\n if (key === 'custom') return;\r\n const dateRangeKey = new DateKey(key);\r\n state.dates = dateRangeKey.getEffectiveDateRange(null, null);\r\n },\r\n { immediate: true }\r\n );\r\n\r\n const form = computed(() => {\r\n const segregateBy = (state.fieldsToInclude || [])\r\n .concat((state.tagSelections || []).map((t) => `tags/${t}`))\r\n .join(',');\r\n const formData: Partial = {\r\n name: state.reportName,\r\n dateRangeKey: state.dateRangeKey,\r\n topXResults: state.topXResults,\r\n fromDate: state.dates[0] || null,\r\n toDate: state.dates[1] || new Date(),\r\n segregateBy,\r\n filters: (state.searchEntities || []).map((e) => ({\r\n id: e.Id,\r\n name: e.Name,\r\n type: e.Type,\r\n })),\r\n schedule: null,\r\n savedViewId: state.usePredefinedView ? state.selectedView : null,\r\n granularity: state.granularity,\r\n costViews: state.costViews || ['Actual'],\r\n dataset: state.dataset\r\n };\r\n if (state.deliverInEmail) {\r\n formData.schedule = {\r\n frequency: state.frequency,\r\n recipients: state.recipients,\r\n effectiveFrom: state.schedulingStartDate.toISOString(),\r\n effectiveTo: state.schedulingEndDate.toISOString(),\r\n scheduledHour: state.timeOfDay,\r\n scheduledDay: state.monthlyFrequencyValue,\r\n timezoneOffset: state.timezone,\r\n daysOfWeek: state.selectedDaysOfWeek,\r\n subject: null,\r\n messageBody: null,\r\n scheduleId: null,\r\n };\r\n }\r\n return formData;\r\n });\r\n\r\n const addTag = (tag: ISearchEntityViewModel) => {\r\n if (!state.availableTagsToInclude.includes(tag.Id)) state.availableTagsToInclude.push(tag.Id);\r\n state.isAddingTag = false;\r\n };\r\n\r\n return { ...toRefs(state), form, tenantStore, addTag };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ReportCard.vue?vue&type=template&id=04389e22&\"\nimport script from \"./ReportCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ReportCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/savedreports\",\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(_vm.$t('postReportButton.saveAndView'))+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"postReportButton.errorMessage\": \"There was an error encountered while creating this report. If everything looks right please contact support so we can help you :)\",\r\n \"postReportButton.saveAndView\": \"Save and View\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostReportButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostReportButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostReportButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PostReportButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PostReportButton.vue?vue&type=template&id=1745226e&\"\nimport script from \"./PostReportButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PostReportButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PostReportButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent } from \"vue\";\r\nimport ReportCard from \"@/components/Domain.Reports/ReportCard.vue\";\r\nimport PostReportButton from \"@/components/Domain.Reports/PostReportButton.vue\";\r\n\r\nexport default defineComponent({\r\n components: { ReportCard, PostReportButton },\r\n methods: {\r\n handleSuccessfulCreation($event:any) {\r\n this.$router.push(`/custom/reports/${$event.id}`);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateReport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateReport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateReport.vue?vue&type=template&id=245f8e26&\"\nimport script from \"./CreateReport.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateReport.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":`Edit ${_vm.report ? _vm.report.name : 'Report'}`,\"icon\":\"edit\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticStyle:{\"max-width\":\"80em\",\"margin-right\":\"auto\"}},[_c('ReportCard',{attrs:{\"value\":_vm.report},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, loading }){return [_c('v-spacer'),_c('PutReportButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingReport'),expression:\"'creatingReport'\"}],attrs:{\"value\":{ ...form, id: _vm.report.id },\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){return _vm.handleSuccessfulCreation($event)}}})]}}])})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":`/api/savedreports/${(_vm.value || {}).id}`,\"value\":_vm.value,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putReportButton.errorMessage\": \"There was an error encountered while updating this report. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutReportButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutReportButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutReportButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutReportButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutReportButton.vue?vue&type=template&id=393186d2&\"\nimport script from \"./PutReportButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PutReportButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutReportButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport ReportCard from \"@/components/Domain.Reports/ReportCard.vue\";\r\nimport PutReportButton from \"@/components/Domain.Reports/PutReportButton.vue\";\r\nimport { getSavedReport } from \"@/lib/Api\";\r\nimport { Route } from \"vue-router\";\r\nimport { ISavedReportResult } from \"@/models\";\r\n\r\nexport default defineComponent({\r\n components: { ReportCard, PutReportButton },\r\n setup() {\r\n const report = ref(null);\r\n return { report };\r\n },\r\n watch: {\r\n $route: {\r\n async handler(route: Route) {\r\n this.report = await getSavedReport(route.params.id);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n methods: {\r\n handleSuccessfulCreation($event:any) {\r\n this.$router.push(`/custom/reports/${$event.id}`);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditReport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditReport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditReport.vue?vue&type=template&id=5254dc7c&\"\nimport script from \"./EditReport.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditReport.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":`Clone ${_vm.report ? _vm.report.name : 'Report'}`,\"icon\":\"content_copy\"}}),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('div',{staticStyle:{\"max-width\":\"80em\",\"margin\":\"auto\"}},[_c('ReportCard',{attrs:{\"value\":_vm.report},scopedSlots:_vm._u([{key:\"actions\",fn:function({ form, formId, isValid, loading }){return [_c('v-spacer'),_c('post-report-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingReport'),expression:\"'creatingReport'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){return _vm.handleSuccessfulCreation($event)}}})]}}])})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport ReportCard from \"@/components/Domain.Reports/ReportCard.vue\";\r\nimport PostReportButton from \"@/components/Domain.Reports/PostReportButton.vue\";\r\nimport { getSavedReport } from \"@/lib/Api\";\r\nimport { Route } from \"vue-router\";\r\nimport { ISavedReportResult } from \"@/models\";\r\n\r\nexport default defineComponent({\r\n components: { ReportCard, PostReportButton },\r\n setup() {\r\n const report = ref(null);\r\n return { report };\r\n },\r\n watch: {\r\n $route: {\r\n async handler(route: Route) {\r\n this.report = await getSavedReport(route.params.id);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n methods: {\r\n handleSuccessfulCreation($event:any) {\r\n this.$router.push(`/custom/reports/${$event.id}`);\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloneReport.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CloneReport.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CloneReport.vue?vue&type=template&id=3c7488c8&\"\nimport script from \"./CloneReport.vue?vue&type=script&lang=ts&\"\nexport * from \"./CloneReport.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('customViews.title'),\"icon\":\"table_view\",\"extended\":\"\",\"extension-height\":10}}),_c('v-container',[_c('content-card',{attrs:{\"title\":_vm.$t('customViews.title'),\"caption\":_vm.$t('customViews.subtitle')},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [(_vm.tenantStore.hasPermission('CanContribute'))?_c('PostCustomViewDialog',{on:{\"http2xx\":function($event){return _vm.loadReports()}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',[_vm._v(\"add\")]),_vm._v(\" Create \")],1)]}}],null,false,294327437),model:{value:(_vm.isCreating),callback:function ($$v) {_vm.isCreating=$$v},expression:\"isCreating\"}}):_vm._e()]},proxy:true}])},[_c('CustomViewsTable',{attrs:{\"items\":_vm.customViews,\"loading\":_vm.customViewsLoading},on:{\"http2xx\":_vm.loadReports},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"item\",fn:function({ item }){return [_c('CustomViewMenu',{attrs:{\"value\":item},on:{\"http2xx\":_vm.loadReports}})]}}:null],null,true)})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.records,\"item-key\":\"id\",\"mobile-breakpoint\":\"0\",\"page\":_vm.currentPage,\"items-per-page\":_vm.itemsPerPage,\"loading-text\":_vm.$t('customViewsTable.loading'),\"loading\":_vm.loading,\"disable-sort\":true},on:{\"update:page\":function($event){_vm.currentPage=$event},\"update:itemsPerPage\":function($event){_vm.itemsPerPage=$event},\"update:items-per-page\":function($event){_vm.itemsPerPage=$event},\"page-count\":function($event){_vm.pageCount = $event}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('customViewsTable.noCustomViews'))+\" \")]},proxy:true},{key:`item.name`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/${item.id}`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])]}},{key:`item.filterDescription`,fn:function({ item }){return [_c('small',[_vm._v(_vm._s(item.filterDescription))])]}},{key:`item.loading`,fn:function({ item }){return [(item.lastMonthActual === undefined)?_c('v-col',[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"width\":3,\"size\":20,\"color\":\"primary\"}})],1):_vm._e()]}},{key:`item.lastMonthActual`,fn:function({ item }){return [(item.lastMonthActual === undefined)?_c('v-col',[_vm._v(\"-\")]):_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.lastMonthActual || 0,item.currencyCode)))])]}},{key:`item.currentMonthForecast`,fn:function({ item }){return [(item.currentMonthForecast === undefined)?_c('v-col',[_vm._v(\"-\")]):_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.currentMonthForecast || 0,item.currencyCode)))])]}},{key:`item.last12Weeks`,fn:function({ item }){return [(item.last12Weeks === undefined)?_c('v-col',[_vm._v(\"-\")]):_c('v-col',{staticClass:\"text-right\"},[_c('v-sparkline',{attrs:{\"value\":item.last12Weeks,\"auto-draw\":\"\"}})],1)]}},{key:`item.forecastDeltaSpend`,fn:function({ item }){return [(item.forecastDeltaSpend === undefined)?_c('v-col',[_vm._v(\"-\")]):_c('v-col',[_vm._v(_vm._s(_vm._f(\"currency\")(item.forecastDeltaSpend,item.currencyCode))+\" \"),_c('comparison-icon',{attrs:{\"value\":item.currentMonthForecast,\"compare\":item.lastMonthActual,\"right\":\"\"}}),_vm._v(\" \"+_vm._s((item.forecastDeltaPercentage * 100).toFixed(2))+\"% \")],1)]}},{key:`item.budgetStatus`,fn:function({ item }){return [(item.budgetStatus == 2)?_c('v-col',{staticClass:\"error--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"info\")])],1):(item.budgetStatus == 1)?_c('v-col',{staticClass:\"warning--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"info\")])],1):(item.budgetStatus == 0)?_c('v-col',{staticClass:\"success--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"info\")])],1):_c('v-col',{staticClass:\"text-center\"},[_c('v-col',[_vm._v(\"n/a\")])],1)]}},{key:`item.actions`,fn:function({ item }){return [_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditCustomView(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteCustomView(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)],1)],1)]}}],null,true)}),_c('PutCustomViewDialog',{attrs:{\"customView\":_vm.focusedCustomView},on:{\"editComplete\":_vm.handleEditComplete,\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},model:{value:(_vm.isEditingCustomView),callback:function ($$v) {_vm.isEditingCustomView=$$v},expression:\"isEditingCustomView\"}}),_c('DeleteCustomViewDialog',{attrs:{\"customView\":_vm.focusedCustomView},on:{\"deleteComplete\":_vm.handleDeleteComplete,\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},model:{value:(_vm.isDeletingCustomView),callback:function ($$v) {_vm.isDeletingCustomView=$$v},expression:\"isDeletingCustomView\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"title\":_vm.$t('deleteCustomViewDialog.title'),\"subtitle\":_vm.$t('deleteCustomViewDialog.subtitle'),\"value\":{ name: _vm.customView?.name },\"loading\":_vm.$wait.is('deletingCustomView'),\"warning-text\":_vm.$t('deleteCustomViewDialog.warningText')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-customView-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deletingCustomView'),expression:\"'deletingCustomView'\"}],attrs:{\"value\":_vm.customView,\"form\":formId,\"clear\":clear,\"loading\":loading,\"valid\":isValid},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulDeletion(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/customViews/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n {\r\n \"en\": {\r\n \"deleteCustomViewButton.errorMessage\": \"There was an error encountered while deleting this custom view. If everything looks right please contact support so we can help you :)\"\r\n }\r\n }\r\n \r\n \r\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteCustomViewButton.vue?vue&type=template&id=7d66ec4f&\"\nimport script from \"./DeleteCustomViewButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteCustomViewButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteCustomViewDialog.events.successfulDeletion\": \"Successfully deleted the custom view '{customViewName}'\",\r\n \"deleteCustomViewDialog.title\": \"Delete Custom View\",\r\n \"deleteCustomViewDialog.subtitle\": \"Please enter the name of this custom view to delete it.\",\r\n \"deleteCustomViewDialog.warningText\": \"Deleting this custom view will also delete all associated budgets if any.\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteCustomViewDialog.vue?vue&type=template&id=4ce692bc&\"\nimport script from \"./DeleteCustomViewDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteCustomViewDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('customView-card-dialog',{attrs:{\"value\":_vm.value,\"customView\":_vm.customView,\"loading\":_vm.$wait.is('updatingCustomView')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ form, formId, isValid, loading, close }){return [_c('put-customView-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('updatingCustomView'),expression:\"'updatingCustomView'\"}],attrs:{\"value\":{ ...form, id: _vm.customView.id },\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCreation(form))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-put-button',_vm._g(_vm._b({attrs:{\"href\":`/api/customViews/${(_vm.value || {}).id}`,\"value\":_vm.value,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-put-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putCustomViewButton.errorMessage\": \"There was an error encountered while updating this custom view. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutCustomViewButton.vue?vue&type=template&id=1d95da88&\"\nimport script from \"./PutCustomViewButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PutCustomViewButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutCustomViewButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"putCustomViewDialog.events.successfulUpdates\": \"Successfully updated the customView '{customViewName}'\"\r\n }\r\n}\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PutCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PutCustomViewDialog.vue?vue&type=template&id=3ee41043&\"\nimport script from \"./PutCustomViewDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./PutCustomViewDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PutCustomViewDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { getCustomView } from '@/lib/Api';\r\nimport { computed, defineComponent, ref } from 'vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { ICustomViewSummaryResult } from '@/models';\r\nimport DeleteCustomViewDialog from '@/components/Domain.CustomViews/DeleteCustomViewDialog.vue';\r\nimport PutCustomViewDialog from '@/components/Domain.CustomViews/PutCustomViewDialog.vue';\r\n\r\nexport default defineComponent({\r\n components: { PutCustomViewDialog, DeleteCustomViewDialog },\r\n data() {\r\n return {\r\n currentPage: 1,\r\n pageCount: 0,\r\n itemsPerPage: 10,\r\n indexDictionary: {},\r\n };\r\n },\r\n props: {\r\n items: {\r\n type: Array,\r\n default: null,\r\n },\r\n loading: Boolean,\r\n routePrefix: {\r\n type: String,\r\n default: '/customviews',\r\n },\r\n },\r\n setup(p) {\r\n const focusedCustomView = ref(null);\r\n\r\n const records = computed(() => {\r\n if (!p.items) return [];\r\n return p.items.map((b: ICustomViewSummaryResult) => ({ ...b }));\r\n });\r\n\r\n const isEditingCustomView = ref(false);\r\n const startEditCustomView = (customView: ICustomViewSummaryResult) => {\r\n isEditingCustomView.value = true;\r\n focusedCustomView.value = customView;\r\n };\r\n\r\n const isDeletingCustomView = ref(false);\r\n const startDeleteCustomView = (customView: ICustomViewSummaryResult) => {\r\n isDeletingCustomView.value = true;\r\n focusedCustomView.value = customView;\r\n };\r\n\r\n return {\r\n records,\r\n startDeleteCustomView,\r\n isDeletingCustomView,\r\n focusedCustomView,\r\n isEditingCustomView,\r\n startEditCustomView,\r\n };\r\n },\r\n computed: {\r\n headers() {\r\n return [\r\n { text: this.$t('customViewsTable.name'), value: 'name' },\r\n { text: this.$t('customViewsTable.filters'), value: 'filterDescription' },\r\n { text: '', value: 'loading', width: '10', sortable: false },\r\n { text: this.$t('customViewsTable.history'), value: 'last12Weeks', width: '150' },\r\n { text: this.$t('customViewsTable.lastMonth'), value: 'lastMonthActual', align: 'right' },\r\n { text: this.$t('customViewsTable.currentMonth'), value: 'currentMonthForecast', align: 'right' },\r\n { text: this.$t('customViewsTable.difference'), value: 'forecastDeltaSpend', align: 'center' },\r\n { text: this.$t('customViewsTable.budgets'), value: 'budgetStatus', align: 'center' },\r\n { text: this.$t('customViewsTable.actions'), value: 'actions', align: 'center', width: '5 %' },\r\n ];\r\n },\r\n },\r\n watch: {\r\n currentPage(newValue) {\r\n this.loadExtraDataForCurrentPage(newValue, this.itemsPerPage);\r\n },\r\n itemsPerPage(newItemsPerPage) {\r\n this.loadExtraDataForCurrentPage(this.currentPage, newItemsPerPage);\r\n },\r\n loading: {\r\n deep: true,\r\n immediate: true,\r\n handler(val) {\r\n if (!val) {\r\n this.indexDictionary = {};\r\n this.records.forEach((item, index) => {\r\n this.indexDictionary[item.id] = index;\r\n });\r\n this.loadExtraDataForCurrentPage(this.currentPage, this.itemsPerPage);\r\n }\r\n },\r\n },\r\n },\r\n methods: {\r\n handleEditComplete() {\r\n this.isEditingCustomView = false;\r\n this.focusedCustomView = null;\r\n },\r\n handleDeleteComplete() {\r\n this.isDeletingCustomView = false;\r\n this.focusedCustomView = null;\r\n },\r\n loadExtraDataForCurrentPage(currentPage, itemsPerPage) {\r\n const startIdx = (currentPage - 1) * itemsPerPage;\r\n const endIdx = startIdx + itemsPerPage;\r\n const itemsOnCurrentPage = this.records.slice(startIdx, endIdx);\r\n if (!this.loading) {\r\n this.loadDetailedData(itemsOnCurrentPage);\r\n }\r\n },\r\n async loadDetailedData(updatedItems) {\r\n try {\r\n const promises = updatedItems\r\n .filter((item) => !item.lastMonthActual)\r\n .map((item) => getCustomView(item.id));\r\n\r\n if (promises.length == 0) return;\r\n const extraDataArray = await Promise.all(promises);\r\n\r\n extraDataArray.forEach((additionalData) => {\r\n if (additionalData) {\r\n const itemIndex = this.indexDictionary[additionalData.id];\r\n if (itemIndex !== undefined) {\r\n this.$set(this.records[itemIndex], 'currencyCode', additionalData.currencyCode);\r\n this.$set(this.records[itemIndex], 'last12Weeks', additionalData.last12Weeks);\r\n this.$set(this.records[itemIndex], 'lastMonthActual', additionalData.lastMonthActual);\r\n this.$set(\r\n this.records[itemIndex],\r\n 'currentMonthForecast',\r\n additionalData.currentMonthForecast\r\n );\r\n this.$set(this.records[itemIndex], 'forecastDeltaSpend', additionalData.forecastDeltaSpend);\r\n this.$set(\r\n this.records[itemIndex],\r\n 'forecastDeltaPercentage',\r\n additionalData.forecastDeltaPercentage\r\n );\r\n this.$set(this.records[itemIndex], 'budgetStatus', additionalData.budgetStatus);\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n toastError(this.$t('customViewsTable.failedToLoad'));\r\n }\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomViewsTable.vue?vue&type=template&id=3348ea04&\"\nimport script from \"./CustomViewsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomViewsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomViewsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}])},[_c('v-list',[_c('DeleteCustomViewDialog',{attrs:{\"customView\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('customViewMenu.delete')))])],1)],1)]}}]),model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"customViewMenu.delete\": \"Delete\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViewMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomViewMenu.vue?vue&type=template&id=9693f186&\"\nimport script from \"./CustomViewMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomViewMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomViewMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport CustomViewsTable from '@/components/Domain.CustomViews/CustomViewsTable.vue';\r\nimport CustomViewMenu from '@/components/Domain.CustomViews/CustomViewMenu.vue';\r\nimport PostCustomViewDialog from '@/components/Domain.CustomViews/PostCustomViewDialog.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport { mapStores } from 'pinia';\r\nimport { getCustomViews } from '@/lib/Api';\r\nimport { defineComponent } from 'vue';\r\n\r\nexport default defineComponent({\r\n data() {\r\n return { isShowingReport: false, customViews: [], isCreating: false, customViewsLoading: true };\r\n },\r\n components: { CustomViewsTable, CustomViewMenu, PostCustomViewDialog },\r\n created() {\r\n this.loadReports();\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n methods: {\r\n loadReports: waitFor('loadingCustomViews', async function loadingReports() {\r\n try {\r\n this.customViewsLoading = true;\r\n this.customViews = await getCustomViews();\r\n this.customViewsLoading = false;\r\n } catch (err) {\r\n toastError(this.$t('customViews.failedToLoad'));\r\n }\r\n }),\r\n handleDialogClose(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/customviews');\r\n this.$title = this.$t('customViews.title');\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViews.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViews.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViews.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomViews.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomViews.vue?vue&type=template&id=402487cc&\"\nimport script from \"./CustomViews.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomViews.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomViews.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('customView.title', { customviewName: _vm.selectedCustomView ? _vm.selectedCustomView.name : '...' }),\"icon\":\"table_view\"}}),_c('v-toolbar',{attrs:{\"color\":\"transparent\",\"flat\":\"\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"to\":\"/customviews\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" \"+_vm._s(_vm.$t('customView.backButtonText'))+\" \")],1),_c('v-spacer'),(_vm.wait.is('loadingCustomView'))?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}}):_vm._e()],1),_c('v-container',{staticClass:\"pt-3\"},[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":_vm.$t('customView.currentMonth', { thisMonthName: _vm.thisMonthName }),\"subtitle\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.selectedCustomView ? _vm.selectedCustomView.currentMonthForecast : 0,_vm.currencyCode))+\" \")]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('span',{class:_vm.percentageDownFromLastMonth < 0 ? 'success--text' : 'error--text'},[_c('comparison-icon',{attrs:{\"value\":_vm.selectedCustomView ? _vm.selectedCustomView.currentMonthForecast : 0,\"compare\":_vm.selectedCustomView ? _vm.selectedCustomView.lastMonthActual : 0}}),_vm._v(\" \"+_vm._s(_vm.$t(_vm.percentageDownFromLastMonth < 0 ? \"customView.lessThan\" : \"customView.moreThan\", { percentage: _vm.percentageDownFromLastMonth, month: _vm.lastMonthName }))+\" \")],1)]},proxy:true}])}),_c('title-sheet',{attrs:{\"title\":_vm.$t('customView.lastMonth', { lastMonthName: _vm.lastMonthName }),\"subtitle\":_vm.lastMonthSubtitle},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.selectedCustomView ? _vm.selectedCustomView.lastMonthActual : 0,_vm.currencyCode))+\" \")]},proxy:true}])}),_c('title-sheet',{attrs:{\"title\":_vm.$t('customView.budgets'),\"subtitle\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 2)?_c('span',{staticClass:\"error--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"info\")])],1):(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 1)?_c('span',{staticClass:\"warning--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"info\")])],1):(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 0)?_c('span',{staticClass:\"success--text text-center\"},[_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\"info\")])],1):_c('span',{staticClass:\"text-center\"},[_c('span',[_vm._v(\"n/a\")])])]},proxy:true},{key:\"subtitle\",fn:function(){return [(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 2)?_c('span',{staticClass:\"error--text text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customView.budgetExceedsActual'))+\" \")]):(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 1)?_c('span',{staticClass:\"warning--text text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customView.budgetExceedsForecast'))+\" \")]):(_vm.selectedCustomView && _vm.selectedCustomView.budgetStatus == 0)?_c('span',{staticClass:\"success--text text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customView.budgetAllGood'))+\" \")]):_c('span',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('customView.budgetNotAvailable'))+\" \")])]},proxy:true}])})],1),_c('v-card',{staticClass:\"mx-auto\",attrs:{\"loading\":_vm.loading}},[_c('template',{slot:\"progress\"},[_c('v-progress-linear',{attrs:{\"color\":\"primary\",\"height\":\"10\",\"indeterminate\":\"\"}})],1),_c('v-card-title',{staticClass:\"mb-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.selectedCustomView ? _vm.selectedCustomView.name : '...')+\" \")]),_c('v-card-subtitle',{staticClass:\"mt-0 pt-0\"},[_vm._v(\" \"+_vm._s(_vm.selectedCustomView ? _vm.selectedCustomView.filterDescription : '...')+\" \")]),_c('v-tabs',{model:{value:(_vm.selectedTab),callback:function ($$v) {_vm.selectedTab=$$v},expression:\"selectedTab\"}},_vm._l((_vm.tabs),function(tab){return _c('v-tab',{key:tab.key,attrs:{\"to\":tab.key}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(tab.icon))]),_vm._v(\" \"+_vm._s(_vm.$t(tab.text))+\" \")],1)}),1),_c('v-divider'),_c('v-card-text',[_c('router-view',{attrs:{\"value\":_vm.selectedCustomView,\"loading\":_vm.loading}})],1),_c('v-divider'),_c('v-card-actions',[_vm._t(\"default\")],2)],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { useTenantStore, useWaitStore, storeToRefs } from '@/stores';\r\nimport { defineComponent, computed, ref } from 'vue';\r\nimport { ICustomViewResult } from '@/models';\r\nimport { getCustomView } from '@/lib/Api';\r\nimport { formatCurrency } from \"@/lib/Currencies\";\r\nimport moment from \"@/lib/moment\";\r\n\r\nexport default defineComponent({\r\n data() {\r\n return {\r\n selectedTab: 'overview',\r\n thisMonthName: moment.utc().format(\"MMMM\"),\r\n lastMonthName: moment.utc().add(-1, \"months\").format(\"MMMM\"),\r\n creditsLastMonth: 0.0,\r\n }\r\n },\r\n computed: {\r\n percentageDownFromLastMonth() {\r\n if (!this.selectedCustomView) return 0;\r\n return (-1 * (100 - (100 / this.selectedCustomView.lastMonthActual) * this.selectedCustomView.currentMonthForecast)).toFixed(2);\r\n },\r\n lastMonthSubtitle() {\r\n const lastMonth = moment.utc().add(-1, \"months\");\r\n const nocreditsTxt = `${lastMonth.format(\"MMMM\")} 1-${lastMonth.daysInMonth()}`;\r\n const creditsValue = formatCurrency(\r\n this.creditsLastMonth,\r\n this.currencyCode\r\n );\r\n return this.creditsLastMonth > 0\r\n ? this.$t(\"customView.titles.creditsLastMonth\", { credits: creditsValue })\r\n : nocreditsTxt;\r\n },\r\n },\r\n setup() {\r\n const tabs = computed(() =>\r\n [\r\n { key: 'overview', icon: 'insights', text: 'customView.overview' },\r\n { key: 'usage', icon: 'insights', text: 'customView.usage' }\r\n ].filter((t) => t)\r\n );\r\n\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const customViewId = ref();\r\n const selectedCustomView = ref(null);\r\n\r\n const loadCustomView = async () => {\r\n await whilst('loadingCustomView', async () => {\r\n selectedCustomView.value = await getCustomView(customViewId.value);\r\n });\r\n };\r\n\r\n return {\r\n tabs,\r\n customViewId,\r\n selectedCustomView,\r\n currencyCode,\r\n loadCustomView,\r\n wait: { is, whilst }\r\n };\r\n },\r\n methods: {\r\n\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (!to) return;\r\n this.customViewId = to.params.id;\r\n this.loadCustomView();\r\n this.loading = false;\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CustomView.vue?vue&type=template&id=703aa252&\"\nimport script from \"./CustomView.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomView.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CustomView.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('v-container',[_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('customView.overview.yearInReview'),\"title-icon\":\"savings\",\"loading\":_vm.$wait.is('getTenantMonthlyUsage'),\"caption\":_vm.$t('customView.overview.monthAverage', {\n total: _vm.averageMonthlySpend.value.toFixed(2),\n currency: _vm.tenantStore.currencyCode,\n })}},[_c('SpendUsageBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"granularity\":_vm.spendOptions.granularity},on:{\"click\":_vm.handleDatasetClicked}})],1),_c('content-card',{staticClass:\"pb-1 mt-3\",attrs:{\"title\":_vm.$t('customView.budgets.subTitle'),\"caption\":_vm.$t('customView.budgets.caption')}},[_c('BudgetsTable',{attrs:{\"loading\":_vm.wait.is('gettingBudgets'),\"items\":_vm.budgets,\"route-prefix\":\"/budgets\"},on:{\"http2xx\":function($event){return _vm.loadBudgets()}}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.records,\"item-key\":\"id\",\"mobile-breakpoint\":\"0\",\"loading-text\":_vm.$t('budgetsTable.loadingBudgets'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('budgetsTable.noBudgets'))+\" \")]},proxy:true},{key:`item.name`,fn:function({ item }){return [_c('span',[_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/details/${item.id}`}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])],1),_c('br'),(item.currentPeriodEndDate)?_c('small',[_vm._v(_vm._s(item.budgetPeriodString)+\" - \"+_vm._s(Math.ceil(item.daysLeftInPeriod))+\" days left\")]):_vm._e()]}},{key:`item.amount`,fn:function({ item }){return [_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.amount,item.currencyCode)))])]}},{key:`item.view`,fn:function({ item }){return [_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/customviews/${item.customView.id}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"table_view\")]),_vm._v(\" \"+_vm._s(item.customView.name)+\" \")],1)]}},{key:`item.progress`,fn:function({ item }){return [_c('consumption-bar',{attrs:{\"current-consumption\":item.currentPercentage || 0,\"predicted-consumption\":item.projectedPercentage || 0,\"max-consumption\":_vm._f(\"currency\")(item.amount,item.currencyCode),\"min-consumption\":_vm._f(\"currency\")(0,item.currencyCode)}})]}},{key:`item.actual`,fn:function({ item }){return [_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.currentSpend || 0,item.currencyCode)))])]}},{key:`item.projections`,fn:function({ item }){return [(item.currentSpend > item.amount)?_c('v-col',{staticClass:\"error--text text-right\"},[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"error\")]),_c('small',[_vm._v(_vm._s(item.forecastString))])],1):(item.projectedSpend > item.amount)?_c('v-col',{staticClass:\"warning--text text-right\"},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]),_c('small',[_vm._v(_vm._s(item.forecastString))])],1):_c('v-col',{staticClass:\"text-right\"},[_c('small',[_vm._v(_vm._s(item.forecastString))])])]}},(_vm.tenantStore.hasPermission('CanContribute'))?{key:`item.actions`,fn:function({ item }){return [_c('DeleteBudgetDialog',{attrs:{\"budget\":item},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"delete\")])],1)]}}],null,true),model:{value:(item.isDeleting),callback:function ($$v) {_vm.$set(item, \"isDeleting\", $$v)},expression:\"item.isDeleting\"}})]}}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"title\":_vm.$t('deleteBudgetDialog.title'),\"subtitle\":_vm.$t('deleteBudgetDialog.subtitle'),\"value\":{ name: _vm.budget.name },\"loading\":_vm.$wait.is('deletingBudget')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('DeleteBudgetButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deletingBudget'),expression:\"'deletingBudget'\"}],attrs:{\"value\":_vm.budget,\"form\":formId,\"clear\":clear,\"loading\":loading,\"valid\":isValid},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulDeletion(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/budgets/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n {\r\n \"en\": {\r\n \"deleteBudgetButton.errorMessage\": \"There was an error encountered while deleting this budget. If everything looks right please contact support so we can help you :)\"\r\n }\r\n }\r\n \r\n \r\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteBudgetButton.vue?vue&type=template&id=1f3a9bdf&\"\nimport script from \"./DeleteBudgetButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteBudgetButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteBudgetButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deleteBudgetDialog.events.successfulDeletion\": \"Successfully deleted the budget '{name}'\",\r\n \"deleteBudgetDialog.title\": \"Delete Budget\",\r\n \"deleteBudgetDialog.subtitle\": \"Please enter the name of this budget to delete it\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeleteBudgetDialog.vue?vue&type=template&id=395f4970&\"\nimport script from \"./DeleteBudgetDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteBudgetDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeleteBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { computed, defineComponent } from 'vue';\r\nimport ConsumptionBar from '@/components/Common/ConsumptionBar.vue';\r\nimport DeleteBudgetDialog from '@/components/Domain.Budgets/DeleteBudgetDialog.vue';\r\nimport { IBudgetResult } from '@/models';\r\nimport { mapStores } from 'pinia';\r\nimport { useTenantStore } from '@/stores';\r\n\r\nexport default defineComponent({\r\n components: { ConsumptionBar, DeleteBudgetDialog },\r\n props: {\r\n items: Array,\r\n loading: Boolean,\r\n routePrefix: {\r\n type: String,\r\n default: '/budgets',\r\n },\r\n },\r\n setup(p) {\r\n const records = computed(() => {\r\n if (!p.items) return [];\r\n return p.items.map((b: IBudgetResult) => ({ ...b, isDeleting: false }));\r\n });\r\n return { records };\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n headers() {\r\n return [\r\n { text: this.$t('budgetsTable.name'), value: 'name' },\r\n { text: this.$t('budgetsTable.view'), value: 'view', width: '20%' }, \r\n { text: this.$t('budgetsTable.progress'), value: 'progress', align: 'center', width: '25%' },\r\n { text: this.$t('budgetsTable.amount'), value: 'amount', align: 'right' },\r\n { text: this.$t('budgetsTable.actual'), value: 'actual', align: 'right' },\r\n { text: this.$t('budgetsTable.projections'), value: 'projections', align: 'right' },\r\n { text: this.$t('budgetsTable.actions'), value: 'actions', align: 'center', width: '5 %' },\r\n ];\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetsTable.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./BudgetsTable.vue?vue&type=template&id=76357a0b&\"\nimport script from \"./BudgetsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./BudgetsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./BudgetsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport SpendUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n IClickEvent,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageBarChart.vue';\r\nimport {\r\n SpendUsageOptions,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport { filterUsageParamsByFilterChips, IChipViewModel } from '@/components/Domain.Usage/UsageFilterChips.vue';\r\nimport { toastError } from '@/components/Common/Toast.vue';\r\nimport BudgetsTable from '@/components/Domain.Budgets/BudgetsTable.vue';\r\nimport {\r\n PluralEntityType,\r\n ICustomViewResult,\r\n Granularity,\r\n IBudgetResult,\r\n ISpendUsageTableRecordsViewModel,\r\n SpendFieldNames,\r\n} from '@/models';\r\nimport EntityType, { fromPlural } from '@/models/EntityType';\r\nimport { useTenantStore, useWaitStore, storeToRefs } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport { getSpend, getForecast } from '@/lib/Api';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { i18n } from '@/i18n';\r\nimport * as Api from '@/lib/Api';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\n\r\nexport default defineComponent({\r\n data() {\r\n return { isShowingReport: false, customViews: [], isCreating: false, customViewsLoading: true };\r\n },\r\n components: { SpendUsageBarChart, BudgetsTable },\r\n props: { value: Object, loading: Boolean },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n routePrefix() {\r\n return `/customViews/${this.value.id}`;\r\n },\r\n },\r\n setup(p) {\r\n const budgets = ref([]);\r\n const loadBudgets = async () =>\r\n await whilst('gettingBudgets', async function () {\r\n const view = p.value as ICustomViewResult;\r\n budgets.value = await Api.getCustomViewBudgets(view.id);\r\n });\r\n\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const { is, whilst } = useWaitStore();\r\n const spendOptions = ref({\r\n dateRangeKey: '13m',\r\n forecastRangeKey: '3m',\r\n granularity: Granularity.monthly,\r\n topXResults: 10,\r\n });\r\n const newChartData = ref({ labels: [], datasets: [] });\r\n const usageTableItems = ref(null);\r\n const filters = ref([]);\r\n const averageMonthlySpend = { value: 0.0 };\r\n const maxDate = ref(null);\r\n const loadTabUsage = async () =>\r\n await whilst('getAccountUsage', async () => {\r\n const view = p.value as ICustomViewResult;\r\n let params = convertSpendOptionsToQuery(spendOptions.value);\r\n const segregateBy = spendOptions.value.segregateBy as PluralEntityType;\r\n params = filterUsageParamsByFilterChips(filters.value, params);\r\n if (!params) return;\r\n const [usageResponse, projectionsResponse] = await Promise.all([\r\n getSpend({\r\n ...params,\r\n savedViewId: view.id,\r\n segregateBy: spendOptions.value.segregateBy,\r\n fields: [SpendFieldNames.Charges],\r\n }),\r\n getForecast(\r\n { ...params, savedViewId: view.id },\r\n spendOptions.value.dateRangeKey,\r\n spendOptions.value.forecastRangeKey\r\n ),\r\n ]);\r\n const usageDataset = convertUsageResponseToDatasets(usageResponse, {\r\n reportType: UsageReportTypes.charges,\r\n });\r\n const forecastDataset = convertProjectionsResponseToDataset(projectionsResponse);\r\n newChartData.value = {\r\n labels: [...forecastDataset.labels, ...usageDataset.labels],\r\n datasets: [...forecastDataset.datasets, ...usageDataset.datasets],\r\n };\r\n usageTableItems.value = SpendUsageTableFunctions.convertToItemRecords(\r\n params,\r\n segregateBy,\r\n usageResponse,\r\n spendOptions.value.costView\r\n );\r\n averageMonthlySpend.value = usageResponse.recordAverage || 0.0;\r\n maxDate.value = projectionsResponse?.maxUsageDate || params.toDate;\r\n });\r\n\r\n const handleDatasetClicked = ({ isOther, name, datasetGroupId }: IClickEvent) => {\r\n if (isOther) {\r\n spendOptions.value.topXResults = spendOptions.value.topXResults + 10;\r\n } else if (spendOptions.value.segregateBy === PluralEntityType.meters) {\r\n toastError(i18n.t('shared.meterInformationNotSupported'));\r\n } else {\r\n filters.value.push({\r\n id: datasetGroupId,\r\n name,\r\n type: fromPlural(spendOptions.value.segregateBy) as EntityType,\r\n });\r\n }\r\n };\r\n\r\n watch(\r\n () => [p.value, spendOptions.value, filters.value],\r\n () => {\r\n if (!p.value || !spendOptions.value || is('getAccountUsage')) return;\r\n loadTabUsage();\r\n loadBudgets();\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return {\r\n spendOptions,\r\n newChartData,\r\n usageTableItems,\r\n filters,\r\n loadTabUsage,\r\n handleDatasetClicked,\r\n averageMonthlySpend,\r\n currencyCode,\r\n wait: { is },\r\n budgets,\r\n loadBudgets,\r\n maxDate,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Overview.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Overview.vue?vue&type=template&id=7b76b14e&\"\nimport script from \"./Overview.vue?vue&type=script&lang=ts&\"\nexport * from \"./Overview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Overview.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.pageTitle,\"icon\":\"price_check\"}}),_c('v-container',[_c('title-sheets',[((_vm.tenantStore.hasTenantFeature('Budgets')))?_c('title-sheet',{attrs:{\"title\":_vm.$t('budgets.titles.totalBudgets')}},[_vm._v(\" \"+_vm._s(_vm.budgets.length + _vm.spendLimits.length)+\" \")]):_c('title-sheet',{attrs:{\"title\":_vm.$t('budgets.titles.totalSpendLimits')}},[_vm._v(\" \"+_vm._s(_vm.spendLimits.length)+\" \")]),_c('title-sheet',{attrs:{\"title\":_vm.$t('budgets.titles.totalProjectedAbove')}},[_vm._v(\" \"+_vm._s(_vm.totalProjectedAbove)+\" \"),_c('v-icon',{attrs:{\"right\":\"\",\"color\":_vm.totalProjectedAbove === 0 ? 'success' : 'warning'}},[_vm._v(\" \"+_vm._s(_vm.totalProjectedAbove === 0 ? 'done' : 'warning')+\" \")])],1),_c('title-sheet',{attrs:{\"title\":_vm.$t('budgets.titles.totalActuallyAbove')}},[_vm._v(\" \"+_vm._s(_vm.totalActuallyAbove)+\" \"),_c('v-icon',{attrs:{\"right\":\"\",\"color\":_vm.totalActuallyAbove === 0 ? 'success' : 'error'}},[_vm._v(\" \"+_vm._s(_vm.totalActuallyAbove === 0 ? 'done' : 'error')+\" \")])],1)],1),((_vm.tenantStore.hasTenantFeature('Budgets')))?_c('content-card',{staticClass:\"pb-1\",attrs:{\"title\":_vm.$t('budgets.subTitle'),\"caption\":_vm.$t('budgets.caption')},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"title-actions\",fn:function(){return [_c('CreateBudgetDialog',{on:{\"http2xx\":function($event){_vm.loadBudgets(_vm.tenantStore.hasTenantFeature('Budgets'))}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',[_vm._v(\"add\")]),_vm._v(\" Create \")],1)]}}],null,false,294327437),model:{value:(_vm.isCreating),callback:function ($$v) {_vm.isCreating=$$v},expression:\"isCreating\"}})]},proxy:true}:null],null,true)},[_c('BudgetsTable',{attrs:{\"loading\":_vm.wait.is('gettingBudgets'),\"items\":_vm.budgets,\"route-prefix\":\"/budgets\"},on:{\"http2xx\":function($event){_vm.loadBudgets(_vm.tenantStore.hasTenantFeature('Budgets'))}}})],1):_vm._e(),_c('content-card',{staticClass:\"pb-1 mt-3\",attrs:{\"title\":_vm.$t('budgets.spendlimits.title'),\"caption\":_vm.$t('budgets.spendlimits.caption')},scopedSlots:_vm._u([(_vm.tenantStore.hasPermission('CanContribute'))?{key:\"title-actions\",fn:function(){return [_c('SetSpendLimitSelectorDialog',{on:{\"http2xx\":function($event){return _vm.loadSpendLimits()}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"color\":\"secondary\"}},on),[_c('v-icon',[_vm._v(\"add\")]),_vm._v(\" Create \")],1)]}}],null,false,294327437),model:{value:(_vm.isCreatingLimit),callback:function ($$v) {_vm.isCreatingLimit=$$v},expression:\"isCreatingLimit\"}})]},proxy:true}:null],null,true)},[_c('SpendLimitsTable',{attrs:{\"loading\":_vm.wait.is('gettingSpendLimits'),\"items\":_vm.spendLimits,\"route-prefix\":\"/budgets\"},on:{\"http2xx\":function($event){return _vm.loadSpendLimits()}}})],1)],1),_c('router-view',{attrs:{\"route-prefix\":\"/budgets\"},on:{\"input\":_vm.handleDialogClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SetBudgetDialog',{attrs:{\"value\":_vm.value,\"budget\":_vm.budget,\"loading\":_vm.$wait.is('creatingBudget')},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ form, formId, isValid, loading, close }){return [_c('CreateBudgetButton',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('creatingBudget'),expression:\"'creatingBudget'\"}],attrs:{\"value\":form,\"clear\":() => {},\"valid\":isValid,\"form\":formId,\"loading\":loading},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulCreation($event))}}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"activator\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('SetBudgetCard',{attrs:{\"value\":_vm.budget,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function(actionBindings){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_vm._t(\"default\",null,null,{...actionBindings, close})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-card',{attrs:{\"title\":_vm.title || _vm.$t('setBudgetCard.title'),\"subtitle\":_vm.subtitle || _vm.$t('setBudgetCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset }){return [_vm._t(\"actions\",null,{\"form\":_vm.form,\"formId\":formId,\"isValid\":_vm.isValid,\"loading\":_vm.loading,\"clear\":reset})]}}],null,true),model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}),_c('v-select',{attrs:{\"items\":_vm.periods,\"item-text\":\"text\",\"item-value\":\"id\",\"label\":\"Period\"},model:{value:(_vm.period),callback:function ($$v) {_vm.period=$$v},expression:\"period\"}}),_c('text-date-picker',{attrs:{\"label\":\"Start Date\"},model:{value:(_vm.periodStartDate),callback:function ($$v) {_vm.periodStartDate=$$v},expression:\"periodStartDate\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Amount\"},model:{value:(_vm.amount),callback:function ($$v) {_vm.amount=$$v},expression:\"amount\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Growth Rate\",\"prefix\":\"%\"},model:{value:(_vm.growthRatePercentage),callback:function ($$v) {_vm.growthRatePercentage=$$v},expression:\"growthRatePercentage\"}}),_c('v-select',{attrs:{\"items\":_vm.customViews,\"item-text\":\"name\",\"item-value\":\"id\",\"label\":\"Custom View\"},model:{value:(_vm.customViewId),callback:function ($$v) {_vm.customViewId=$$v},expression:\"customViewId\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, computed } from 'vue';\r\nimport { BudgetPeriod, ICustomViewResult } from '@/models';\r\nimport { getCustomViews } from '@/lib/Api';\r\nexport default defineComponent({\r\n props: { title: String, subtitle: String, loading: Boolean },\r\n setup() {\r\n const isValid = ref(false);\r\n const name = ref('');\r\n const period = ref(BudgetPeriod.Monthly);\r\n const periods = ref([\r\n { id: BudgetPeriod.Weekly, text: 'Weekly' },\r\n { id: BudgetPeriod.Monthly, text: 'Monthly' },\r\n { id: BudgetPeriod.Quarterly, text: 'Quarterly' },\r\n { id: BudgetPeriod.Yearly, text: 'Yearly' },\r\n ]);\r\n const periodStartDate = ref(new Date());\r\n const amount = ref(0);\r\n const growthRatePercentage = ref(0.0);\r\n const customViewId = ref('');\r\n const customViews = ref([]);\r\n getCustomViews().then((v) => (customViews.value = v));\r\n const form = computed(() => ({\r\n name: name.value,\r\n period: period.value,\r\n periodStartDate: periodStartDate.value,\r\n amount: amount.value,\r\n growthRatePercentage: growthRatePercentage.value,\r\n customViewId: customViewId.value,\r\n }));\r\n return {\r\n isValid,\r\n period,\r\n periodStartDate,\r\n amount,\r\n growthRatePercentage,\r\n customViewId,\r\n customViews,\r\n periods,\r\n name,\r\n form,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetCard.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetCard.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetCard.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetBudgetCard.vue?vue&type=template&id=2b9b64e9&\"\nimport script from \"./SetBudgetCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetBudgetCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetBudgetCard.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetBudgetDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SetBudgetDialog.vue?vue&type=template&id=78a5e919&\"\nimport script from \"./SetBudgetDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./SetBudgetDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-post-button',_vm._g(_vm._b({attrs:{\"href\":\"/api/budgets\",\"value\":_vm.value,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-post-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createBudgetButton.errorMessage\": \"There was an error encountered while updating this budget. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateButtonButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateButtonButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateButtonButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateButtonButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateButtonButton.vue?vue&type=template&id=38dc8b75&\"\nimport script from \"./CreateButtonButton.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateButtonButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateButtonButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"createBudgetDialog.events.successfulCreation\": \"Successfully created the budget '{name}'\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateBudgetDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateBudgetDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./CreateBudgetDialog.vue?vue&type=template&id=63721e4f&\"\nimport script from \"./CreateBudgetDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./CreateBudgetDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./CreateBudgetDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.items,\"item-key\":\"id\",\"mobile-breakpoint\":\"0\",\"loading-text\":_vm.$t('spendLimitsTable.loadingLimits'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('spendLimitsTable.noLimits'))+\" \")]},proxy:true},{key:`item.name`,fn:function({ item }){return [_c('div',{staticClass:\"nowrap\"},[(item.type == 'Service')?_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/services/${item.service.id}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"memory\")]),_vm._v(\" \"+_vm._s(item.service.name)+\" \")],1):(item.type == 'Subscription')?_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/subscriptions/${item.subscription.id}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"cloud_queue\")]),_vm._v(\" \"+_vm._s(item.subscription.name)+\" \")],1):(item.type == 'Product')?_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/products/${item.product.id}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"shopping_cart\")]),_vm._v(\" \"+_vm._s(item.product.name)+\" \")],1):(item.type === 'TagKeyValue')?_c('router-link',{attrs:{\"to\":`${_vm.routePrefix}/tagkeys/${item.tagKeyValue.tagKey}/tag/${item.tagKeyValue.id}`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"sell\")]),_vm._v(\" \"+_vm._s(item.tagKeyValue.name)+\" \")],1):_c('span',[_vm._v(\" Error: Unknown type - \"+_vm._s(item.type)+\" \")])],1)]}},{key:`item.progress`,fn:function({ item }){return [_c('consumption-bar',{attrs:{\"current-consumption\":item.currentPercentage,\"predicted-consumption\":item.projectedPercentage,\"max-consumption\":_vm._f(\"currency\")(item.limit,item.currencyCode),\"min-consumption\":_vm._f(\"currency\")(0,item.currencyCode)}})]}},{key:`item.limit`,fn:function({ item }){return [_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.limit,item.currencyCode)))])]}},{key:`item.actual`,fn:function({ item }){return [_c('v-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(item.currentFigure || 0,item.currencyCode)))])]}},{key:`item.projections`,fn:function({ item }){return [(item.currentFigure > item.limit)?_c('v-col',{staticClass:\"error--text text-right\"},[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"error\")]),_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.projectedFigure - item.limit || 0,item.currencyCode))+\" \"),_c('small',[_vm._v(\"over budget\")])],1):(item.projectedFigure > item.limit)?_c('v-col',{staticClass:\"warning--text text-right\"},[_c('v-icon',{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.projectedFigure - item.limit || 0,item.currencyCode))+\" \"),_c('small',[_vm._v(\"over budget\")])],1):(item.projectedFigure <= item.limit)?_c('v-col',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.limit - item.projectedFigure || 0,item.currencyCode))+\" \"),_c('small',[_vm._v(\"under budget\")])]):_vm._e()]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"spendLimitsTable.noLimits\": \"There are no spend limits yet.\",\r\n \"spendLimitsTable.loadingLimits\": \"Loading spending limits\",\r\n \"spendLimitsTable.progress\": \"Progress\",\r\n \"spendLimitsTable.projections\": \"Forecast\",\r\n \"spendLimitsTable.actual\": \"Current Spend\",\r\n \"spendLimitsTable.limit\": \"Spend Limit Amount\"\r\n\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendLimitsTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendLimitsTable.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendLimitsTable.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendLimitsTable.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SpendLimitsTable.vue?vue&type=template&id=ce9dd34a&\"\nimport script from \"./SpendLimitsTable.vue?vue&type=script&lang=js&\"\nexport * from \"./SpendLimitsTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SpendLimitsTable.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form-dialog',{attrs:{\"value\":_vm.value,\"max-width\":\"600\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(activatorBindings){return [_vm._t(\"default\",null,null,activatorBindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('spentLimitSelectorCard.title'),\"subtitle\":_vm.$t('spendLimitSelectorCard.subtitle'),\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"actions\",fn:function({ formId, reset, loading }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":!_vm.valid || loading || !_vm.searchEntity || _vm.monthlySpendLimit === null,\"loading\":loading,\"form\":formId},on:{\"click\":function($event){$event.preventDefault();return _vm.submitFn(reset, close)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"done\")]),_vm._v(\"Submit \")],1)]}}],null,true),model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('entity-search-autocomplete',{attrs:{\"multiple\":false,\"autofocus\":\"\",\"label\":_vm.$t('spendLimitSelectorCard.searchEntity.title'),\"placeholder\":_vm.$t('spendLimitSelectorCard.searchEntity.placeholder'),\"types\":['Service', 'Subscription', 'Tag', 'Product'],\"rules\":[_vm.$rules.required()]},model:{value:(_vm.searchEntity),callback:function ($$v) {_vm.searchEntity=$$v},expression:\"searchEntity\"}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"persistent-hint\":\"\",\"label\":_vm.$t('spentLimitSelectorCard.monthlySpendLimit.title'),\"rules\":[_vm.$rules.required()],\"required\":\"\"},model:{value:(_vm.monthlySpendLimit),callback:function ($$v) {_vm.monthlySpendLimit=$$v},expression:\"monthlySpendLimit\"}})],1)]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { ISearchEntityViewModel } from '@/components/Common/EntitySearchAutocomplete.vue';\r\nimport { EntityType } from '@/models';\r\nimport { toastError, toastSuccess } from '@/components/Common/Toast.vue';\r\n\r\nexport default defineComponent({\r\n props: { value: Boolean },\r\n setup(_, { emit }) {\r\n const searchEntity = ref(null);\r\n const monthlySpendLimit = ref(null);\r\n const valid = ref(false);\r\n const loading = ref(false);\r\n const submitFn = async (resetFn: () => void, closeFn: () => Promise) => {\r\n try {\r\n if (!searchEntity.value) return;\r\n if (!monthlySpendLimit.value) return;\r\n\r\n let url: string | null = null;\r\n switch (searchEntity.value.Type) {\r\n case EntityType.product:\r\n url = `/api/metadata/products/${searchEntity.value.Id}`;\r\n break;\r\n case EntityType.service:\r\n url = `/api/metadata/services/${searchEntity.value.Id}`;\r\n break;\r\n case EntityType.subscription:\r\n url = `/api/metadata/subscriptions/${searchEntity.value.Id}`;\r\n break;\r\n case EntityType.tag:\r\n url = `/api/metadata/tagkeyvalue/${searchEntity.value.Id}`;\r\n break;\r\n default:\r\n return;\r\n }\r\n loading.value = true;\r\n await ApiV2.http.patch(url, [\r\n { op: 'replace', path: 'monthlySpendLimit', value: monthlySpendLimit.value },\r\n ]);\r\n toastSuccess(`Successfully updated the the spend limit for ${searchEntity.value.Name}`);\r\n resetFn();\r\n emit('http2xx');\r\n await closeFn();\r\n } catch (err) {\r\n toastError('There was an unexpected error creating this spend limit.');\r\n } finally {\r\n loading.value = false;\r\n }\r\n };\r\n return { valid, loading, searchEntity, monthlySpendLimit, submitFn };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSpentLimitSelectorDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSpentLimitSelectorDialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSpentLimitSelectorDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SetSpentLimitSelectorDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./SetSpentLimitSelectorDialog.vue?vue&type=template&id=96cebe96&\"\nimport script from \"./SetSpentLimitSelectorDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetSpentLimitSelectorDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./SetSpentLimitSelectorDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { useWaitStore, useTenantStore } from '@/stores';\r\nimport { defineComponent, ref, computed } from 'vue';\r\nimport { mapStores } from 'pinia';\r\nimport * as Api from '@/lib/Api';\r\nimport { IBudgetResult, ISpendLimitMetaResult } from '@/models';\r\nimport BudgetsTable from '@/components/Domain.Budgets/BudgetsTable.vue';\r\nimport CreateBudgetDialog from '@/components/Domain.Budgets/CreateBudgetDialog.vue';\r\nimport SpendLimitsTable from '@/components/Domain.SpendLimits/SpendLimitsTable.vue';\r\nimport SetSpendLimitSelectorDialog from '@/components/Domain.SpendLimits/SetSpentLimitSelectorDialog.vue';\r\n\r\nexport default defineComponent({\r\n components: { BudgetsTable, CreateBudgetDialog, SpendLimitsTable, SetSpendLimitSelectorDialog },\r\n title(ctx) {\r\n return ctx.tenantStore.hasTenantFeature('Budgets')\r\n ? ctx.$t('budgets.basl_title')\r\n : ctx.$t('budgets.sl_title');\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n pageTitle() {\r\n return this.tenantStore.hasTenantFeature('Budgets')\r\n ? this.$t('budgets.basl_title')\r\n : this.$t('budgets.sl_title');\r\n }\r\n },\r\n created() {\r\n this.loadBudgets(this.tenantStore.hasTenantFeature('Budgets'));\r\n this.loadSpendLimits();\r\n },\r\n setup() {\r\n const { is, whilst } = useWaitStore();\r\n const loading = ref(false);\r\n const isCreating = ref(false);\r\n const isCreatingLimit = ref(false);\r\n const budgets = ref([]);\r\n const spendLimits = ref([]);\r\n const loadBudgets = async (hasPermission) => {\r\n if(hasPermission === false) return;\r\n await whilst('gettingBudgets', async function () {\r\n budgets.value = await Api.getAllBudgets();\r\n });\r\n };\r\n const loadSpendLimits = async () => {\r\n await whilst('gettingSpendLimits', async function () {\r\n spendLimits.value = await Api.getAllSpendLimits();\r\n });\r\n }; \r\n const totalProjectedAbove = computed(() => {\r\n return (\r\n budgets.value.filter((l) => l.projectedPercentage >= 100).length +\r\n spendLimits.value.filter((l) => l.projectedPercentage >= 100).length\r\n );\r\n });\r\n const totalActuallyAbove = computed(() => {\r\n return (\r\n budgets.value.filter((l) => l.currentPercentage >= 100).length +\r\n spendLimits.value.filter((l) => l.currentPercentage >= 100).length\r\n );\r\n });\r\n return {\r\n budgets,\r\n spendLimits,\r\n loadBudgets,\r\n loadSpendLimits,\r\n wait: { is },\r\n totalProjectedAbove,\r\n totalActuallyAbove,\r\n loading,\r\n isCreating,\r\n isCreatingLimit\r\n };\r\n },\r\n methods: {\r\n handleDialogClose(isOpen: boolean) {\r\n if (isOpen) return;\r\n this.$router.push('/budgets');\r\n this.$title = this.tenantStore.hasTenantFeature('Budgets')\r\n ? this.$t('budgets.basl_title')\r\n : this.$t('budgets.sl_title');\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Budgets.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Budgets.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Budgets.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Budgets.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Budgets.vue?vue&type=template&id=7cbd23e4&\"\nimport script from \"./Budgets.vue?vue&type=script&lang=ts&\"\nexport * from \"./Budgets.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Budgets.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('budgetdetails.title', { budgetName: _vm.budget ? _vm.budget.name : '...' }),\"icon\":\"price_check\"}}),_c('v-toolbar',{attrs:{\"color\":\"transparent\",\"flat\":\"\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"to\":\"/budgets\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" \"+_vm._s(_vm.$t('budgetdetails.backButton'))+\" \")],1),_c('v-spacer'),(_vm.wait.is('gettingBudget'))?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}}):_vm._e()],1),(_vm.budget)?_c('v-container',[_c('v-row',[_c('v-col',[_c('v-card',{attrs:{\"height\":\"340\"}},[_c('v-card-title',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.budget.amount,_vm.budget.currencyCode))+\" / \"+_vm._s(_vm.budget.budgetPeriodString))]),(_vm.budget.currentPeriodEndDate)?_c('v-card-subtitle',[_vm._v(\" The current period \"+_vm._s(_vm._f(\"calendarFormatFromUtc\")(_vm.budget.currentPeriodStartDate))+\" - \"+_vm._s(_vm._f(\"calendarFormatFromUtc\")(_vm.budget.currentPeriodEndDate))+\" has \"),_c('b',[_vm._v(_vm._s(Math.ceil(_vm.budget.daysLeftInPeriod))+\" days left\")])]):_vm._e(),_c('v-card-text',{staticClass:\"d-flex justify-center align-center p10\"},[_c('v-progress-circular',{attrs:{\"size\":200,\"width\":25,\"value\":_vm.budget.progressPercentage,\"color\":\"teal\"}},[_c('strong',[_vm._v(_vm._s(Math.ceil(_vm.budget.daysLeftInPeriod))+\" days left\")])])],1)],1)],1),_c('v-col',[_c('v-card',{attrs:{\"height\":\"340\"}},[_c('v-card-title',[_vm._v(\"Spend to date\")]),(_vm.budget.currentPeriodEndDate)?_c('v-card-subtitle',[_vm._v(\" Spend to date is currently \"),_c('b',[_vm._v(_vm._s(_vm.budget.currentPercentage)+\"%\")]),_vm._v(\" of the \"),_c('b',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.budget.amount,_vm.budget.currencyCode)))]),_vm._v(\" budget. \")]):_vm._e(),_c('v-card-text',{staticClass:\"d-flex justify-center align-center p10\"},[_c('v-progress-circular',{attrs:{\"size\":200,\"width\":25,\"value\":_vm.budget.currentPercentage,\"color\":_vm.budget.currentPercentage >= 100 ? 'red' : 'green'}},[_c('strong',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.budget.currentSpend,_vm.budget.currencyCode)))])])],1)],1)],1),_c('v-col',[_c('v-card',{attrs:{\"height\":\"340\"}},[_c('v-card-title',[_vm._v(\"Projected Spend\")]),(_vm.budget.currentPeriodEndDate)?_c('v-card-subtitle',[_vm._v(\" Currently projecting spend to be \"),_c('span',{class:_vm.budget.projectedPercentage >= 100 ? 'warning--text' : ''},[_vm._v(_vm._s(_vm.budget.forecastString))])]):_vm._e(),_c('v-card-text',{staticClass:\"d-flex justify-center align-center p10\"},[_c('v-progress-circular',{attrs:{\"rotate\":360,\"size\":200,\"width\":25,\"value\":_vm.budget.projectedPercentage,\"color\":_vm.budget.projectedPercentage >= 100 ? 'orange' : 'purple'}},[_c('strong',[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.budget.projectedSpend,_vm.budget.currencyCode)))])])],1)],1)],1)],1)],1):_vm._e(),(_vm.budget)?_c('v-container',[_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t('budgetdetails.chartTitle')))]),_c('v-card-text',[_c('budget-history-chart',{attrs:{\"data\":_vm.chartDatasets}}),_c('br'),_c('v-data-table',{staticClass:\"p10\",attrs:{\"items\":_vm.budget.budgetSeries || [],\"headers\":_vm.headers,\"footer-props\":{\n itemsPerPageOptions: [25, 50, -1],\n }},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [(!_vm.budget.budgetSeries)?_c('div',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"query_builder\")]),_vm._v(\"Waiting for data\")],1):_c('div',[_c('v-icon',{attrs:{\"color\":\"warning\",\"left\":\"\"}},[_vm._v(\"warning\")]),_c('span',{staticClass:\"warning--text\"},[_vm._v(\"There is no data currently for this budget\")])],1)]},proxy:true},{key:`item.period`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.period)+\" \")]}},{key:`item.amount`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.budgetedCost,_vm.budget.currencyCode))+\" \")]}},{key:`item.actual`,fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.actualCost,_vm.budget.currencyCode))+\" \")]}},{key:`item.variancedollars`,fn:function({ item }){return [_c('v-chip',{attrs:{\"color\":_vm.getColor(item.varianceCost)}},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(item.varianceCost,_vm.budget.currencyCode))+\" \")])]}},{key:`item.variancepercent`,fn:function({ item }){return [_c('comparison-icon',{attrs:{\"value\":item.actualCost,\"compare\":item.budgetedCost,\"right\":\"\"}}),_vm._v(\" \"+_vm._s((item.variancePercentage * 100).toFixed(2))+\"% \")]}}],null,true)})],1)],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { IBudgetResult } from '@/models';\r\nimport * as CssVariables from '@/lib/CssVariables';\r\nimport { ChartData, Chart, ChartDataset } from 'chart.js/auto'\r\nimport annotationPlugin from 'chartjs-plugin-annotation';\r\nimport { formatCurrency } from '@/lib/Currencies';\r\n\r\nimport './dayJsAdapter';\r\nimport htmlLegendPlugin from './legendPlugin';\r\n\r\nChart.register(annotationPlugin);\r\n\r\nconst PROJECTIONS_DATASET_ORDER = 99999;\r\n\r\nexport interface IBudgetSeriesDatapoint {\r\n x: string;\r\n y: number;\r\n}\r\n\r\nexport const convertBudgetResultResponseToDatasets = (budgetResult: IBudgetResult | null): ChartData<'bar' | 'line', IBudgetSeriesDatapoint[], string> => {\r\n const datasets: ChartDataset<'bar' | 'line', IBudgetSeriesDatapoint[]>[] = [];\r\n const labels: string[] = [];\r\n const budgetDataSet: ChartDataset<'bar', IBudgetSeriesDatapoint[]> = {\r\n data: [],\r\n label: `Budget Amount`,\r\n backgroundColor: 'teal',\r\n borderColor: 'white',\r\n borderWidth: 1,\r\n normalized: true,\r\n maxBarThickness: 40\r\n };\r\n const actualDataSet: ChartDataset<'line', IBudgetSeriesDatapoint[]> = {\r\n type: 'line',\r\n data: [],\r\n label: `Actual Spend`,\r\n backgroundColor: 'orange',\r\n borderColor: 'orange',\r\n borderWidth: 1,\r\n normalized: true,\r\n };\r\n \r\n (budgetResult?.budgetSeries || []).forEach((g) => {\r\n labels.push(g.period);\r\n budgetDataSet.data.push({x: g.period, y: g.budgetedCost})\r\n actualDataSet.data.push({x: g.period, y: g.actualCost})\r\n });\r\n datasets.push(actualDataSet);\r\n datasets.push(budgetDataSet);\r\n return {\r\n labels,\r\n datasets\r\n };\r\n};\r\n\r\nexport interface IClickEvent {\r\n index: number;\r\n name: string;\r\n isOther: boolean;\r\n datasetGroupId: string;\r\n}\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n}\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions, containerId: string): Chart => {\r\n const { currencyCode } = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastLines = style.getPropertyValue(CssVariables.ContrastLinesVariable);\r\n const contrastText = style.getPropertyValue(CssVariables.ContrastTextVariable);\r\n const chart = new Chart(chartItem, {\r\n type: 'bar',\r\n data: {\r\n labels: [],\r\n datasets: []\r\n },\r\n options: {\r\n borderColor: 'rgba(0,0, 0, 0)',\r\n plugins: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n htmlLegend: {\r\n // ID of the container to put the legend in\r\n containerID: containerId,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n legend: {\r\n display: false,\r\n labels: {\r\n color: contrastText\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(item) {\r\n return [item.dataset.label];\r\n },\r\n afterLabel(item) {\r\n const dataset = item.dataset;\r\n const points: IBudgetSeriesDatapoint[] = dataset.data as any;\r\n const hoverPoint: IBudgetSeriesDatapoint = points[item.dataIndex];\r\n return [\r\n `${formatCurrency(hoverPoint.y, currencyCode)}`\r\n ]\r\n },\r\n },\r\n mode: 'point'\r\n },\r\n annotation: {\r\n annotations: []\r\n }\r\n },\r\n interaction: {\r\n intersect: true,\r\n mode: 'dataset'\r\n },\r\n onHover(event, [element]) {\r\n let newCursor = 'default';\r\n if (element) {\r\n const dataset = chart.data.datasets[element.datasetIndex];\r\n if (dataset && dataset.order !== PROJECTIONS_DATASET_ORDER) {\r\n newCursor = 'pointer';\r\n }\r\n }\r\n (event.native.target as HTMLElement).style.cursor = newCursor;\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n x: {\r\n type: \"category\",\r\n stacked: false,\r\n ticks: {\r\n color: contrastText\r\n },\r\n grid: {\r\n color: 'rgba(0, 0, 0, 0)'\r\n },\r\n axis: 'x',\r\n },\r\n y: {\r\n type: 'linear',\r\n ticks: {\r\n color: contrastText,\r\n callback(value: number) {\r\n return formatCurrency(value, currencyCode);\r\n }\r\n },\r\n grid: {\r\n color: contrastLines\r\n },\r\n min: 0,\r\n axis: 'y',\r\n title: {\r\n text: `Budget (${currencyCode})`,\r\n color: contrastText,\r\n display: true\r\n },\r\n stack: 'y',\r\n display: true,\r\n }\r\n }\r\n },\r\n plugins: [htmlLegendPlugin]\r\n });\r\n return chart;\r\n};","\r\n import { defineComponent, ref, onMounted, watch } from \"vue\";\r\n import { useTenantStore, storeToRefs } from \"@/stores\";\r\n import createBudgetHistoryChart, {\r\n convertBudgetResultResponseToDatasets,\r\n } from \"@/chartjs/createBudgetHistoryChart\";\r\n\r\n export { convertBudgetResultResponseToDatasets };\r\n \r\n export default defineComponent({\r\n props: {\r\n data: Object,\r\n },\r\n setup(p) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.style.height = \"400px\";\r\n canvas.value.classList.add('chart-canvas');\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = '400px';\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n\r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n\r\n const chart = createBudgetHistoryChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n \"$vuetify.theme.dark\": {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n });\r\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetHistoryChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetHistoryChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BudgetHistoryChart.vue?vue&type=template&id=bc989e90&\"\nimport script from \"./BudgetHistoryChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BudgetHistoryChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { useWaitStore } from '@/stores';\r\nimport { defineComponent, ref } from 'vue';\r\nimport * as Api from '@/lib/Api';\r\nimport { IBudgetResult } from '@/models';\r\nimport BudgetHistoryChart, {\r\n convertBudgetResultResponseToDatasets,\r\n} from '@/components/Domain.Budgets/BudgetHistoryChart.vue';\r\n\r\nexport default defineComponent({\r\n components: { BudgetHistoryChart },\r\n title(ctx) {\r\n return ctx.$t('budgetdetails.title', { budgetName: this.budget ? this.budget.name : '...' });\r\n },\r\n setup() {\r\n const budgetId = ref();\r\n const { is, whilst } = useWaitStore();\r\n const budget = ref();\r\n const chartDatasets = ref({ labels: [], datasets: [] });\r\n const loadBudget = async () =>\r\n await whilst('gettingBudget', async function () {\r\n budget.value = await Api.getBudget(budgetId.value);\r\n chartDatasets.value = convertBudgetResultResponseToDatasets(budget.value);\r\n });\r\n return {\r\n budgetId,\r\n budget,\r\n loadBudget,\r\n wait: { is, whilst },\r\n chartDatasets,\r\n };\r\n },\r\n methods: {\r\n getColor(variance) {\r\n if (variance < 0) return 'green';\r\n else if (variance == 0) return 'orange';\r\n else return 'red';\r\n },\r\n },\r\n watch: {\r\n $route: {\r\n handler(to) {\r\n if (!to) return;\r\n this.budgetId = to.params.id;\r\n this.loadBudget();\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n computed: {\r\n headers() {\r\n const headers = [\r\n { text: this.$t('budgetdetails.table.period'), value: 'period', sortable: false },\r\n { text: this.$t('budgetdetails.table.amount'), value: 'amount', sortable: false },\r\n { text: this.$t('budgetdetails.table.actual'), value: 'actual', sortable: false },\r\n { text: this.$t('budgetdetails.table.varianceamount'), value: 'variancedollars', sortable: false },\r\n { text: this.$t('budgetdetails.table.variancepercentage'), value: 'variancepercent', sortable: false },\r\n ];\r\n return headers;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetDetails.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetDetails.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BudgetDetails.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./BudgetDetails.vue?vue&type=template&id=18403441&\"\nimport script from \"./BudgetDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./BudgetDetails.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./BudgetDetails.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-main',[_c('page-header',{attrs:{\"sticky\":\"\",\"title\":_vm.$t('views.gptChats.title'),\"icon\":\"psychology\",\"flip-icon\":\"\",\"small\":\"\"}}),_c('v-skeleton-loader',{attrs:{\"loading\":_vm.$wait.is('getChat'),\"type\":\"list-item-avatar@4\"}},[_c('div',{staticStyle:{\"min-height\":\"calc(100vh - 270px)\",\"margin-bottom\":\"50px\"}},[_c('v-alert',{staticClass:\"mb-2\",attrs:{\"type\":\"info\",\"text\":\"\"}},[_vm._v(\" This chat is powered by OpenAI ChatGPT. User discretion is advised when acting on feedback from this model. \")]),_c('chat-conversation',{attrs:{\"chat\":_vm.currentChat},on:{\"ask\":$event => _vm.ask($event)}})],1),_c('v-card',{staticClass:\"mb-0 chat-window\",attrs:{\"tile\":\"\",\"elevation\":\"10\"}},[_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.$wait.is('addChatMessage', 'getChat'),\"indeterminate\":\"\"}}),_c('v-card-text',{staticClass:\"px-5 pt-3 pb-0\"},[_c('v-textarea',{attrs:{\"disabled\":_vm.disableChat,\"auto-grow\":\"\",\"rows\":\"2\",\"label\":_vm.disableChat ? 'This conversation is too old, please start a new one' : 'Type a question',\"clearable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;$event.preventDefault();return _vm.submitAndRefresh()}},model:{value:(_vm.chatMessage),callback:function ($$v) {_vm.chatMessage=$$v},expression:\"chatMessage\"}})],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"type\":\"submit\"},on:{\"click\":function($event){_vm.showChatsDialog = true}}},[_vm._v(\"View Previous Chats\")]),(_vm.currentChat)?_c('gpt-create',{attrs:{\"noNav\":\"\",\"text\":\"\",\"entityId\":_vm.currentChat.entityId,\"entityType\":_vm.currentChat.entityType},on:{\"created\":_vm.chatCreated}}):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":_vm.disableChat || !_vm.chatMessage,\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.submitAndRefresh()}}},[_vm._v(\"Send\")])],1)],1)],1),_c('chats-dialog',{attrs:{\"show\":_vm.showChatsDialog,\"chats\":_vm.chats,\"loading\":_vm.$wait.is('getChats')},on:{\"close\":function($event){_vm.showChatsDialog = false},\"select\":$event => _vm.selectChat($event.chatId),\"sample\":function($event){return _vm.startNew()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[(_vm.enabled)?[(_vm.text)?_c('v-btn',{on:{\"click\":function($event){_vm.show=true}}},[_vm._v(\" Start new Chat \")]):_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.show=true}}},[_c('v-icon',{staticClass:\"flip-x\",attrs:{\"color\":\"tertiary\"}},[_vm._v(\"psychology\")])],1),_c('v-dialog',{attrs:{\"max-width\":\"400\",\"scrollable\":\"\",\"persistent\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.loading,\"indeterminate\":\"\"}}),_c('v-card-text',{staticClass:\"px-5 pt-3 pb-0\"},[(!_vm.loading)?_c('p',[_vm._v(\" If you choose to proceed, you will commence a Cloud Intelligence chat about this resource, powered by GPT. \")]):_c('p',[_vm._v(\" Starting chat... \")])]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{staticClass:\"ma-5\",on:{\"click\":function($event){return _vm.close()}}},[_vm._v(_vm._s(_vm.loading ? 'Close' : 'Cancel'))]),(!_vm.loading)?_c('v-btn',{attrs:{\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.go()}}},[_vm._v(\"Start Chat\")]):_vm._e()],1)],1)],1)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { IGptChatOverviewResult } from '@/models/GptChatModels'\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { useRouter } from 'vue-router/composables';\r\nimport FeatureNames from \"@/lib/FeatureNames\";\r\nimport { useTenantStore } from '@/stores/tenant';\r\n\r\nexport default defineComponent({\r\n props: { entityType: String, entityId: String, text: Boolean, noNav: Boolean },\r\n setup(p, { emit }) {\r\n const show = ref(false);\r\n const loading = ref(false);\r\n const router = useRouter();\r\n const tenantStore = useTenantStore();\r\n const enabled = ref(tenantStore.hasTenantFeature(FeatureNames.enableCloudIntelligence));\r\n \r\n const go = async () => {\r\n loading.value = true;\r\n const response = await ApiV2.http\r\n .post(`/api/gpt`, {entityId: p.entityId, entityType: p.entityType} as IGptChatOverviewResult)\r\n .then((r) => r.data);\r\n \r\n //on return:\r\n if (show.value) {\r\n //user didn't 'Close'\r\n if (!p.noNav) router.push(`/cloud-intelligence/?chatId=${response.chatId}`);\r\n emit('created', response);\r\n }\r\n } \r\n\r\n return {\r\n enabled,\r\n show, \r\n loading,\r\n go,\r\n tenantStore,\r\n close: () => {show.value = false; loading.value = false;}\r\n };\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptCreate.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptCreate.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GptCreate.vue?vue&type=template&id=23ea7d49&\"\nimport script from \"./GptCreate.vue?vue&type=script&lang=ts&\"\nexport * from \"./GptCreate.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import dayjs from 'dayjs';\r\n\r\nexport const checkExpiredChat = (createdAtUtc: Date | string) => {\r\n return dayjs(new Date()).add(-7, 'day').isAfter(dayjs(createdAtUtc).local());\r\n}","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.chat)?_c('v-list',{staticClass:\"ma-8 py-0\"},_vm._l((_vm.chat.messages),function(message,i){return _c('v-list-item',{key:i,class:{'user-message': message.isUser, 'px-8': true, 'py-5': true}},[_c('v-list-item-icon',[(!!message.isUser)?_c('v-avatar',{attrs:{\"size\":40,\"color\":\"grey lighten-4\"}},[_c('img',{attrs:{\"src\":_vm.gravatarUrl,\"alt\":\"avatar\",\"aria-label\":\"User profile picture\",\"title\":\"User profile picture\",\"role\":\"presentation\"}})]):_c('v-avatar',{attrs:{\"size\":40,\"color\":\"primary darken-2\"}},[_c('v-icon',{staticStyle:{\"transform\":\"scaleX(-1)\"},attrs:{\"color\":\"white\",\"size\":34}},[_vm._v(\"psychology\")])],1)],1),_c('chat-message-content',{attrs:{\"message\":message,\"chatName\":_vm.chat.conversationName},on:{\"ask\":$event => _vm.ask($event)}})],1)}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.questionList)?_c('v-list-item-content',{staticStyle:{\"white-space\":\"pre-wrap\"}},[_c('p',[_vm._v(\"You may ask questions about \"+_vm._s(_vm.chatName)+\", or select a suggested question:\")]),_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((_vm.questionList),function(question,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.ask(question)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"live_help\")])],1),_c('v-list-item-content',[_c('div',{domProps:{\"innerHTML\":_vm._s(question)}})]),_c('v-list-item-action',[_c('v-btn',{attrs:{\"x-small\":\"\"}},[_vm._v(\"ask\")])],1)],1)}),1)],1):_c('v-list-item-content',[_c('div',{staticStyle:{\"white-space\":\"pre-wrap\"},domProps:{\"innerHTML\":_vm._s(_vm.format(_vm.message.message))}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, computed, PropType } from 'vue';\r\nimport { IGptChatMessage } from '@/models/GptChatModels'\r\n\r\nexport default defineComponent({\r\n props: { message: Object as PropType, chatName: String },\r\n setup(p, { emit }) {\r\n const questionList = computed(() => {\r\n if (p.message.isUser) return null;\r\n const matches = /(\\[[\\s\\S]*\\])/g.exec(p.message.message);\r\n\r\n if (!matches || !matches[1]) return null; \r\n\r\n const questions = (JSON.parse(matches[1]) as Array).map(x => format(x));\r\n return questions\r\n });\r\n\r\n const ask = (question:string) => {\r\n emit('ask', question);\r\n };\r\n\r\n const format = (message: string | any) => {\r\n if (typeof message !== 'string') return message;\r\n\r\n return message\r\n .replaceAll('&', '&')\r\n .replaceAll('<', '<')\r\n .replaceAll('>', '>')\r\n .replaceAll('\"', '"')\r\n .replaceAll(\"'\", ''')\r\n .replace(/```([^`]+)```/g, \"
$1
\")\r\n .replace(/`([^`]+)`/, \"$1\");\r\n \r\n }\r\n\r\n return { questionList, ask, format };\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatMessageContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatMessageContent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChatMessageContent.vue?vue&type=template&id=4dc77240&\"\nimport script from \"./ChatMessageContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChatMessageContent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ChatMessageContent.vue?vue&type=style&index=0&id=4dc77240&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, getCurrentInstance, computed, PropType } from 'vue';\r\nimport MD5 from '@/lib/MD5';\r\nimport ChatMessageContent from './ChatMessageContent.vue';\r\nimport { IGptChatConversationResult } from '@/models/GptChatModels'\r\n\r\nconst AVATAR_SIZE = 40;\r\n\r\nexport default defineComponent({\r\n props: { chat: Object as PropType },\r\n components: {ChatMessageContent},\r\n setup(p, { emit }) {\r\n const gravatarUrl = computed(() => {\r\n const email = (getCurrentInstance() as any).proxy.$auth.user.email;\r\n if (!email) return \"http://www.gravatar.com/avatar/?d=identicon\";\r\n const md5 = MD5(email.toLowerCase());\r\n return `//www.gravatar.com/avatar/${md5}?s=${AVATAR_SIZE}`;\r\n });\r\n\r\n const ask = (question:string) => {\r\n emit('ask', question);\r\n };\r\n\r\n return { gravatarUrl, ask };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatConversation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatConversation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChatConversation.vue?vue&type=template&id=fc2dd564&\"\nimport script from \"./ChatConversation.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChatConversation.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"900\",\"scrollable\":\"\",\"persistent\":\"\",\"transition\":\"dialog-bottom-transition\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-progress-linear',{staticClass:\"ma-0\",attrs:{\"active\":_vm.loading,\"indeterminate\":\"\"}}),_c('v-card-text',{staticClass:\"px-5 pt-3 pb-0\"},[(_vm.chats)?_c('v-list',_vm._l((_vm.chats),function(item,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.select(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"forum\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.name))]),_c('v-list-item-subtitle',[_c('v-chip',{staticClass:\"px-1\",attrs:{\"label\":\"\",\"x-small\":\"\"}},[_vm._v(\"as of \"+_vm._s(_vm._f(\"calendarFormatFromUtc\")(item.createdAtUtc)))])],1)],1),_c('v-list-item-action',[_c('v-list-item-action-text',[(_vm.checkExpiredChat(item.createdAtUtc))?_c('v-icon',{staticClass:\"mr-2\",attrs:{\"small\":\"\"}},[_vm._v(\"lock\")]):_vm._e(),_vm._v(_vm._s(_vm._f(\"calendarFormatFromUtc\")(item.lastUpdatedUtc)))],1)],1)],1)}),1):_vm._e(),((!_vm.chats || !_vm.chats.length) && !_vm.loading)?_c('empty-state',{attrs:{\"icon\":\"warning\",\"message\":_vm.$t('chatsDialog.noChatsYet')}}):_vm._e()],1),_c('v-card-actions',[_c('v-btn',{staticClass:\"ma-5\",on:{\"click\":function($event){return _vm.sample()}}},[_vm._v(\"Start a sample chat\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"type\":\"submit\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, PropType } from 'vue';\r\nimport { IGptChatOverviewResult} from '@/models/GptChatModels'\r\nimport { checkExpiredChat } from \"./Shared\"\r\n\r\nexport default defineComponent({\r\n props: { chats: Array as PropType, show: Boolean, loading: Boolean },\r\n setup(p, { emit }) {\r\n\r\n const sample = () => {\r\n emit('sample');\r\n };\r\n \r\n const close = () => {\r\n emit('close');\r\n };\r\n\r\n const select = (chat) => {\r\n emit('select', chat);\r\n emit('close');\r\n };\r\n \r\n return {\r\n checkExpiredChat,\r\n close,\r\n select,\r\n sample\r\n };\r\n }\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatsDialog.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatsDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChatsDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ChatsDialog.vue?vue&type=template&id=90b596e2&\"\nimport script from \"./ChatsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChatsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ChatsDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport GptCreate from \"@/components/Domain.GptChat/GptCreate.vue\";\r\nimport { waitFor } from '@/plugins/vue-wait';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { defineComponent } from \"vue\";\r\nimport { checkExpiredChat } from \"@/components/Domain.GptChat/Shared\"\r\nimport ChatConversation from '@/components/Domain.GptChat/ChatConversation.vue';\r\nimport ChatsDialog from '@/components/Domain.GptChat/ChatsDialog.vue';\r\nimport { \r\n IGptChatOverviewResult, \r\n IGptChatConversationResult, \r\n IGptChatMessageResult\r\n} from '@/models/GptChatModels'\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t('views.gptChats.title');\r\n },\r\n components: {ChatConversation, ChatsDialog, GptCreate},\r\n async mounted() {\r\n const chatId = this.$route.query.chatId\r\n this.getChats(chatId);\r\n },\r\n data() {\r\n return {\r\n email: (this as any).$auth.user.email as string,\r\n showChatsDialog: false,\r\n chats: [] as Array,\r\n currentChat: null as IGptChatConversationResult,\r\n chatMessage: \"\"\r\n };\r\n },\r\n computed: {\r\n disableChat() {\r\n if (this.currentChat == null) return true;\r\n return checkExpiredChat(this.currentChat.createdAtUtc);\r\n }\r\n },\r\n methods: {\r\n ask(question:string) {\r\n this.chatMessage = question;\r\n this.submitAndRefresh();\r\n },\r\n\r\n chatCreated(chat:IGptChatOverviewResult) {\r\n this.getChats(chat.chatId);\r\n },\r\n\r\n getChats: waitFor('getChats', async function getChats(chatId: string | null) {\r\n if (this.currentChat == null && !chatId) this.showChatsDialog = true;\r\n const response = await ApiV2.http.get(`/api/gpt/`).then((r) => r.data);\r\n this.chats = response;\r\n\r\n if (chatId) {\r\n await this.selectChat(chatId);\r\n }\r\n }),\r\n\r\n selectChat: waitFor('getChat', async function selectChat(chatId : string) {\r\n this.$router.replace({ query: {chatId: chatId} })\r\n this.showChatsDialog = false;\r\n const response = await ApiV2.http\r\n .get(`/api/gpt/${chatId}`)\r\n .then((r) => r.data);\r\n this.currentChat = response;\r\n this.chatMessage = \"\";\r\n this.scrollDown();\r\n }),\r\n\r\n submitAndRefresh: waitFor('addChatMessage', async function addChatMessage() {\r\n const chatId = this.currentChat?.chatId;\r\n const message = this.chatMessage;\r\n\r\n this.currentChat.messages.push({isUser: true, message: message});\r\n this.currentChat = {...this.currentChat};\r\n\r\n this.chatMessage = \"\";\r\n this.scrollDown();\r\n\r\n const response = await ApiV2.http\r\n .post(`/api/gpt/${chatId}/message`, {\r\n chatId: chatId,\r\n question: message\r\n })\r\n .then((r) => r.data)\r\n .catch(() => ({chatId: '', message: \"There was an error! Please try again.\"}));\r\n\r\n this.currentChat.messages.push(response.message);\r\n this.currentChat = {...this.currentChat};\r\n this.scrollDown();\r\n }),\r\n\r\n scrollDown() {\r\n this.$vuetify.goTo(999999)\r\n }\r\n }\r\n})\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptChats.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptChats.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptChats.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GptChats.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GptChats.vue?vue&type=template&id=aefb6866&scoped=true&\"\nimport script from \"./GptChats.vue?vue&type=script&lang=ts&\"\nexport * from \"./GptChats.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GptChats.vue?vue&type=style&index=0&id=aefb6866&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aefb6866\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GptChats.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('gettingStarted.title'),\"icon\":\"savings\"}}),_c('v-stepper',{staticClass:\"elevation-0\",model:{value:(_vm.e1),callback:function ($$v) {_vm.e1=$$v},expression:\"e1\"}},[_c('v-stepper-header',[_c('v-stepper-step',{attrs:{\"color\":\"secondary\",\"complete\":_vm.e1 > 1,\"step\":\"1\"}},[_vm._v(\" Cloud Connections \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"color\":\"secondary\",\"complete\":_vm.e1 > 2,\"step\":\"2\"}},[_vm._v(\" Users \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"color\":\"secondary\",\"step\":\"3\"}},[_vm._v(\" Finish \")])],1),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('v-container',[_c('content-card',{attrs:{\"title\":\"Configure Cloud Connections\",\"caption\":\"Configure your cloud connection connections to view your cloud consumption in this tenant\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"to\":\"/settings\",\"text\":\"\"}},[_vm._v(\" Skip Setup \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"start\")])],1),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"disabled\":_vm.configuredTypes.length === 0},on:{\"click\":function($event){_vm.e1 = 2}}},[_vm._v(\" Next! \")])]},proxy:true}])},[_c('v-row',_vm._l((_vm.cloudAccountTypes),function(caType){return _c('v-col',{key:caType,attrs:{\"cols\":\"12\",\"sm\":\"6\",\"lg\":\"4\"}},[_c('v-list',{style:(_vm.configuredTypes.includes(caType)\n ? 'border-color:var(--v-primary-base)'\n : ''),attrs:{\"outlined\":\"\",\"rounded\":\"\",\"height\":\"200\"}},[(caType === 'Amazon')?_c('CreateAmazonAccountMenu',{on:{\"input\":function($event){return _vm.handleCreateNewAmazonAccount($event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('pretty-list-item',_vm._g(_vm._b({attrs:{\"text\":_vm.$t(`gettingStarted.${caType}.text`),\"bottom\":_vm.$t(`gettingStarted.${caType}.bottom`),\"icon\":\"done\"},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [(_vm.configuredTypes.includes(caType))?_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"done_all\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$t(`gettingStarted.${caType}.top`))+\" \")]},proxy:true}],null,true)},'pretty-list-item',attrs,false),on))]}}],null,true)}):_c('pretty-list-item',{attrs:{\"text\":_vm.$t(`gettingStarted.${caType}.text`),\"bottom\":_vm.$t(`gettingStarted.${caType}.bottom`),\"icon\":\"done\"},on:{\"click\":function($event){return _vm.onClickAccountType(caType)}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [(_vm.configuredTypes.includes(caType))?_c('v-icon',{attrs:{\"color\":\"primary\"}},[_vm._v(\"done_all\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.$t(`gettingStarted.${caType}.top`))+\" \")]},proxy:true}],null,true)})],1)],1)}),1)],1)],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_c('users-view',{scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.e1 = 1}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"arrow_back\")]),_vm._v(\" Back \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.e1 = 3}}},[_vm._v(\" Next! \")])]},proxy:true}])})],1),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[_c('v-container',[_c('content-card',{attrs:{\"title\":\"You're all set!\",\"caption\":\"Your cloud connections are currently importing usage data and you will see figures the moment the import has completed. \"}},[_c('v-list',[_c('v-subheader',[_vm._v(\"When usage is ready you can visit...\")]),_c('v-list-item',{attrs:{\"to\":\"/settings\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"settings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Settings\")]),_c('v-list-item-subtitle',[_vm._v(\"Update any of the configuration you made during this getting started process.\")])],1)],1),_c('v-list-item',{attrs:{\"to\":\"/finance\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"savings\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Dashboard\")]),_c('v-list-item-subtitle',[_vm._v(\"See at a glance your spend for the past 12 months\")])],1)],1),_c('v-list-item',{attrs:{\"to\":\"/explore\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"insights\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Cost Explorer\")]),_c('v-list-item-subtitle',[_vm._v(\"Get a granular view of your usage in any slice for any available period.\")])],1)],1),_c('v-list-item',{attrs:{\"to\":\"/trends\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"analytics\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Trends\")]),_c('v-list-item-subtitle',[_vm._v(\"Compare any available time periods to reason about changes in spend.\")])],1)],1)],1)],1)],1)],1)],1)],1),_c('CreateAmazonAssumeRoleCloudAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAwsAccountNew),callback:function ($$v) {_vm.isCreatingAwsAccountNew=$$v},expression:\"isCreatingAwsAccountNew\"}}),_c('CreateAmazonWSCloudAccountDialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAwsAccountLegacy),callback:function ($$v) {_vm.isCreatingAwsAccountLegacy=$$v},expression:\"isCreatingAwsAccountLegacy\"}}),_c('create-azure-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzureArmAccount),callback:function ($$v) {_vm.isCreatingAzureArmAccount=$$v},expression:\"isCreatingAzureArmAccount\"}}),_c('create-azure-ea-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAzureEaAccount),callback:function ($$v) {_vm.isCreatingAzureEaAccount=$$v},expression:\"isCreatingAzureEaAccount\"}}),_c('create-rhipe-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingRhipeAccount),callback:function ($$v) {_vm.isCreatingRhipeAccount=$$v},expression:\"isCreatingRhipeAccount\"}}),_c('create-google-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingGcpAccount),callback:function ($$v) {_vm.isCreatingGcpAccount=$$v},expression:\"isCreatingGcpAccount\"}}),_c('create-alibaba-cloud-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingAlibabaAccount),callback:function ($$v) {_vm.isCreatingAlibabaAccount=$$v},expression:\"isCreatingAlibabaAccount\"}}),_c('create-oracle-account-dialog',{on:{\"http2xx\":_vm.onCloudAccountsChanged},model:{value:(_vm.isCreatingOracleAccount),callback:function ($$v) {_vm.isCreatingOracleAccount=$$v},expression:\"isCreatingOracleAccount\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from \"vue\";\r\nimport { CloudAccountType, CloudCredentialType } from \"@/models\";\r\nimport ApiV2 from \"@/lib/ApiV2\";\r\nimport Config from \"@/lib/Config\";\r\nimport FeatureNames from \"@/lib/FeatureNames\";\r\nimport PrettyListItem from \"@/components/Common/PrettyListItem.vue\";\r\nimport CreateOracleAccountDialog from \"@/components/Settings.CloudAccounts/Oracle/CreateOracleAccountDialog.vue\";\r\nimport CreateAmazonWSCloudAccountDialog from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonWSCloudAccountDialog.vue\";\r\nimport CreateAmazonAssumeRoleCloudAccountDialog from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonAssumeRoleCloudAccountDialog.vue\";\r\nimport CreateAmazonAccountMenu from \"@/components/Settings.CloudAccounts/Amazon/CreateAmazonAccountMenu.vue\";\r\nimport CreateAzureCloudAccountDialog from \"@/components/Settings.CloudAccounts/Azure/CreateAzureCloudAccountDialog.vue\";\r\nimport CreateAzureEaCloudAccountDialog from \"@/components/Settings.CloudAccounts/Azure/CreateAzureEaCloudAccountDialog.vue\";\r\nimport CreateRhipeCloudAccountDialog from \"@/components/Settings.CloudAccounts/Distributors/CreateRhipeCloudAccountDialog.vue\";\r\nimport CreateAlibabaCloudAccountDialog from \"@/components/Settings.CloudAccounts/Alibaba/CreateAlibabaCloudAccountDialog.vue\";\r\nimport CreateGoogleAccountDialog from \"@/components/Settings.CloudAccounts/Google/CreateGoogleAccountDialog.vue\";\r\nimport UsersView from \"@/views/Settings/UsersView.vue\";\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t(\"gettingStarted.title\");\r\n },\r\n components: {\r\n PrettyListItem,\r\n CreateOracleAccountDialog,\r\n CreateAmazonWSCloudAccountDialog,\r\n CreateAmazonAssumeRoleCloudAccountDialog,\r\n CreateAzureCloudAccountDialog,\r\n CreateAzureEaCloudAccountDialog,\r\n CreateRhipeCloudAccountDialog,\r\n CreateAlibabaCloudAccountDialog,\r\n CreateAmazonAccountMenu,\r\n CreateGoogleAccountDialog,\r\n UsersView,\r\n },\r\n setup() {\r\n const configuredTypes = ref([]);\r\n\r\n const loadCloudAccountTypes = async () => {\r\n const cloudAccounts = await ApiV2.http\r\n .get(\"/api/metadata/cloudaccounts\")\r\n .then((r) => r.data);\r\n const cloudAccountTypes = cloudAccounts\r\n .map((a) => a.type)\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n configuredTypes.value = cloudAccountTypes;\r\n };\r\n\r\n const onCloudAccountsChanged = () => {\r\n loadCloudAccountTypes();\r\n };\r\n\r\n loadCloudAccountTypes();\r\n\r\n const isCreatingAwsAccountNew = ref(false);\r\n const isCreatingAwsAccountLegacy = ref(false);\r\n const isCreatingAzureArmAccount = ref(false);\r\n const isCreatingAzureEaAccount = ref(false);\r\n const isCreatingRhipeAccount = ref(false);\r\n const isCreatingGcpAccount = ref(false);\r\n const isCreatingAlibabaAccount = ref(false);\r\n const isCreatingOracleAccount = ref(false);\r\n\r\n const handleCreateNewAmazonAccount = (\r\n key: CloudCredentialType.awsAssumeRoleUsage | CloudCredentialType.awsIamUsage\r\n ) => {\r\n if (key === CloudCredentialType.awsAssumeRoleUsage) {\r\n isCreatingAwsAccountNew.value = true;\r\n } else if (key === CloudCredentialType.awsIamUsage) {\r\n isCreatingAwsAccountLegacy.value = true;\r\n }\r\n };\r\n\r\n const onClickAccountType = (type: string) => {\r\n switch (type) {\r\n case CloudAccountType.azure:\r\n isCreatingAzureArmAccount.value = true;\r\n break;\r\n case CloudAccountType.azureEa:\r\n isCreatingAzureEaAccount.value = true;\r\n break;\r\n case CloudAccountType.rhipe:\r\n isCreatingRhipeAccount.value = true;\r\n break;\r\n case CloudAccountType.amazon:\r\n isCreatingAwsAccountLegacy.value = true;\r\n break;\r\n case CloudAccountType.google:\r\n isCreatingGcpAccount.value = true;\r\n break;\r\n case CloudAccountType.alibaba:\r\n isCreatingAlibabaAccount.value = true;\r\n break;\r\n case CloudAccountType.oracle:\r\n isCreatingOracleAccount.value = true;\r\n break;\r\n }\r\n };\r\n\r\n const cloudAccountTypes = ref([\r\n CloudAccountType.azure,\r\n CloudAccountType.amazon,\r\n CloudAccountType.google,\r\n CloudAccountType.alibaba,\r\n CloudAccountType.oracle,\r\n ]);\r\n\r\n if (Config.isFeatureEnabled(FeatureNames.rhipeEnabled)) {\r\n cloudAccountTypes.value.push(CloudAccountType.rhipe);\r\n }\r\n\r\n return {\r\n e1: ref(1),\r\n cloudAccountTypes,\r\n configuredTypes,\r\n isCreatingAwsAccountLegacy,\r\n isCreatingAwsAccountNew,\r\n isCreatingAzureArmAccount,\r\n isCreatingAzureEaAccount,\r\n isCreatingRhipeAccount,\r\n isCreatingGcpAccount,\r\n isCreatingAlibabaAccount,\r\n isCreatingOracleAccount,\r\n onCloudAccountsChanged,\r\n onClickAccountType,\r\n handleCreateNewAmazonAccount,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GettingStarted.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GettingStarted.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GettingStarted.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GettingStarted.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./GettingStarted.vue?vue&type=template&id=3e3c34d8&\"\nimport script from \"./GettingStarted.vue?vue&type=script&lang=ts&\"\nexport * from \"./GettingStarted.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./GettingStarted.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t('watchdogDashboard.title'),\"icon\":\"visibility\",\"needs-filters\":\"\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":\"Critical Risks\",\"subtitle\":\"Past 24 hours\"}},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"error\"}},[_vm._v(\"error\")]),_vm._v(\" \"+_vm._s(_vm.criticalCount)+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Potential Risks\",\"subtitle\":\"Past 24 hours\"}},[_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"warning\"}},[_vm._v(\"warning\")]),_vm._v(\" \"+_vm._s(_vm.warningCount)+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Active Policies\"}},[_c('div',{staticStyle:{\"height\":\"62px\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"security\")]),_vm._v(\" \"+_vm._s(_vm.policiesActive))],1)])],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":\"All Policies\",\"title-icon\":\"security\"},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"secondary\",\"depressed\":\"\",\"to\":\"/new/watchdog\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"add\")]),_vm._v(\" New Policy \")],1)]},proxy:true}])},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Policy Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Dimension\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Severity\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Schedule\")]),_c('th',{staticClass:\"text-center\"},[_vm._v(\"Last Run\")]),_c('th',{staticClass:\"text-center\"},[_vm._v(\"Records\")]),_c('th',[_vm._v(\"Actions\")])])]),_c('tbody',[(!_vm.policies.length)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\"There are no configured policies\")])]):_vm._e(),_vm._l((_vm.policies),function(item,i){return _c('tr',{key:i},[_c('td',[_c('router-link',{attrs:{\"to\":`/watchdog/${item.id}`}},[_vm._v(\" \"+_vm._s(item.policyName)+\" \")])],1),_c('td',[_vm._v(_vm._s(item.dimension))]),_c('td',[_vm._v(_vm._s(item.severity))]),_c('td',[_vm._v(_vm._s(item.schedule))]),(item.lastRun)?_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm._f(\"calendarFormat\")(item.lastRun)))]):_c('td',{staticClass:\"text-center\"},[_vm._v(\"-\")]),_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(item.lastRunRecordCount))]),_c('td',[_c('policy-menu',{attrs:{\"value\":item},on:{\"http2xx\":_vm.loadPageData}})],1)])})],2)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}])},[_c('v-list',[_c('router-link',{attrs:{\"to\":`/watchdog/${_vm.value.id}/edit`}},[_c('v-list-item',[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('policyMenu.edit')))])],1)],1)],1),_c('delete-policy-dialog',{attrs:{\"policy\":_vm.value},on:{\"http2xx\":function($event){return _vm.$emit('http2xx', $event)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ on }){return [_c('v-list-item',_vm._g({},on),[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('policyMenu.delete')))])],1)],1)]}}]),model:{value:(_vm.isDeleting),callback:function ($$v) {_vm.isDeleting=$$v},expression:\"isDeleting\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form-dialog',{attrs:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function(bindings){return [_vm._t(\"default\",null,null,bindings)]}},{key:\"default\",fn:function({ close }){return [_c('delete-entity-card',{attrs:{\"title\":_vm.$t('deletePolicyDialog.title'),\"subtitle\":_vm.$t('deletePolicyDialog.subtitle'),\"value\":{ name: _vm.policy.policyName },\"loading\":_vm.$wait.is('deletingPolicy')},scopedSlots:_vm._u([{key:\"actions\",fn:function({ isValid, formId, clear, loading, form }){return [_c('back-button',{on:{\"click\":function($event){return close()}}}),_c('v-spacer'),_c('delete-policy-button',{directives:[{name:\"wait-while\",rawName:\"v-wait-while\",value:('deletingPolicy'),expression:\"'deletingPolicy'\"}],attrs:{\"value\":_vm.policy,\"form\":formId,\"clear\":clear,\"loading\":loading,\"valid\":isValid},on:{\"http2xx\":function($event){close().then(() => _vm.handleSuccessfulDeletion(form))}}})]}}],null,true)})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('http-delete-button',_vm._g(_vm._b({attrs:{\"href\":`/api/policies/${(_vm.value || {}).id}`,\"version\":\"v2\"},on:{\"http4xx\":_vm.onError}},'http-delete-button',_vm.$props,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deletePolicyButton.errorMessage\": \"There was an error encountered while deleting this policy. If everything looks right please contact support so we can help you :)\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyButton.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyButton.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyButton.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeletePolicyButton.vue?vue&type=template&id=75648419&\"\nimport script from \"./DeletePolicyButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DeletePolicyButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeletePolicyButton.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"deletePolicyDialog.events.successfulDeletion\": \"Successfully deleted the policy '{policyName}'\",\r\n \"deletePolicyDialog.title\": \"Delete Policy\",\r\n \"deletePolicyDialog.subtitle\": \"Please enter the name of this policy to delete it\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyDialog.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyDialog.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeletePolicyDialog.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./DeletePolicyDialog.vue?vue&type=template&id=da8f4460&\"\nimport script from \"./DeletePolicyDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DeletePolicyDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./DeletePolicyDialog.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\n\r\n\r\n{\r\n \"en\": {\r\n \"policyMenu.delete\": \"Delete\",\r\n \"policyMenu.edit\": \"Edit\"\r\n }\r\n}\r\n\r\n\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PolicyMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PolicyMenu.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PolicyMenu.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PolicyMenu.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PolicyMenu.vue?vue&type=template&id=abf12b10&\"\nimport script from \"./PolicyMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PolicyMenu.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { useTenantStore, useWaitStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport { listPolicies, listAllResults, getPolicySummary } from '@/lib/Api';\r\nimport PolicyMenu from '@/components/Domain.Policies/PolicyMenu.vue';\r\n\r\ntype Severity = 'Critical' | 'Warning' | 'Information';\r\n\r\ninterface IRecentResult {\r\n id: number;\r\n policyName: string;\r\n policyId: number;\r\n count: number;\r\n severity: Severity;\r\n lastRun: Date;\r\n}\r\n\r\ninterface IPolicyResult {\r\n id: number;\r\n policyName: string;\r\n dimension: string;\r\n severity: Severity;\r\n schedule: string;\r\n lastRun?: Date;\r\n lastRunRecordCount: number;\r\n}\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t('watchdogDashboard.title');\r\n },\r\n components: { PolicyMenu },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n setup() {\r\n const { is } = useWaitStore();\r\n const criticalCount = ref(0);\r\n const warningCount = ref(0);\r\n const policiesActive = ref(0);\r\n const recentResultCount = ref(0);\r\n const policies = ref([]);\r\n const loadPageData = async () => {\r\n const [policiesResp, resultsResp, summaryResp ] = await Promise.all([\r\n listPolicies(),\r\n listAllResults(),\r\n getPolicySummary(),\r\n ]);\r\n policies.value = policiesResp.map((p) => ({\r\n id: p.id,\r\n severity: p.severity as Severity,\r\n policyName: p.name,\r\n dimension: p.dimension.label,\r\n schedule: p.schedule?.description || 'Unknown',\r\n lastRun: p.lastRun,\r\n lastRunRecordCount: p.lastRunRecordCount\r\n }));\r\n criticalCount.value = summaryResp.totalCritical;\r\n policiesActive.value = summaryResp.totalPolicies;\r\n warningCount.value = summaryResp.totalWarning;\r\n recentResultCount.value = summaryResp.totalResultCount;\r\n\r\n };\r\n loadPageData();\r\n return {\r\n criticalCount,\r\n warningCount,\r\n policiesActive,\r\n policies,\r\n recentResultCount,\r\n loadPageData,\r\n wait: { is },\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=8556483c&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Index.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.policyName || _vm.$t('viewPolicy.title'),\"icon\":\"security\",\"needs-filters\":\"\",\"back-to\":\"/watchdog\",\"back-to-text\":\"Back to Dashboard\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":\"Policy Level\",\"subtitle\":`Hits on this policy are considered to be ${_vm.policyLevel}`}},[(_vm.policyLevel === 'Information')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"info\"}},[_vm._v(\"info\")]):(_vm.policyLevel === 'Warning')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"warning\"}},[_vm._v(\"warning\")]):(_vm.policyLevel === 'Error' || _vm.policyLevel === 'Critical')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"error\"}},[_vm._v(\"error\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.policyLevel)+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Dimension\",\"subtitle\":`Grouped by dimension '${_vm.dimension}'`}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"tag\")]),_vm._v(\" \"+_vm._s(_vm.dimension)+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Schedule\",\"subtitle\":_vm.scheduleDescription}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"schedule\")]),_vm._v(\" \"+_vm._s(_vm.schedule === 'PostImport' || _vm.schedule === 'EveryImport' ? 'Every Import' : _vm.schedule)+\" \")],1)],1),_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.strategySummary)+\" \")])])],1),(_vm.deltaStrategyDesc)?_c('v-card',{staticClass:\"alert-info mt-3\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.customViewDescription)+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription1(_vm.deltaStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription2(_vm.deltaStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription3(_vm.deltaStrategyDesc))+\" \")])])],1):_vm._e(),(_vm.newSpendStrategyDesc)?_c('v-card',{staticClass:\"alert-info mt-3\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.customViewDescription)+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription1(_vm.newSpendStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription2(_vm.newSpendStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription3(_vm.newSpendStrategyDesc))+\" \")])])],1):_vm._e(),(_vm.newAccountStrategyDesc)?_c('v-card',{staticClass:\"alert-info mt-3\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.customViewDescription)+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription1(_vm.newAccountStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription2(_vm.newAccountStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription3(_vm.newAccountStrategyDesc))+\" \")])])],1):_vm._e(),(_vm.regionalSpendStrategyDesc)?_c('v-card',{staticClass:\"alert-info mt-3\",attrs:{\"flat\":\"\"}},[_c('v-card-subtitle',[_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.customViewDescription)+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription1(_vm.regionalSpendStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription2(_vm.regionalSpendStrategyDesc))+\" \")]),_c('h2',{staticClass:\"subtitle-1 flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.policyDescription3(_vm.regionalSpendStrategyDesc))+\" \")])])],1):_vm._e(),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":\"Recent Results\",\"title-icon\":\"schedule\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Policy Name\")]),_c('th',{staticClass:\"text-center\"},[_vm._v(\"Result Count\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Severity\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Ran At\")]),_c('th',{staticClass:\"text-center\"},[_vm._v(\"Download\")])])]),_c('tbody',[(!_vm.recentResults.length)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"5\"}},[_vm._v(\"There are no recent runs\")])]):_vm._e(),_vm._l((_vm.recentResults),function(item,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(item.policyName))]),_c('td',{staticClass:\"text-center\"},[_vm._v(_vm._s(item.count))]),_c('td',[_vm._v(_vm._s(item.severity))]),_c('td',[_vm._v(_vm._s(_vm._f(\"calendarFormat\")(item.lastRun)))]),_c('td',{staticClass:\"text-center\"},[_c('v-btn',{on:{\"click\":function($event){return _vm.downloadPage(item.id, item.policyId)}}},[_c('v-icon',[_vm._v(\"download\")]),_vm._v(\" Download \")],1)],1)])})],2)])],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":\"Recipients\",\"title-icon\":\"email\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Mailing List Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Recipient Addresses\")])])]),_c('tbody',[(!_vm.mailingList)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\"There is no assigned mailing list\")])]):_c('tr',[_c('td',[_vm._v(_vm._s(_vm.mailingList.name))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.mailingList.emails)+\" \")])])])])],1),_c('content-card',{staticClass:\"mt-3\",attrs:{\"title\":\"Webhooks\",\"title-icon\":\"bolt\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Webhook Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Url\")])])]),_c('tbody',[(!_vm.webhook)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\"There is no assigned webhook\")])]):_c('tr',[_c('td',[_vm._v(_vm._s(_vm.webhook.name))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.webhook.url)+\" \")])])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { useTenantStore, useWaitStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport { getPolicy, listPolicyResults, putMailingList, getPolicyResultUrl } from '@/lib/Api';\r\n\r\ntype Severity = 'Critical' | 'Warning' | 'Information';\r\n\r\ninterface IRecentResult {\r\n id: number;\r\n policyName: string;\r\n policyId: number;\r\n count: number;\r\n severity: Severity;\r\n lastRun: Date;\r\n}\r\n\r\ninterface IMailingListViewModel {\r\n id: number;\r\n name: string;\r\n emails: string[];\r\n}\r\n\r\ninterface IWebhookViewModel {\r\n id: number;\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t('viewPolicy.title');\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n methods:{\r\n policyDescription1(description: string) {\r\n if (description != null) return description.split('\\r\\n')[0];\r\n else return '';\r\n },\r\n policyDescription2(description: string) {\r\n if (description != null) return description.split('\\r\\n')[1];\r\n else return '';\r\n },\r\n policyDescription3(description: string) {\r\n if (description != null) return description.split('\\r\\n')[2];\r\n else return '';\r\n },\r\n },\r\n setup() {\r\n const { is } = useWaitStore();\r\n const loading = ref(false);\r\n const policyName = ref('');\r\n const policyLevel = ref('');\r\n const customViewDescription = ref('');\r\n const deltaStrategyDesc = ref('');\r\n const strategySummary = ref('');\r\n const newSpendStrategyDesc = ref('');\r\n const newAccountStrategyDesc = ref('');\r\n const regionalSpendStrategyDesc = ref('');\r\n const dimension = ref('');\r\n const schedule = ref('');\r\n const scheduleDescription = ref('');\r\n const recentResults = ref([]);\r\n const mailingList = ref();\r\n const webhook = ref();\r\n const loadPageData = async (id: number) => {\r\n const [policyResp, resultsResp] = await Promise.all([getPolicy(id), listPolicyResults(id)]);\r\n policyName.value = policyResp.name;\r\n policyLevel.value = policyResp.severity;\r\n policyResp.description;\r\n customViewDescription.value = policyResp.customView?.filterDescription || 'All Tenant Spend';\r\n deltaStrategyDesc.value = policyResp.deltaSpendStrategy?.description;\r\n newSpendStrategyDesc.value = policyResp.newSpendStrategy?.description;\r\n newAccountStrategyDesc.value = policyResp.newAccountStrategy?.description; \r\n regionalSpendStrategyDesc.value = policyResp.regionalSpendStrategy?.description;\r\n strategySummary.value = policyResp.strategySummary;\r\n dimension.value = policyResp.dimension.label;\r\n schedule.value = policyResp.schedule.frequency;\r\n scheduleDescription.value = policyResp.schedule.description;\r\n recentResults.value = resultsResp.map((r) => ({\r\n id: r.id,\r\n policyName: policyName.value,\r\n policyId: id,\r\n dimension: r.dimensionLabel,\r\n schedule: r.scheduleDescription,\r\n count: r.resultCount,\r\n lastRun: r.ranAt,\r\n severity: policyLevel.value as Severity,\r\n }));\r\n\r\n if (policyResp.mailingList) {\r\n mailingList.value = {\r\n id: policyResp.mailingList.id,\r\n name: policyResp.mailingList.name,\r\n emails: policyResp.mailingList.emails,\r\n };\r\n }\r\n\r\n if (policyResp.webhook) {\r\n webhook.value = {\r\n id: policyResp.webhook.id,\r\n name: policyResp.webhook.name,\r\n url: policyResp.webhook.url,\r\n };\r\n }\r\n };\r\n const downloadPage = async (id: number, policyId: number) => {\r\n const { downloadUrl } = await getPolicyResultUrl(policyId, id);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.setAttribute('download', `${policyName.value}_page.csv`);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n };\r\n return {\r\n policyName,\r\n policyLevel,\r\n customViewDescription,\r\n strategySummary,\r\n deltaStrategyDesc,\r\n newSpendStrategyDesc,\r\n newAccountStrategyDesc,\r\n regionalSpendStrategyDesc,\r\n dimension,\r\n schedule,\r\n recentResults,\r\n mailingList,\r\n webhook,\r\n loadPageData,\r\n downloadPage,\r\n scheduleDescription,\r\n wait: { is },\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(val) {\r\n if (!val) return;\r\n if (!val.params.id) return;\r\n this.loadPageData(Number(val.params.id));\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicy.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ViewPolicy.vue?vue&type=template&id=2f3e15e1&\"\nimport script from \"./ViewPolicy.vue?vue&type=script&lang=ts&\"\nexport * from \"./ViewPolicy.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ViewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.policyName || _vm.$t('viewPolicy.title'),\"icon\":\"security\",\"needs-filters\":\"\",\"back-to\":`/watchdog/${_vm.policyId}`,\"back-to-text\":\"Back to Policy\"}}),_c('v-container',[_c('title-sheets',[_c('title-sheet',{attrs:{\"title\":\"Last Scheduled Execution\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"schedule\")]),_vm._v(\" \"+_vm._s(_vm._f(\"calendarFormat\")(_vm.policyRunTime))+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Severity\"}},[(_vm.policyLevel === 'Information')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"info\"}},[_vm._v(\"info\")]):(_vm.policyLevel === 'Warning')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"warning\"}},[_vm._v(\"warning\")]):(_vm.policyLevel === 'Error')?_c('v-icon',{attrs:{\"left\":\"\",\"color\":\"error\"}},[_vm._v(\"error\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.policyLevel)+\" \")],1),_c('title-sheet',{attrs:{\"title\":\"Total Records\"}},[_vm._v(\" \"+_vm._s(_vm.results.map((r) => r.recordCount).reduce((a, b) => a + b, 0))+\" \")])],1),_c('content-card',{attrs:{\"title\":\"Results\",\"title-icon\":\"schedule\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Page Number\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Results in page\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Actions\")])])]),_c('tbody',[(!_vm.results.length)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"4\"}},[_vm._v(\"There are no recent runs\")])]):_vm._e(),_vm._l((_vm.results),function(item,i){return _c('tr',{key:i},[_c('td',[_vm._v(\"Page #\"+_vm._s(item.id))]),_c('td',[_vm._v(_vm._s(item.recordCount)+\" records\")]),_c('td',[_c('v-btn',{on:{\"click\":function($event){return _vm.downloadPage(item.id)}}},[_c('v-icon',[_vm._v(\"download\")]),_vm._v(\" Download \")],1)],1)])})],2)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref } from 'vue';\r\nimport { useTenantStore, useWaitStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport { getPolicy, listPolicyResults, getMailingList, getPolicyResultUrl } from '@/lib/Api';\r\n\r\ninterface IResultItem {\r\n id: number;\r\n recordCount: number;\r\n}\r\n\r\nexport default defineComponent({\r\n title(ctx) {\r\n return ctx.$t('viewPolicy.title');\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n },\r\n setup() {\r\n const { is } = useWaitStore();\r\n const policyId = ref(0);\r\n const resultId = ref(0);\r\n const policyName = ref('');\r\n const policyLevel = ref('');\r\n const policyRunTime = ref(new Date());\r\n const dimension = ref('');\r\n const emailsSent = ref(3);\r\n const results = ref([]);\r\n const loadPageData = async (id: number, rid: number) => {\r\n const [policyResp, resultsResp] = await Promise.all([getPolicy(id), listPolicyResults(id)]);\r\n policyId.value = id;\r\n resultId.value = rid;\r\n policyName.value = policyResp.name;\r\n policyLevel.value = policyResp.severity;\r\n dimension.value = policyResp.dimension.label;\r\n const result = resultsResp.find((r) => r.id === rid);\r\n if (result) {\r\n policyRunTime.value = result.ranAt;\r\n results.value = Object.entries(result.resultPages).map(([id, recordCount]) => ({\r\n id: Number(id),\r\n recordCount,\r\n }));\r\n }\r\n const emails = policyResp.schedule.emailNotifyList.split(',');\r\n if (policyResp.mailingList) {\r\n const res = await getMailingList(policyResp.mailingList.id);\r\n const allEmails = new Set([...emails, ...res.emails]);\r\n emailsSent.value = allEmails.size;\r\n } else {\r\n emailsSent.value = emails.length;\r\n }\r\n };\r\n const downloadPage = async (index: number) => {\r\n const { downloadUrl } = await getPolicyResultUrl(policyId.value, resultId.value);\r\n const link = document.createElement('a');\r\n link.href = downloadUrl;\r\n link.setAttribute('download', `${policyName.value}_page${index}.csv`);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n };\r\n return {\r\n policyName,\r\n policyLevel,\r\n policyId,\r\n policyRunTime,\r\n dimension,\r\n emailsSent,\r\n results,\r\n loadPageData,\r\n downloadPage,\r\n wait: { is },\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(val) {\r\n if (!val) return;\r\n if (!val.params.id) return;\r\n this.loadPageData(Number(val.params.id), Number(val.params.rid));\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicyRun.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicyRun.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicyRun.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewPolicyRun.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ViewPolicyRun.vue?vue&type=template&id=01efca72&\"\nimport script from \"./ViewPolicyRun.vue?vue&type=script&lang=ts&\"\nexport * from \"./ViewPolicyRun.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ViewPolicyRun.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.$t((_vm.editId > 0 ? 'editPolicy.title' : 'newPolicy.title')),\"icon\":\"add\",\"needs-filters\":\"\",\"back-to\":\"/watchdog\",\"back-to-text\":\"Back to Dashboard\"}}),_c('v-container',[_c('content-card',{attrs:{\"title\":\"Policy Details\"}},[_c('v-form',{model:{value:(_vm.formValid),callback:function ($$v) {_vm.formValid=$$v},expression:\"formValid\"}},[(!_vm.isLoading && !_vm.dimensions.length)?_c('v-alert',{attrs:{\"color\":\"error\"}},[_vm._v(\" This tenant does not have any dimensions yet! \")]):_vm._e(),(!_vm.isLoading && !_vm.mailingLists.length)?_c('v-alert',{attrs:{\"color\":\"error\"}},[_vm._v(\" Watchdog policies require a mailing list. Please go to \"),_c('router-link',{attrs:{\"to\":`/settings/mailinglists`}},[_vm._v(\"settings\")]),_vm._v(\" to create a mailing list. \")],1):_vm._e(),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-text-field',{staticClass:\"py-1\",attrs:{\"label\":\"Policy Name\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.policyName),callback:function ($$v) {_vm.policyName=$$v},expression:\"policyName\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Severity\",\"items\":_vm.policyLevels,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.policyLevel),callback:function ($$v) {_vm.policyLevel=$$v},expression:\"policyLevel\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Dimension\",\"items\":_vm.dimensions,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.dimension),callback:function ($$v) {_vm.dimension=$$v},expression:\"dimension\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.customViews,\"label\":\"Custom View\",\"clearable\":\"\"},model:{value:(_vm.customViewId),callback:function ($$v) {_vm.customViewId=$$v},expression:\"customViewId\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Line Item Type\",\"items\":_vm.lineItemTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.lineItemType),callback:function ($$v) {_vm.lineItemType=$$v},expression:\"lineItemType\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Strategy\",\"items\":_vm.strategies,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.strategy),callback:function ($$v) {_vm.strategy=$$v},expression:\"strategy\"}})],1)],1),(_vm.strategy == 'AverageSpend')?_c('fieldset',{staticClass:\"pa-3\"},[_c('legend',[_vm._v(\"Delta Average Spend By Dimension\")]),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Delta %\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinDeltaPercent),callback:function ($$v) {_vm.triggerMinDeltaPercent=$$v},expression:\"triggerMinDeltaPercent\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Delta Amount\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinDeltaAmount),callback:function ($$v) {_vm.triggerMinDeltaAmount=$$v},expression:\"triggerMinDeltaAmount\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Calculate Average Over (Days)\",\"type\":\"number\",\"rules\":[_vm.$rules.required(), _vm.$rules.max(90), _vm.$rules.min(10)]},model:{value:(_vm.averageOverDays),callback:function ($$v) {_vm.averageOverDays=$$v},expression:\"averageOverDays\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.granularities,\"label\":\"Comparison Granularity\"},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Look-back Period\",\"items\":_vm.comparisonPeriodTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.comparisonPeriod),callback:function ($$v) {_vm.comparisonPeriod=$$v},expression:\"comparisonPeriod\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.lookBackPeriodLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.countComparisonPeriod),callback:function ($$v) {_vm.countComparisonPeriod=$$v},expression:\"countComparisonPeriod\"}})],1)],1)],1):_vm._e(),(_vm.strategy == 'DeltaSpend')?_c('fieldset',{staticClass:\"pa-3\"},[_c('legend',[_vm._v(\"Delta Spend By Dimension\")]),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Delta %\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinDeltaPercent),callback:function ($$v) {_vm.triggerMinDeltaPercent=$$v},expression:\"triggerMinDeltaPercent\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Delta Amount\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinDeltaAmount),callback:function ($$v) {_vm.triggerMinDeltaAmount=$$v},expression:\"triggerMinDeltaAmount\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.granularities,\"label\":\"Comparison Granularity\"},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Look-back Period\",\"items\":_vm.comparisonPeriodTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.comparisonPeriod),callback:function ($$v) {_vm.comparisonPeriod=$$v},expression:\"comparisonPeriod\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.lookBackPeriodLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.countComparisonPeriod),callback:function ($$v) {_vm.countComparisonPeriod=$$v},expression:\"countComparisonPeriod\"}})],1)],1)],1):_vm._e(),(_vm.strategy == 'NewSpend')?_c('fieldset',{staticClass:\"pa-3\"},[_c('legend',[_vm._v(\"Introduced Spend By Dimension\")]),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum New Amount\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinNewAmount),callback:function ($$v) {_vm.triggerMinNewAmount=$$v},expression:\"triggerMinNewAmount\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Comparison Type\",\"items\":_vm.compareTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.compareType),callback:function ($$v) {_vm.compareType=$$v},expression:\"compareType\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.granularities,\"disabled\":\"\",\"label\":\"Comparison Granularity\"},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Look-back Period\",\"items\":_vm.comparisonPeriodTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.comparisonPeriod),callback:function ($$v) {_vm.comparisonPeriod=$$v},expression:\"comparisonPeriod\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.lookBackPeriodLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.countComparisonPeriod),callback:function ($$v) {_vm.countComparisonPeriod=$$v},expression:\"countComparisonPeriod\"}})],1)],1)],1):_vm._e(),(_vm.strategy == 'NewAccount')?_c('fieldset',{staticClass:\"pa-3\"},[_c('legend',[_vm._v(\"New Account By Dimension\")]),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum New Amount\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinNewAmount),callback:function ($$v) {_vm.triggerMinNewAmount=$$v},expression:\"triggerMinNewAmount\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.granularities,\"disabled\":\"\",\"label\":\"Comparison Granularity\"},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Look-back Period\",\"items\":_vm.comparisonPeriodTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.comparisonPeriod),callback:function ($$v) {_vm.comparisonPeriod=$$v},expression:\"comparisonPeriod\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.lookBackPeriodLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.countComparisonPeriod),callback:function ($$v) {_vm.countComparisonPeriod=$$v},expression:\"countComparisonPeriod\"}})],1)],1)],1):_vm._e(),(_vm.strategy == 'RegionalSpend')?_c('fieldset',{staticClass:\"pa-3\"},[_c('legend',[_vm._v(\"Multi Region Spend By Dimension\")]),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Usage Amount\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinUsageAmount),callback:function ($$v) {_vm.triggerMinUsageAmount=$$v},expression:\"triggerMinUsageAmount\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Minimum Region Count\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.triggerMinRegionCount),callback:function ($$v) {_vm.triggerMinRegionCount=$$v},expression:\"triggerMinRegionCount\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Look-back Period\",\"items\":_vm.comparisonPeriodTypes,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.comparisonPeriod),callback:function ($$v) {_vm.comparisonPeriod=$$v},expression:\"comparisonPeriod\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.lookBackPeriodLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.countComparisonPeriod),callback:function ($$v) {_vm.countComparisonPeriod=$$v},expression:\"countComparisonPeriod\"}})],1)],1)],1):_vm._e(),_c('v-row',{staticClass:\"py-1 mt-3\"},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":\"Schedule Frequency\",\"items\":_vm.schedules,\"rules\":[_vm.$rules.required()]},model:{value:(_vm.schedule),callback:function ($$v) {_vm.schedule=$$v},expression:\"schedule\"}})],1),(_vm.schedule !== 'EveryImport')?_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Schedule Frequency Quantity\",\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.scheduleFreqQty),callback:function ($$v) {_vm.scheduleFreqQty=$$v},expression:\"scheduleFreqQty\"}})],1):_vm._e(),(_vm.schedule !== 'EveryImport')?_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":_vm.scheduleDayLabel,\"type\":\"number\",\"rules\":[_vm.$rules.required()]},model:{value:(_vm.scheduleDay),callback:function ($$v) {_vm.scheduleDay=$$v},expression:\"scheduleDay\"}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{staticClass:\"py-1\",attrs:{\"items\":_vm.mailingLists,\"label\":\"Mailing List\",\"clearable\":\"\"},model:{value:(_vm.mailingList),callback:function ($$v) {_vm.mailingList=$$v},expression:\"mailingList\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{staticClass:\"py-1\",attrs:{\"items\":_vm.webhooks,\"label\":\"Webhook\",\"clearable\":\"\"},model:{value:(_vm.webhook),callback:function ($$v) {_vm.webhook=$$v},expression:\"webhook\"}})],1)],1),_c('v-row',{staticClass:\"py-1 mt-3\"},[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"block\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.back()}}},[_c('v-icon',[_vm._v(\"chevron_left\")]),_vm._v(\" Back \")],1)],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"disabled\":!_vm.formValid || _vm.isSubmitting,\"loading\":_vm.isSubmitting,\"block\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.trySubmitForm().then(() => _vm.back())}}},[_c('v-icon',[_vm._v(\"done\")]),_vm._v(\" \"+_vm._s(_vm.editId > 0 ? 'Update' : 'Submit')+\" \")],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { useTenantStore, useWaitStore } from '@/stores';\r\nimport { mapStores } from 'pinia';\r\nimport { IDeltaSpendStrategyModel, INewSpendStrategyModel, INewAccountStrategyModel, IRegionalSpendStrategyModel, IAverageSpendStrategyModel, CostView } from '@/models/IPolicyModel'\r\nimport {\r\n createPolicy,\r\n putPolicy,\r\n listDimensions,\r\n getMailingLists,\r\n getCustomViews,\r\n getPolicy,\r\n listPolicyResults,\r\n getWebhooks\r\n} from '@/lib/Api';\r\nimport ContentCard from '@/components/Common/ContentCard.vue';\r\n\r\ninterface IListItem {\r\n value: string;\r\n text: string;\r\n}\r\n\r\nexport default defineComponent({\r\n components: { ContentCard },\r\n title(ctx) {\r\n return ctx.$t('newPolicy.title');\r\n },\r\n computed: {\r\n ...mapStores(useTenantStore),\r\n scheduleDayLabel() {\r\n if (this.schedule === 'EveryImport') return '';\r\n return this.schedule === 'Weekly' ? 'Schedule Day of the Week (Sunday = 0)' : 'Schedule Day of the Month';\r\n },\r\n lookBackPeriodLabel() {\r\n if (!this.comparisonPeriod) return '';\r\n return this.comparisonPeriod === 'Day' ? 'Look-back Days' : this.comparisonPeriod === 'Week' ? 'Look-back Weeks' : 'Look-back Months';\r\n },\r\n },\r\n methods: {\r\n back() {\r\n this.$router.push('/watchdog');\r\n },\r\n },\r\n setup() {\r\n const { is } = useWaitStore();\r\n const formValid = ref(false);\r\n\r\n const editId = ref(0);\r\n\r\n const policyName = ref('');\r\n const policyLevel = ref('Critical');\r\n const policyLevels = ref([\r\n { value: 'Critical', text: 'Critical' },\r\n { value: 'Warning', text: 'Warning' },\r\n { value: 'Information', text: 'Informational' },\r\n ]);\r\n const dimension = ref('');\r\n const dimensions = ref([]);\r\n const strategy = ref('');\r\n const strategies = ref([\r\n { value: 'AverageSpend', text: 'Delta Average Spend By Dimension' },\r\n { value: 'DeltaSpend', text: 'Delta Spend By Dimension' },\r\n { value: 'NewSpend', text: 'Introduced Spend By Dimension' },\r\n { value: 'NewAccount', text: 'New Account By Dimension' },\r\n { value: 'RegionalSpend', text: 'Multi Region Spend By Dimension' }\r\n ]);\r\n const compareType = ref('Product');\r\n const compareTypes = ref([\r\n { value: 'Product', text: 'Products' },\r\n { value: 'ProductCategory', text: 'Product Categories' },\r\n { value: 'Region', text: 'Regions' }\r\n ]);\r\n const granularity = ref('Day');\r\n const granularities = ref([\r\n { value: 'Day', text: 'Day' },\r\n { value: 'Week', text: 'Week' },\r\n { value: 'Month', text: 'Month' },\r\n ])\r\n const countComparisonPeriod = ref(1);\r\n const comparisonPeriod = ref('Day');\r\n const comparisonPeriodTypes = ref([\r\n { value: 'Day', text: 'Day(s)' },\r\n { value: 'Week', text: 'Week(s)' },\r\n { value: 'Month', text: 'Month(s)' },\r\n ]);\r\n const lineItemType = ref('UsagePlusFees');\r\n const lineItemTypes = ref([\r\n { value: 'UsageOnly', text: 'Usage Only' },\r\n { value: 'UsagePlusFees', text: 'Usage + Fees' },\r\n { value: 'FeesOnly', text: 'Fees Only' }\r\n ]);\r\n const triggerMinDeltaPercent = ref(20);\r\n const triggerMinDeltaAmount = ref(100);\r\n const averageOverDays = ref(30);\r\n const triggerMinNewAmount = ref(100);\r\n const triggerMinUsageAmount = ref(1000);\r\n const triggerMinRegionCount = ref(3);\r\n const scheduleFreqQty = ref(1);\r\n const scheduleDay = ref(1);\r\n const schedule = ref('EveryImport');\r\n const schedules = ref([\r\n { value: 'EveryImport', text: 'Twice daily @ 00:00 UTC & 12:00 UTC' },\r\n { value: 'Weekly', text: 'Weekly' },\r\n { value: 'Monthly', text: 'Monthly' },\r\n ]);\r\n const mailingList = ref(null);\r\n const mailingLists = ref([]);\r\n const emailRecipients = ref([]);\r\n\r\n const webhook = ref(null);\r\n const webhooks = ref([]);\r\n\r\n const customViewId = ref(null);\r\n const customViews = ref([]);\r\n\r\n const isLoading = ref(false);\r\n const loadPageData = async () => {\r\n try {\r\n isLoading.value = true;\r\n const [dims, mls, cvs, whs] = await Promise.all([listDimensions(), getMailingLists(), getCustomViews(), getWebhooks()]);\r\n dimensions.value = dims.map((d) => ({\r\n value: d.id.toString(),\r\n text: d.label,\r\n }));\r\n mailingLists.value = mls.map((m) => ({\r\n value: m.id.toString(),\r\n text: m.name,\r\n }));\r\n customViews.value = cvs.map((cv) => ({\r\n value: cv.id,\r\n text: cv.name,\r\n }));\r\n webhooks.value = whs.map((wh) => ({\r\n value: wh.id.toString(),\r\n text: wh.name,\r\n }));\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n loadPageData();\r\n const isSubmitting = ref(false);\r\n const trySubmitForm = async () => {\r\n try {\r\n isSubmitting.value = true;\r\n let averageSpendStrategy: IAverageSpendStrategyModel;\r\n let deltaSpendStrategy: IDeltaSpendStrategyModel;\r\n let newSpendStrategy: INewSpendStrategyModel;\r\n let newAccountStrategy: INewAccountStrategyModel;\r\n let regionalSpendStrategy: IRegionalSpendStrategyModel;\r\n if (strategy.value == \"AverageSpend\") {\r\n newSpendStrategy = null;\r\n regionalSpendStrategy = null;\r\n deltaSpendStrategy = null;\r\n newAccountStrategy = null;\r\n averageSpendStrategy = {\r\n comparePeriod: comparisonPeriod.value,\r\n comparePeriodQuantity: countComparisonPeriod.value,\r\n granularity: granularity.value,\r\n averageOverDays: averageOverDays.value,\r\n triggerMinDeltaAmount: triggerMinDeltaAmount.value,\r\n triggerMinDeltaPercent: triggerMinDeltaPercent.value,\r\n description: null,\r\n lineItemType: lineItemType.value,\r\n };\r\n }\r\n\r\n if (strategy.value == \"DeltaSpend\") {\r\n newSpendStrategy = null;\r\n regionalSpendStrategy = null;\r\n newAccountStrategy = null;\r\n deltaSpendStrategy = {\r\n comparePeriod: comparisonPeriod.value,\r\n comparePeriodQuantity: countComparisonPeriod.value,\r\n granularity: granularity.value,\r\n serviceName: null,\r\n triggerMinDeltaAmount: triggerMinDeltaAmount.value,\r\n triggerMinDeltaPercent: triggerMinDeltaPercent.value,\r\n description: null,\r\n lineItemType: lineItemType.value,\r\n };\r\n }\r\n\r\n if (strategy.value == \"NewSpend\") {\r\n deltaSpendStrategy = null;\r\n regionalSpendStrategy = null;\r\n newAccountStrategy = null;\r\n newSpendStrategy = {\r\n compareType: compareType.value,\r\n comparePeriod: comparisonPeriod.value,\r\n comparePeriodQuantity: countComparisonPeriod.value,\r\n granularity: granularity.value,\r\n triggerMinNewAmount: triggerMinNewAmount.value,\r\n description: null,\r\n lineItemType: lineItemType.value,\r\n };\r\n }\r\n\r\n if (strategy.value == \"NewAccount\") {\r\n deltaSpendStrategy = null;\r\n regionalSpendStrategy = null;\r\n newSpendStrategy = null;\r\n newAccountStrategy = {\r\n comparePeriod: comparisonPeriod.value,\r\n comparePeriodQuantity: countComparisonPeriod.value,\r\n triggerMinNewAmount: triggerMinNewAmount.value,\r\n description: null,\r\n lineItemType: lineItemType.value,\r\n };\r\n }\r\n\r\n if (strategy.value == \"RegionalSpend\") {\r\n deltaSpendStrategy = null;\r\n newSpendStrategy = null;\r\n newAccountStrategy = null;\r\n regionalSpendStrategy = {\r\n comparePeriod: comparisonPeriod.value,\r\n comparePeriodQuantity: countComparisonPeriod.value,\r\n triggerMinUsageAmount: triggerMinUsageAmount.value,\r\n triggerMinRegionCount: triggerMinRegionCount.value,\r\n description: null,\r\n lineItemType: lineItemType.value,\r\n };\r\n }\r\n\r\n const policyRequest = {\r\n createdDate: new Date(),\r\n dimension: { id: Number(dimension.value), label: '', tagKey: '', index: 0 },\r\n id: editId.value > 0 ? editId.value : 0,\r\n name: policyName.value,\r\n severity: policyLevel.value,\r\n strategySummary: null,\r\n description: null,\r\n lastRun: null,\r\n lastRunRecordCount: 0,\r\n updatedDate: new Date(),\r\n lineItemType: null,\r\n deltaSpendStrategy: deltaSpendStrategy,\r\n newSpendStrategy: newSpendStrategy,\r\n regionalSpendStrategy: regionalSpendStrategy,\r\n averageSpendStrategy: averageSpendStrategy,\r\n newAccountStrategy: newAccountStrategy,\r\n schedule: {\r\n id: 0,\r\n description: '',\r\n emailNotifyList: emailRecipients.value.join(','),\r\n frequency: schedule.value,\r\n frequencyQuantity: scheduleFreqQty.value,\r\n nextScheduled: new Date(),\r\n day: scheduleDay.value,\r\n },\r\n mailingList: {\r\n id: mailingList.value,\r\n name: '',\r\n emails: [],\r\n },\r\n customView: {\r\n id: customViewId.value ?? -1,\r\n },\r\n webhook: {\r\n id: webhook.value ?? -1,\r\n }\r\n }\r\n\r\n if (editId.value > 0)\r\n return await putPolicy(policyRequest);\r\n else\r\n return await createPolicy(policyRequest);\r\n } finally {\r\n isSubmitting.value = false;\r\n }\r\n };\r\n\r\n const loadPolicyDataForEdit = async (id: number) => {\r\n const [policyResp, resultsResp] = await Promise.all([getPolicy(id), listPolicyResults(id)]);\r\n\r\n policyName.value = policyResp.name;\r\n policyLevel.value = policyResp.severity;\r\n customViewId.value = policyResp.customView?.id;\r\n dimension.value = policyResp.dimension?.id.toString();\r\n schedule.value = policyResp.schedule.frequency;\r\n scheduleFreqQty.value = policyResp.schedule.frequencyQuantity;\r\n scheduleDay.value = policyResp.schedule.day;\r\n mailingList.value = policyResp.mailingList?.id.toString();\r\n webhook.value = policyResp.webhook?.id.toString();\r\n\r\n if (policyResp.newSpendStrategy) {\r\n strategy.value = \"NewSpend\";\r\n lineItemType.value = policyResp.newSpendStrategy.lineItemType;\r\n triggerMinNewAmount.value = policyResp.newSpendStrategy.triggerMinNewAmount;\r\n compareType.value = policyResp.newSpendStrategy.compareType;\r\n granularity.value = policyResp.newSpendStrategy.granularity;\r\n comparisonPeriod.value = policyResp.newSpendStrategy.comparePeriod;\r\n countComparisonPeriod.value = policyResp.newSpendStrategy.comparePeriodQuantity;\r\n }\r\n else if (policyResp.newAccountStrategy) {\r\n strategy.value = \"NewAccount\";\r\n lineItemType.value = policyResp.newAccountStrategy.lineItemType;\r\n triggerMinNewAmount.value = policyResp.newAccountStrategy.triggerMinNewAmount;\r\n comparisonPeriod.value = policyResp.newAccountStrategy.comparePeriod;\r\n countComparisonPeriod.value = policyResp.newAccountStrategy.comparePeriodQuantity;\r\n }\r\n else if (policyResp.regionalSpendStrategy) {\r\n strategy.value = \"RegionalSpend\";\r\n lineItemType.value = policyResp.regionalSpendStrategy.lineItemType;\r\n triggerMinUsageAmount.value = policyResp.regionalSpendStrategy.triggerMinUsageAmount;\r\n triggerMinRegionCount.value = policyResp.regionalSpendStrategy.triggerMinRegionCount;\r\n comparisonPeriod.value = policyResp.regionalSpendStrategy.comparePeriod;\r\n countComparisonPeriod.value = policyResp.regionalSpendStrategy.comparePeriodQuantity;\r\n }\r\n else if (policyResp.deltaSpendStrategy) {\r\n strategy.value = \"DeltaSpend\";\r\n lineItemType.value = policyResp.deltaSpendStrategy.lineItemType;\r\n triggerMinDeltaPercent.value = policyResp.deltaSpendStrategy.triggerMinDeltaPercent;\r\n triggerMinDeltaAmount.value = policyResp.deltaSpendStrategy.triggerMinDeltaAmount;\r\n granularity.value = policyResp.deltaSpendStrategy.granularity;\r\n comparisonPeriod.value = policyResp.deltaSpendStrategy.comparePeriod;\r\n countComparisonPeriod.value = policyResp.deltaSpendStrategy.comparePeriodQuantity;\r\n }\r\n else if (policyResp.averageSpendStrategy) {\r\n strategy.value = \"AverageSpend\";\r\n lineItemType.value = policyResp.averageSpendStrategy.lineItemType;\r\n averageOverDays.value = policyResp.averageSpendStrategy.averageOverDays;\r\n triggerMinDeltaPercent.value = policyResp.averageSpendStrategy.triggerMinDeltaPercent;\r\n triggerMinDeltaAmount.value = policyResp.averageSpendStrategy.triggerMinDeltaAmount;\r\n granularity.value = policyResp.averageSpendStrategy.granularity;\r\n comparisonPeriod.value = policyResp.averageSpendStrategy.comparePeriod;\r\n countComparisonPeriod.value = policyResp.averageSpendStrategy.comparePeriodQuantity;\r\n }\r\n };\r\n\r\n return {\r\n formValid,\r\n policyName,\r\n policyLevel,\r\n policyLevels,\r\n dimension,\r\n dimensions,\r\n strategy,\r\n strategies,\r\n compareType,\r\n compareTypes,\r\n scheduleFreqQty,\r\n scheduleDay,\r\n schedule,\r\n schedules,\r\n granularity,\r\n granularities,\r\n countComparisonPeriod,\r\n comparisonPeriod,\r\n comparisonPeriodTypes,\r\n lineItemType,\r\n lineItemTypes,\r\n triggerMinDeltaPercent,\r\n triggerMinDeltaAmount,\r\n averageOverDays,\r\n triggerMinNewAmount,\r\n triggerMinUsageAmount,\r\n triggerMinRegionCount,\r\n mailingList,\r\n mailingLists,\r\n webhook,\r\n webhooks,\r\n emailRecipients,\r\n isSubmitting,\r\n editId,\r\n trySubmitForm,\r\n loadPolicyDataForEdit,\r\n isLoading,\r\n customViewId,\r\n customViews,\r\n wait: { is },\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n handler(val) {\r\n if (!val) return;\r\n if (!val.params.id) return;\r\n\r\n this.editId = Number(val.params.id);\r\n this.loadPolicyDataForEdit(this.editId);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewPolicy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewPolicy.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./NewPolicy.vue?vue&type=template&id=701ba4d0&\"\nimport script from \"./NewPolicy.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewPolicy.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NewPolicy.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import { v4 } from 'uuid';\r\nimport { PartialPick } from '@/lib';\r\nimport { ISavedReportResultParams, PluralEntityType } from '@/models';\r\n\r\nexport interface Identified {\r\n id: string;\r\n}\r\n\r\nexport interface Named {\r\n name: string;\r\n}\r\n\r\nexport interface Described {\r\n description: string;\r\n}\r\n\r\nexport interface Position {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface Rectangle {\r\n w: number;\r\n h: number;\r\n}\r\n\r\nexport interface Typed {\r\n type: TType;\r\n}\r\n\r\nexport interface GridWidget extends Identified, Named, Position, Rectangle {\r\n config: TConfig;\r\n}\r\n\r\nexport interface Grid extends Identified, Named, Described {\r\n elements: {\r\n [id: string]: TElementType;\r\n };\r\n}\r\n\r\nexport enum WidgetTypes {\r\n legacyChart = 'legacyChart',\r\n\r\n columnChart = 'columnChart',\r\n lineChart = 'lineChart',\r\n table = 'table',\r\n trends = 'trends',\r\n singleStatistic = 'singleStatistic',\r\n pieChart = 'pieChart',\r\n recommendations = 'recommendations',\r\n\r\n note = 'note',\r\n\r\n embed = 'embed'\r\n}\r\n\r\nexport enum ChartTypes {\r\n usageChart = 'usageChart',\r\n emissionsChart = 'emissionsChart',\r\n}\r\n\r\nexport interface INoteWidgetData {\r\n title: string;\r\n subtitle: string;\r\n bodyText: string;\r\n color: string;\r\n}\r\n\r\nexport interface IEmbedWidgetData {\r\n urlTitle: string;\r\n url: string;\r\n}\r\n\r\nexport interface ITrendsWidgetData {\r\n toDate: string | null;\r\n dateRangeKey: string;\r\n segregateBy: PluralEntityType.products | PluralEntityType.services;\r\n renderType?: 'chart' | 'table';\r\n}\r\n\r\nexport interface IRecommendationsWidgetData {\r\n categories: string[] | null;\r\n classifications: string[] | null;\r\n providerTypes: string[] | null;\r\n namespaces: string[] | null;\r\n recommendationIds: string[] | null;\r\n}\r\n\r\nexport interface ISpendUsageWidgetData extends ISavedReportResultParams {\r\n includeAnnotations?:boolean;\r\n}\r\n\r\nexport type UsageReportWidget = Typed<\r\n| WidgetTypes.legacyChart\r\n| WidgetTypes.columnChart\r\n| WidgetTypes.lineChart\r\n| WidgetTypes.singleStatistic\r\n| WidgetTypes.table\r\n| WidgetTypes.pieChart\r\n> &\r\nGridWidget;\r\n\r\nexport type NoteWidget = Typed & GridWidget;\r\n\r\nexport type EmbedWidget = Typed & GridWidget;\r\n\r\nexport type TrendsWidget = Typed & GridWidget;\r\n\r\nexport type RecommendationWidget = Typed & GridWidget;\r\n\r\n// If you want a new type of configuration for a widget, add an | keyed by type.\r\nexport type CCWidget = UsageReportWidget | NoteWidget | EmbedWidget | TrendsWidget | RecommendationWidget;\r\n\r\nexport type CCGrid = Grid;\r\n\r\nexport const initGrid = (p: { name: string; description:string; prefix?: string }): CCGrid => {\r\n const { name, prefix, description } = p;\r\n return {\r\n id: prefix ? `${prefix}:${v4()}` : v4(),\r\n name: name,\r\n description: description,\r\n elements: {},\r\n };\r\n};\r\n\r\nexport const patchGridFn = (p: PartialPick, grid: CCGrid): CCGrid => {\r\n Object.keys(p).forEach((k) => {\r\n if (p[k] !== undefined) {\r\n grid[k] = p[k];\r\n }\r\n });\r\n\r\n return grid;\r\n};\r\n\r\nexport const addGridElement = (widget: CCWidget, grid: CCGrid): CCGrid => {\r\n const isExisting = grid.elements[widget.id];\r\n if (isExisting) throw new Error('Grid element already exists!');\r\n grid.elements[widget.id] = widget;\r\n return grid;\r\n};\r\n\r\nexport const patchGridElement = (\r\n id: string,\r\n p: PartialPick,\r\n grid: CCGrid\r\n): CCGrid => {\r\n const element = grid.elements[id];\r\n if (element) {\r\n Object.keys(p).forEach((k) => {\r\n if (p[k] !== undefined) {\r\n element[k] = p[k];\r\n }\r\n });\r\n }\r\n\r\n return grid;\r\n};\r\n\r\nexport const removeGridElement = (id: string, grid: CCGrid): CCGrid => {\r\n delete grid.elements[id];\r\n return grid;\r\n};\r\n\r\nexport const reshapeGridElements = (\r\n dimensions: (Partial & Identified)[],\r\n grid: CCGrid\r\n): CCGrid => {\r\n if (!dimensions?.length) return;\r\n dimensions.forEach((d) => {\r\n const element = grid.elements[d.id];\r\n if (element) {\r\n if (d.h !== undefined) {\r\n element.h = d.h;\r\n }\r\n if (d.w !== undefined) {\r\n element.w = d.w;\r\n }\r\n if (d.x !== undefined) {\r\n element.x = d.x;\r\n }\r\n if (d.y !== undefined) {\r\n element.y = d.y;\r\n }\r\n } else {\r\n console.error('not found');\r\n }\r\n });\r\n\r\n return grid;\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":\"Custom Dashboards\",\"icon\":\"dashboard\"}}),_c('v-container',[_c('content-card',{attrs:{\"title\":\"Custom Dashboards\",\"caption\":\"All configured custom dashboards for this tenant.\",\"title-icon\":\"dashboard\"},scopedSlots:_vm._u([{key:\"title-actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"secondary\",\"flat\":\"\",\"loading\":_vm.isSaveNetworkLoading,\"disabled\":_vm.isSaveNetworkLoading},on:{\"click\":function($event){_vm.isPuttingDashboard = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"create\")]),_vm._v(\" Create \")],1)]},proxy:true}])},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Name\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Description\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Actions\")])])]),_c('tbody',[(!_vm.dashboards || !_vm.dashboards.length)?_c('tr',[_c('td',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"There are no dashboards currently\")])]):_vm._e(),_vm._l((_vm.dashboards),function(item){return _c('tr',{key:item.name},[_c('td',[_c('router-link',{attrs:{\"to\":`/dashboarding/${item.id}`}},[_vm._v(_vm._s(item.name))])],1),_c('td',[_vm._v(_vm._s(item.description))]),_c('td',[_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"more_vert\")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.startEditDashboard(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit\")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.startDeleteDashboard(item)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)],1)],1)],1)])})],2)])],1)],1),_c('form-dialog',{model:{value:(_vm.isPuttingDashboard),callback:function ($$v) {_vm.isPuttingDashboard=$$v},expression:\"isPuttingDashboard\"}},[_c('form-card',{attrs:{\"title\":\"Create Dashboard\",\"subtitle\":\"Creates a new custom dashboard\",\"loading\":_vm.isSaveNetworkLoading},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{on:{\"click\":function($event){_vm.isPuttingDashboard = false}}},[_vm._v(\"Back\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"loading\":_vm.isSaveNetworkLoading,\"disabled\":!_vm.isCreateFormValid || _vm.isSaveNetworkLoading},on:{\"click\":function($event){return _vm.handlePutDashboard()}}},[_vm._v(\"Submit\")])]},proxy:true}]),model:{value:(_vm.isCreateFormValid),callback:function ($$v) {_vm.isCreateFormValid=$$v},expression:\"isCreateFormValid\"}},[_c('v-text-field',{attrs:{\"label\":\"Dashboard Name\"},model:{value:(_vm.newDashboardName),callback:function ($$v) {_vm.newDashboardName=$$v},expression:\"newDashboardName\"}}),_c('v-textarea',{attrs:{\"label\":\"Dashboard Description\"},model:{value:(_vm.newDashboardDesc),callback:function ($$v) {_vm.newDashboardDesc=$$v},expression:\"newDashboardDesc\"}})],1)],1),_c('delete-entity-dialog',{attrs:{\"entityType\":\"dashboard\",\"entityToDelete\":_vm.focusedDashboard,\"resourceApi\":\"/api/dashboards\"},on:{\"http2xx\":function($event){return _vm.handleDeleted()}},model:{value:(_vm.isDeletingDashboard),callback:function ($$v) {_vm.isDeletingDashboard=$$v},expression:\"isDeletingDashboard\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from 'pinia';\r\nimport { ref } from 'vue';\r\nimport KeyedBlobsDb from '../databases/KeyedBlobsDb';\r\nimport { v4 } from 'uuid';\r\nimport * as G from '../merge/Grid';\r\nimport { ISavedReportResultParams } from '@/models';\r\n\r\nexport const useGridStore = defineStore('grid', () => {\r\n const currentDocKey = ref(null);\r\n\r\n const gridDoc = ref(null);\r\n const cachedPositionalUpdates = ref<{ [elementId: string]: G.Position }>({});\r\n const cachedSizingUpdates = ref<{ [elementId: string]: G.Rectangle }>({});\r\n\r\n const load = async (key?: string) => {\r\n if (key) currentDocKey.value = key;\r\n await initAndCommitCurrent();\r\n };\r\n\r\n const putGrid = async (key: string, doc: G.CCGrid) => {\r\n gridDoc.value = await KeyedBlobsDb.changeDoc(key, {\r\n initFn: () => doc,\r\n changeFn: () => {\r\n /* Do nothing */\r\n },\r\n });\r\n };\r\n\r\n const initAndCommitGrid = async (id: string, p?: { fn?: (grid) => G.CCGrid; name?: string, description?: string }) => {\r\n const { fn, name, description } = p || {};\r\n return await KeyedBlobsDb.changeDoc(id, {\r\n initFn: () => G.initGrid({ name: name || 'Unnamed Grid', description: description || 'A grid of usage components' }),\r\n changeFn: fn,\r\n });\r\n };\r\n\r\n const initAndCommitCurrent = async (p?: { fn?: (grid) => G.CCGrid; name?: string, description?:string }) => {\r\n gridDoc.value = await initAndCommitGrid(currentDocKey.value, p);\r\n return gridDoc.value;\r\n };\r\n\r\n const addFeedElement = async (\r\n name: string,\r\n type: G.WidgetTypes,\r\n config: ISavedReportResultParams | G.INoteWidgetData | G.IEmbedWidgetData | G.ITrendsWidgetData | G.IRecommendationsWidgetData,\r\n pos: G.Position & G.Rectangle\r\n ) => {\r\n const id = v4();\r\n const { h, w, x, y } = pos;\r\n const element = (grid) => {\r\n if (type === G.WidgetTypes.note) {\r\n if ('title' in config) {\r\n return G.addGridElement({ id, h, w, x, y, type, config, name }, grid)\r\n } else {\r\n throw new Error('Unsupported configuration for note widget');\r\n }\r\n } else if (type === G.WidgetTypes.embed) {\r\n if ('url' in config) {\r\n return G.addGridElement({ id, h, w, x, y, type, config, name }, grid)\r\n } else {\r\n throw new Error('Unsupported configuration for embed widget');\r\n }\r\n } else if (type === G.WidgetTypes.trends) {\r\n const trendConfig = config as G.ITrendsWidgetData;\r\n return G.addGridElement({ id, h, w, x, y, type, config: trendConfig, name }, grid)\r\n } else if (type === G.WidgetTypes.recommendations) {\r\n const recommendationConfig = config as G.IRecommendationsWidgetData;\r\n return G.addGridElement({ id, h, w, x, y, type, config: recommendationConfig, name }, grid)\r\n } else {\r\n const savedReportsParams = config as ISavedReportResultParams;\r\n if ('title' in config) {\r\n throw new Error('Note widget configuration supplied to standard widget');\r\n } else if ('urlTitle' in config) {\r\n throw new Error('Embed widget configuration supplied to standard widget');\r\n } \r\n else {\r\n return G.addGridElement({ id, h, w, x, y, type, config: savedReportsParams, name }, grid) \r\n }\r\n }\r\n };\r\n await initAndCommitCurrent({ fn: element });\r\n };\r\n\r\n const updateGridName = async (id: string, name: string) => {\r\n return await initAndCommitGrid(id, { fn: (grid) => G.patchGridFn({ name }, grid), name });\r\n };\r\n\r\n const updateFeedElement = async (\r\n id: string,\r\n name: string,\r\n type: G.WidgetTypes,\r\n config: ISavedReportResultParams | G.INoteWidgetData | G.IEmbedWidgetData | G.IRecommendationsWidgetData\r\n ) => {\r\n const fn = (grid) => {\r\n if (type === G.WidgetTypes.note) {\r\n if ('title' in config) {\r\n return G.patchGridElement(\r\n id,\r\n {\r\n name,\r\n type,\r\n config,\r\n },\r\n grid\r\n );\r\n } else {\r\n throw new Error('Unsupported configuration for note widget');\r\n }\r\n } else if (type === G.WidgetTypes.embed) {\r\n if ('urlTitle' in config) {\r\n return G.patchGridElement(\r\n id,\r\n {\r\n name,\r\n type,\r\n config,\r\n },\r\n grid\r\n );\r\n } else {\r\n throw new Error('Unsupported configuration for embed widget');\r\n }\r\n } else if (type === G.WidgetTypes.trends) {\r\n const trendConfig = config as G.ITrendsWidgetData;\r\n return G.patchGridElement(\r\n id,\r\n {\r\n name,\r\n type,\r\n config: trendConfig,\r\n },\r\n grid\r\n );\r\n } else if (type === G.WidgetTypes.recommendations) {\r\n const recommendationConfig = config as G.IRecommendationsWidgetData;\r\n return G.patchGridElement(\r\n id,\r\n {\r\n name,\r\n type,\r\n config: recommendationConfig,\r\n },\r\n grid\r\n );\r\n } else {\r\n if ('title' in config) {\r\n throw new Error('Note widget configuration supplied to standard widget');\r\n } else if ('urlTitle' in config) {\r\n throw new Error('Embed widget configuration supplied to standard widget');\r\n } \r\n else {\r\n const reportConfig = config as ISavedReportResultParams;\r\n return G.patchGridElement(\r\n id,\r\n {\r\n name,\r\n type,\r\n config: reportConfig,\r\n },\r\n grid\r\n );\r\n }\r\n }\r\n }\r\n return await initAndCommitCurrent({ fn, name });\r\n };\r\n\r\n const removeGridElement = async (nodeId: string) => {\r\n const fn = (grid) => G.removeGridElement(nodeId, grid);\r\n return await initAndCommitCurrent({ fn });\r\n };\r\n\r\n const commitCachedValues = async () => {\r\n const positional: { [id: string]: Partial & G.Identified } = {};\r\n Object.entries(cachedPositionalUpdates.value).forEach(([id, v]) => {\r\n positional[id] = { id, x: v.x, y: v.y };\r\n });\r\n Object.entries(cachedSizingUpdates.value).forEach(([id, s]) => {\r\n const val = positional[id] || { id };\r\n val.w = s.w;\r\n val.h = s.h;\r\n positional[id] = val;\r\n });\r\n const fn = (grid) => G.reshapeGridElements(Object.values(positional), grid);\r\n const result = await initAndCommitCurrent({ fn });\r\n cachedPositionalUpdates.value = {};\r\n cachedSizingUpdates.value = {};\r\n return result;\r\n };\r\n\r\n return {\r\n currentDocKey,\r\n gridDoc,\r\n cachedPositionalUpdates,\r\n cachedSizingUpdates,\r\n commitCachedValues,\r\n load,\r\n addFeedElement,\r\n updateFeedElement,\r\n removeGridElement,\r\n initAndCommitCurrent,\r\n initAndCommitGrid,\r\n putGrid,\r\n updateGridName,\r\n };\r\n});\r\n","\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { ICustomDashboardModel } from '@/models';\r\nimport { listCustomDashboards, createCustomDashboard, putCustomDashboard } from '@/lib/Api';\r\nimport { useGridStore } from '@/stores/grid';\r\nimport * as G from '@/merge/Grid';\r\n\r\nexport default defineComponent({\r\n setup() {\r\n const gridStore = useGridStore();\r\n const dashboards = ref([]);\r\n const isPuttingDashboard = ref(false);\r\n const isCreateFormValid = ref(true);\r\n const isSaveNetworkLoading = ref(false);\r\n const newDashboardName = ref('');\r\n const newDashboardDesc = ref('');\r\n const focusedDashboard = ref(null);\r\n\r\n const loadViewState = async () => {\r\n dashboards.value = await listCustomDashboards();\r\n };\r\n loadViewState();\r\n\r\n const handlePutDashboard = async () => {\r\n //\r\n try {\r\n isSaveNetworkLoading.value = true;\r\n const name = newDashboardName.value;\r\n const description = newDashboardDesc.value;\r\n if (focusedDashboard.value) {\r\n const grid = await gridStore.updateGridName(focusedDashboard.value.id, name);\r\n await putCustomDashboard(\r\n focusedDashboard.value.id,\r\n { name, description },\r\n grid\r\n );\r\n focusedDashboard.value.name = name;\r\n focusedDashboard.value.description = description;\r\n } else {\r\n const doc = G.initGrid({ name, description });\r\n const result = await createCustomDashboard(\r\n {\r\n description: newDashboardDesc.value,\r\n name: newDashboardName.value,\r\n },\r\n doc\r\n );\r\n await gridStore.putGrid(result.id, doc);\r\n dashboards.value = [...dashboards.value, result];\r\n }\r\n focusedDashboard.value = null;\r\n isPuttingDashboard.value = false;\r\n } finally {\r\n isSaveNetworkLoading.value = false;\r\n }\r\n };\r\n\r\n const startEditDashboard = (dash: ICustomDashboardModel) => {\r\n isPuttingDashboard.value = true;\r\n focusedDashboard.value = dash;\r\n };\r\n\r\n watch(focusedDashboard, (d) => {\r\n newDashboardName.value = d?.name || null;\r\n newDashboardDesc.value = d?.description || null;\r\n });\r\n\r\n const isDeletingDashboard = ref(false);\r\n const startDeleteDashboard = (dash: ICustomDashboardModel) => {\r\n isDeletingDashboard.value = true;\r\n focusedDashboard.value = dash;\r\n };\r\n\r\n const handleDeleted = () => {\r\n focusedDashboard.value = null;\r\n loadViewState();\r\n };\r\n\r\n return {\r\n dashboards,\r\n isSaveNetworkLoading,\r\n isCreateFormValid,\r\n isPuttingDashboard,\r\n focusedDashboard,\r\n newDashboardDesc,\r\n newDashboardName,\r\n handlePutDashboard,\r\n startEditDashboard,\r\n isDeletingDashboard,\r\n startDeleteDashboard,\r\n loadViewState,\r\n handleDeleted,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=699e2263&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('fragment',[_c('page-header',{attrs:{\"title\":_vm.pageTitle,\"icon\":\"dashboard\",\"back-to\":\"/dashboarding\",\"extended\":\"\",\"extension-height\":10}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"fab\":\"\",\"absolute\":\"\",\"depressed\":\"\",\"bottom\":\"\",\"large\":\"\",\"right\":\"\"},on:{\"click\":function($event){return _vm.startCreate()}}},[_c('v-icon',[_vm._v(\"addchart\")])],1)],1),_c('Grid',{staticClass:\"mt-7\",attrs:{\"gridId\":_vm.$route.params.id},on:{\"onEdit\":_vm.onEditReportWidget,\"onDelete\":_vm.onDeleteWidget}}),_c('WidgetGridFormDialog',{attrs:{\"config\":_vm.focusedWidget},scopedSlots:_vm._u([{key:\"actions\",fn:function({ config, widgetName, widgetType }){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.handleSave(widgetName, widgetType, config)}}},[_vm._v(\" Submit \")])]}}]),model:{value:(_vm.isPutting),callback:function ($$v) {_vm.isPutting=$$v},expression:\"isPutting\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('grid-layout',{attrs:{\"layout\":_vm.layout,\"col-num\":2,\"row-height\":30,\"is-draggable\":true,\"is-resizable\":true,\"is-mirrored\":false,\"responsive\":false,\"vertical-compact\":true,\"margin\":[10, 10],\"use-css-transforms\":true},on:{\"update:layout\":function($event){_vm.layout=$event}}},_vm._l((_vm.layout),function(item){return _c('grid-item',{key:item.id,attrs:{\"x\":item.x,\"y\":item.y,\"w\":item.w,\"h\":item.h,\"i\":item.id},on:{\"moved\":_vm.handleMoved,\"move\":_vm.handleMoved,\"resize\":_vm.handleResized,\"resized\":_vm.handleResized}},[_c('GridWidget',{attrs:{\"config\":item.config,\"name\":item.name,\"type\":item.type},on:{\"onDelete\":function($event){return _vm.onDeleteWidget(item)},\"onEdit\":function($event){return _vm.onEditWidget(item)}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.onEditWidget(item)}}},[_c('v-icon',[_vm._v(\"edit\")])],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.onDeleteWidget(item)}}},[_c('v-icon',[_vm._v(\"delete\")])],1)]},proxy:true}],null,true)})],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.type === 'columnChart')?_c('ColumnChartGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'lineChart')?_c('LineChartGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'table')?_c('TableGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'pieChart')?_c('PieChartGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'note')?_c('TextualGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'embed')?_c('EmbedGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'trends')?_c('ComparisonChartGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):(_vm.type === 'recommendations')?_c('RecommendationsGridWidget',{attrs:{\"name\":_vm.name,\"config\":_vm.config,\"hide-actions\":_vm.hideActions},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)}):_c('div',[_vm._v(\"Unknown widget type \"+_vm._s(_vm.type))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"loading\":_vm.isLoadingUsage}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"savings\")]),_vm._v(\" \"+_vm._s(_vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),(_vm.segregations && _vm.segregations.length > 1)?_c('v-tabs',{model:{value:(_vm.focusedSegregation),callback:function ($$v) {_vm.focusedSegregation=$$v},expression:\"focusedSegregation\"}},_vm._l((_vm.segregations),function(t){return _c('v-tab',{key:t,attrs:{\"tab-value\":t}},[_vm._v(\" \"+_vm._s(t)+\" \")])}),1):_vm._e(),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\",\"width\":\"100%\"}},[(_vm.dataset === 'Usage')?[_c('SpendUsageBarChart',{attrs:{\"data\":_vm.newChartData,\"annotations\":_vm.annotations,\"granularity\":_vm.usageOptions.granularity,\"allowRangeSelection\":true,\"height\":\"100%\"},on:{\"onRangeSelection\":_vm.onRangeSelection,\"click\":_vm.handleDatasetClicked}})]:[_c('CarbonBarChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"annotations\":_vm.annotations,\"granularity\":_vm.usageOptions.granularity,\"height\":\"100%\"},on:{\"click\":_vm.handleDatasetClicked}})]],2),[_c('div',{staticClass:\"text-center pa-4\"},[_c('form-dialog',{attrs:{\"width\":500},scopedSlots:_vm._u([{key:\"activator\",fn:function(activatorBindings){return [_vm._t(\"activator\",null,null,activatorBindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('annotationDialog.dialogTitle'),\"subtitle\":_vm.annotationDialogSubtitle}},[_c('annotations-timeline',{attrs:{\"annotations\":_vm.selectedAnnotations,\"allowEdit\":false,\"showNavigate\":true,\"showProduct\":true}}),[_c('back-button',{on:{\"click\":function($event){return close()}}})]],2)]}}],null,true),model:{value:(_vm.annotationDialog),callback:function ($$v) {_vm.annotationDialog=$$v},expression:\"annotationDialog\"}})],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, watch, computed } from 'vue';\r\nimport {\r\n calculateOptionsDescription,\r\n convertSpendOptionsToQuery,\r\n} from '../../Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport SpendUsageBarChart, {\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n UsageReportTypes,\r\n convertAnnotatesToAnnotations,\r\n} from '../../Domain.Usage/SpendUsageBarChart.vue';\r\nimport CarbonBarChart, { convertUsageResponseToEmissionsDatasets } from '../../Domain.Carbon/CarbonBarChart.vue';\r\nimport hash from 'object-hash';\r\nimport { useFilterStore } from '@/stores';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { getSpend } from '@/lib/Api';\r\nimport { ChartDataset, Point } from 'chart.js';\r\nimport { generateSpendUsageOptionsFromReport, Granularity, PluralEntityType, SpendFieldNames } from '@/models';\r\nimport moment from '@/lib/moment';\r\nimport { Annotation } from '@/models/Annotation';\r\nimport AnnotationsTimeline from '../../Domain.Annotations/AnnotationsTimeline.vue';\r\nimport { ISpendUsageWidgetData } from '@/merge/Grid';\r\n\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n components: { SpendUsageBarChart, CarbonBarChart, AnnotationsTimeline },\r\n data() {\r\n return {\r\n selectedAnnotations: [],\r\n annotationDialog: false,\r\n };\r\n },\r\n setup(props, context) {\r\n const filterStore = useFilterStore();\r\n\r\n const usageOptions = ref({\r\n ...filterStore.options,\r\n });\r\n\r\n const focusedSegregation = ref(0);\r\n const segregations = ref([]);\r\n const dataset = ref('Usage');\r\n const costViews = ref(['Actual', 'Amortized', 'Utilized']);\r\n const includeAnnotations = ref(false);\r\n\r\n const handleDatasetClicked = () => {\r\n //emit('onEdit');\r\n };\r\n\r\n const newChartData = ref({\r\n labels: [] as string[],\r\n datasets: [] as ChartDataset<'bar' | 'line', Point[]>[],\r\n });\r\n const maxDate = ref(undefined);\r\n\r\n const lastHash = ref(null);\r\n const annotations = ref([]);\r\n const createdAnnotations = ref();\r\n const isLoadingUsage = ref(false);\r\n\r\n const loadUsage = async (\r\n toTrends: (searchParams: URLSearchParams) => void,\r\n onAnnotationSelection: (annotations: Annotation[], xMin: number, xMax: number) => void\r\n ) => {\r\n if (isLoadingUsage.value) return;\r\n const optionsHash = hash([usageOptions.value, dataset.value, costViews.value, includeAnnotations.value]);\r\n if (lastHash.value === optionsHash) return;\r\n lastHash.value = optionsHash;\r\n\r\n try {\r\n isLoadingUsage.value = true;\r\n const params = convertSpendOptionsToQuery(usageOptions.value);\r\n if (!params) return;\r\n const spendParams = { ...params, segregateBy: usageOptions.value.segregateBy };\r\n\r\n const fields =\r\n dataset.value === 'Usage' ? [SpendFieldNames.Charges] : [SpendFieldNames.CO2e, SpendFieldNames.kWh];\r\n\r\n const results = await Promise.all(\r\n costViews.value.map((cv) => getSpend({ ...spendParams, costView: cv, fields }))\r\n );\r\n\r\n let chartLabels = [];\r\n let chartDatasets = [];\r\n\r\n maxDate.value = params.toDate;\r\n\r\n if (dataset.value === 'Usage') {\r\n const datasets = results.map((r, i) => {\r\n const costView = costViews.value[i];\r\n const labelSuffix = costView === 'Actual' ? 'Actual' : 'Utilized';\r\n const stackGroup = costView.toLowerCase();\r\n return convertUsageResponseToDatasets(r, {\r\n labelSuffix,\r\n stackGroup,\r\n reportType: UsageReportTypes.charges,\r\n });\r\n });\r\n chartLabels = datasets.map((d) => d.labels).reduce((a, b) => [...a, ...b], []);\r\n chartDatasets = datasets.map((d) => d.datasets).reduce((a, b) => [...a, ...b], []);\r\n } else {\r\n const datasets = results.map((r, i) => {\r\n const costView = costViews.value[i];\r\n const labelSuffix = costView === 'Actual' ? 'Actual' : 'Utilized';\r\n const stackGroup = costView.toLowerCase();\r\n return convertUsageResponseToEmissionsDatasets(r, {\r\n labelSuffix,\r\n stackGroup,\r\n });\r\n });\r\n chartLabels = datasets.map((d) => d[0].labels).reduce((a, b) => [...a, ...b], []);\r\n chartDatasets = datasets.map((d) => d[0].datasets).reduce((a, b) => [...a, ...b], []);\r\n }\r\n\r\n newChartData.value = {\r\n labels: chartLabels,\r\n datasets: chartDatasets,\r\n } as any;\r\n\r\n if (includeAnnotations.value) {\r\n createdAnnotations.value = await ApiV2.http\r\n .get(`/api/annotations`, {\r\n params: {\r\n fromDate: params.fromDate,\r\n toDate: params.toDate,\r\n cloudAccountIds: params.cloudAccountIds,\r\n subscriptionIds: params.subscriptionIds,\r\n serviceIds: params.serviceIds,\r\n tagKeyValue: params.tagKeyValue,\r\n },\r\n })\r\n .then((r) => r.data);\r\n\r\n const anno = convertAnnotatesToAnnotations(\r\n createdAnnotations.value,\r\n chartDatasets,\r\n usageOptions.value.granularity as Granularity,\r\n (xMin, xMax) => {\r\n onAnnotationSelection(createdAnnotations.value, xMin, xMax);\r\n }\r\n );\r\n\r\n const spikeEventsResponse = await ApiV2.http\r\n .get(`/api/events?eventType=SpikeEventAlert`, { params })\r\n .catch((err) => {\r\n if (err.response.status === 400) return { data: {} };\r\n throw err;\r\n })\r\n .then((r) => r.data);\r\n\r\n const spikes = convertEventsToAnnotations(spikeEventsResponse, (xMin, xMax) => {\r\n const toDate = new Date(xMax);\r\n const numDaysBetween = Math.ceil((xMax - xMin) / (1000 * 3600 * 24));\r\n const period = `${numDaysBetween}d`;\r\n const segregateBy = usageOptions.value.segregateBy === 'services' ? 'services' : 'products';\r\n const searchParams = new URLSearchParams({\r\n toDate: toDate.toISOString(),\r\n period,\r\n segregateBy,\r\n });\r\n toTrends(searchParams);\r\n });\r\n\r\n annotations.value = [...anno, ...spikes];\r\n } else {\r\n createdAnnotations.value = [];\r\n annotations.value = [];\r\n }\r\n } finally {\r\n isLoadingUsage.value = false;\r\n }\r\n };\r\n\r\n watch(\r\n () => props.config,\r\n (opt) => {\r\n if (!opt) return;\r\n const report = opt as ISpendUsageWidgetData;\r\n segregations.value = (report.segregateBy || '').split(',').filter((a) => a);\r\n const params = generateSpendUsageOptionsFromReport(report);\r\n const segregateBy = segregations.value[focusedSegregation.value] as PluralEntityType;\r\n usageOptions.value = { ...params, segregateBy };\r\n dataset.value = report.dataset || 'Usage';\r\n costViews.value = report.costViews || ['Actual'];\r\n includeAnnotations.value = report.includeAnnotations || false;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n watch(\r\n () => focusedSegregation.value,\r\n (v) => {\r\n const segregateBy = segregations.value[v] as PluralEntityType;\r\n if (usageOptions.value.segregateBy !== segregateBy) {\r\n usageOptions.value = { ...usageOptions.value, segregateBy };\r\n }\r\n },\r\n { immediate: false }\r\n );\r\n const loadTriggers = computed(() => {\r\n return [usageOptions.value, dataset.value, costViews.value];\r\n });\r\n\r\n return {\r\n usageOptions,\r\n handleDatasetClicked,\r\n annotations,\r\n newChartData,\r\n loadUsage,\r\n isLoadingUsage,\r\n focusedSegregation,\r\n segregations,\r\n lastHash,\r\n loadTriggers,\r\n dataset,\r\n createdAnnotations,\r\n maxDate,\r\n };\r\n },\r\n methods: {\r\n toTrends(searchParams: URLSearchParams) {\r\n this.$router.push(`/trends?${searchParams.toString()}`);\r\n },\r\n onRangeSelection(event: { xMax: number; xMin: number }) {\r\n const toDate = new Date(event.xMax);\r\n toDate.setHours(0, 0, 0, 0);\r\n\r\n const numDaysBetween = Math.ceil((event.xMax - event.xMin) / (1000 * 3600 * 24));\r\n const period = `${numDaysBetween}d`;\r\n const segregateBy = this.usageOptions.value.segregateBy === 'services' ? 'services' : 'products';\r\n const searchParams = new URLSearchParams({\r\n toDate: toDate.toISOString(),\r\n period,\r\n segregateBy,\r\n });\r\n this.toTrends(searchParams);\r\n },\r\n onAnnotationSelection(annotations: Annotation[], xMin: number, xMax: number) {\r\n const toDate = new Date(xMax).getTime();\r\n const fromDate = new Date(xMin).getTime();\r\n this.selectedAnnotations = annotations.filter((x) => {\r\n const date = new Date(x.annotationDate).getTime();\r\n return date >= fromDate && date <= toDate;\r\n });\r\n this.annotationDialog = true;\r\n },\r\n },\r\n watch: {\r\n loadTriggers: {\r\n handler() {\r\n this.loadUsage(this.toTrends, this.onAnnotationSelection);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n chartTitle() {\r\n return this.name || calculateOptionsDescription(this.usageOptions, (...params) => this.$t(...params));\r\n },\r\n annotationDialogSubtitle() {\r\n if (this.selectedAnnotations && this.selectedAnnotations.length > 0) {\r\n const dates = this.selectedAnnotations\r\n .map((x) => {\r\n const date = new Date(x.annotationDate);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n })\r\n .sort((a, b) => a.getTime() - b.getTime());\r\n\r\n const start = moment(dates[0]);\r\n const end = moment(dates[dates.length - 1]);\r\n if (start.isSame(end)) {\r\n return start.format('MMMM DD');\r\n }\r\n return `${start.format('MMMM DD')} - ${end.format('MMMM DD')}`;\r\n }\r\n return undefined;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColumnChartGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColumnChartGridWidget.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColumnChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColumnChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./ColumnChartGridWidget.vue?vue&type=template&id=2055e840&scoped=true&\"\nimport script from \"./ColumnChartGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./ColumnChartGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ColumnChartGridWidget.vue?vue&type=style&index=0&id=2055e840&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2055e840\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ColumnChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\"}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"savings\")]),_vm._v(\" \"+_vm._s(_vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),(_vm.segregations && _vm.segregations.length > 1)?_c('v-tabs',{model:{value:(_vm.focusedSegregation),callback:function ($$v) {_vm.focusedSegregation=$$v},expression:\"focusedSegregation\"}},_vm._l((_vm.segregations),function(t){return _c('v-tab',{key:t,attrs:{\"tab-value\":t}},[_vm._v(\" \"+_vm._s(t)+\" \")])}),1):_vm._e(),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\"}},[(_vm.dataset === 'Usage')?[_c('SpendUsageLineChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"annotations\":_vm.annotations,\"granularity\":_vm.usageOptions.granularity,\"height\":\"100%\"},on:{\"click\":_vm.handleDatasetClicked}})]:[_c('CarbonLineChart',{attrs:{\"max-date\":_vm.maxDate,\"data\":_vm.newChartData,\"annotations\":_vm.annotations,\"granularity\":_vm.usageOptions.granularity,\"height\":\"100%\"},on:{\"click\":_vm.handleDatasetClicked}})]],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, onMounted, watch } from 'vue';\r\nimport { useTenantStore, storeToRefs } from '@/stores';\r\nimport createUsageBarChart, {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n IClickEvent,\r\n UsageReportTypes,\r\n IUsageDatapoint,\r\n} from '@/chartjs/createUsageBarChart';\r\nimport { Granularity } from '@/models';\r\nexport {\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n IClickEvent,\r\n IUsageDatapoint,\r\n UsageReportTypes,\r\n};\r\n\r\nexport default defineComponent({\r\n props: {\r\n granularity: String,\r\n data: Object,\r\n annotations: Array,\r\n height: String,\r\n maxDate: String\r\n },\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n \r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.classList.add('chart-canvas');\r\n if (p.height === '100%') {\r\n canvas.value.classList.add('fill-height-srsly');\r\n root.value.classList.add('fill-height');\r\n canvasContainer.value.classList.add('fill-height-srsly');\r\n } else {\r\n canvas.value.style.height = p.height || '400px';\r\n }\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = p.height || '400px';\r\n \r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n\r\n const chart = createUsageBarChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n granularity: p.granularity as Granularity.daily | Granularity.monthly,\r\n onClick(event) {\r\n emit('click', event);\r\n },\r\n allowRangeSelection: false,\r\n type: 'line',\r\n maxDate: p.maxDate\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.options.plugins.annotation.annotations = p.annotations || [];\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n watch(\r\n () => p.annotations,\r\n () => renderChart(),\r\n { immediate: false, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n '$vuetify.theme.dark': {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageLineChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsageLineChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpendUsageLineChart.vue?vue&type=template&id=120a7396&\"\nimport script from \"./SpendUsageLineChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsageLineChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, onMounted, watch } from 'vue';\r\nimport createEmissionBarChart, {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToEmissionsDatasets,\r\n IClickEvent,\r\n ReverseLookup,\r\n} from '@/chartjs/createEmissionBarChart';\r\nimport { Granularity } from '@/models';\r\nexport {\r\n convertCO2eResponseToDatasets,\r\n convertProjectionsResponseToDataset,\r\n convertUsageResponseToEmissionsDatasets,\r\n IClickEvent,\r\n ReverseLookup,\r\n};\r\n\r\nexport default defineComponent({\r\n props: {\r\n granularity: String,\r\n data: Object,\r\n height: String,\r\n maxDate: String,\r\n hideKwh: Boolean\r\n },\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const legend = ref(null);\r\n const canvasContainer = ref(null);\r\n\r\n const renderChart = () => {\r\n if (!p.data) return;\r\n if (!root.value) return;\r\n root.value.innerHTML = \"\";\r\n root.value.classList.add('chart-container');\r\n\r\n canvasContainer.value = document.createElement('div');\r\n canvasContainer.value.classList.add('chart-canvas-container');\r\n \r\n canvas.value = document.createElement(\"canvas\");\r\n canvas.value.classList.add('chart-canvas');\r\n if (p.height === '100%') {\r\n canvas.value.classList.add('fill-height-srsly');\r\n root.value.classList.add('fill-height');\r\n canvasContainer.value.classList.add('fill-height-srsly');\r\n } else {\r\n canvas.value.style.height = p.height || '400px';\r\n }\r\n\r\n legend.value = document.createElement('div');\r\n legend.value.id = Math.floor(Math.random() * 1000000).toString();\r\n legend.value.innerHTML =\"\";\r\n legend.value.classList.add('chart-legend');\r\n legend.value.style.maxHeight = p.height || '400px';\r\n\r\n \r\n canvasContainer.value.appendChild(canvas.value);\r\n root.value.appendChild(canvasContainer.value);\r\n root.value.appendChild(legend.value);\r\n const chart = createEmissionBarChart(canvas.value, {\r\n granularity: p.granularity as Granularity.daily | Granularity.monthly,\r\n onClick(event) {\r\n emit('click', event);\r\n },\r\n type: 'line',\r\n maxDate: p.maxDate,\r\n hideKwh: p.hideKwh || false\r\n },\r\n legend.value.id);\r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n onMounted(() => {\r\n renderChart();\r\n });\r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n return { root, canvas, renderChart };\r\n },\r\n watch: {\r\n '$vuetify.theme.dark': {\r\n handler() {\r\n this.renderChart();\r\n },\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonLineChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CarbonLineChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CarbonLineChart.vue?vue&type=template&id=4cd73a4c&\"\nimport script from \"./CarbonLineChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarbonLineChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent, ref, watch, computed } from 'vue';\r\nimport {\r\n calculateOptionsDescription,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport SpendUsageLineChart, {\r\n convertUsageResponseToDatasets,\r\n convertEventsToAnnotations,\r\n UsageReportTypes,\r\n} from '@/components/Domain.Usage/SpendUsageLineChart.vue';\r\nimport CarbonLineChart, {\r\n convertUsageResponseToEmissionsDatasets,\r\n} from '@/components/Domain.Carbon/CarbonLineChart.vue';\r\nimport { useFilterStore } from '@/stores';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { getSpend } from '@/lib/Api';\r\nimport { ChartDataset, Point } from 'chart.js';\r\nimport { ISpendUsageWidgetData } from '@/merge/Grid';\r\nimport { generateSpendUsageOptionsFromReport, PluralEntityType, SpendFieldNames } from '@/models';\r\nimport hash from 'object-hash';\r\n\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n components: { SpendUsageLineChart, CarbonLineChart },\r\n setup(props) {\r\n const filterStore = useFilterStore();\r\n\r\n const usageOptions = ref({\r\n ...filterStore.options,\r\n });\r\n\r\n const focusedSegregation = ref(0);\r\n const segregations = ref([]);\r\n const dataset = ref('Usage');\r\n const costViews = ref(['Actual', 'Amortized', 'Utilized']);\r\n const includeAnnotations = ref(false);\r\n\r\n watch(\r\n () => props.config,\r\n (opt) => {\r\n if (!opt) return;\r\n const report = opt as ISpendUsageWidgetData;\r\n segregations.value = (report.segregateBy || '').split(',');\r\n const params = generateSpendUsageOptionsFromReport(report);\r\n const segregateBy = segregations.value[focusedSegregation.value] as PluralEntityType;\r\n usageOptions.value = { ...params, segregateBy };\r\n dataset.value = report.dataset || 'Usage';\r\n costViews.value = report.costViews || ['Actual'];\r\n includeAnnotations.value = report.includeAnnotations || false;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n watch(\r\n () => focusedSegregation.value,\r\n (v) => {\r\n const segregateBy = segregations.value[v] as PluralEntityType;\r\n if (usageOptions.value.segregateBy !== segregateBy) {\r\n usageOptions.value = { ...usageOptions.value, segregateBy };\r\n }\r\n },\r\n { immediate: false }\r\n );\r\n\r\n const handleDatasetClicked = () => {\r\n //emit('onEdit');\r\n };\r\n\r\n const newChartData = ref({\r\n labels: [] as string[],\r\n datasets: [] as ChartDataset<'bar' | 'line', Point[]>[],\r\n });\r\n const maxDate = ref(null);\r\n\r\n const lastHash = ref(null);\r\n const annotations = ref([]);\r\n const isLoadingUsage = ref(false);\r\n const loadUsage = async (toTrends: (searchParams: URLSearchParams) => void) => {\r\n if (isLoadingUsage.value) return;\r\n const optionsHash = hash([usageOptions.value, dataset.value, costViews.value, includeAnnotations.value]);\r\n if (lastHash.value === optionsHash) return;\r\n lastHash.value = optionsHash;\r\n\r\n try {\r\n isLoadingUsage.value = true;\r\n const params = convertSpendOptionsToQuery(usageOptions.value);\r\n if (!params) return;\r\n\r\n maxDate.value = params.toDate;\r\n const fields =\r\n dataset.value === 'Usage' ? [SpendFieldNames.Charges] : [SpendFieldNames.CO2e, SpendFieldNames.kWh];\r\n\r\n const results = await Promise.all(\r\n costViews.value.map((cv) =>\r\n getSpend({ ...params, costView: cv, segregateBy: usageOptions.value.segregateBy, fields })\r\n )\r\n );\r\n\r\n if (dataset.value === 'Usage') {\r\n const datasets = results.map((r, i) => {\r\n const costView = costViews.value[i];\r\n const labelSuffix = costView === 'Actual' ? 'Actual Spend' : 'Utilized Spend';\r\n const stackGroup = costView.toLowerCase();\r\n return convertUsageResponseToDatasets(r, {\r\n labelSuffix,\r\n stackGroup,\r\n reportType: UsageReportTypes.charges,\r\n });\r\n });\r\n newChartData.value = {\r\n labels: datasets.map((d) => d.labels).reduce((a, b) => [...a, ...b], []),\r\n datasets: datasets.map((d) => d.datasets).reduce((a, b) => [...a, ...b], []),\r\n } as any;\r\n } else {\r\n const datasets = results.map((r, i) => {\r\n const costView = costViews.value[i];\r\n const labelSuffix = costView === 'Actual' ? 'Actual Spend' : 'Utilized Spend';\r\n const stackGroup = costView.toLowerCase();\r\n return convertUsageResponseToEmissionsDatasets(r, { labelSuffix, stackGroup });\r\n });\r\n newChartData.value = {\r\n labels: datasets.map((d) => d[0].labels).reduce((a, b) => [...a, ...b], []),\r\n datasets: datasets.map((d) => d[0].datasets).reduce((a, b) => [...a, ...b], []),\r\n } as any;\r\n }\r\n\r\n if (includeAnnotations.value) {\r\n const spikeEventsResponse = await ApiV2.http\r\n .get(`/api/events?eventType=SpikeEventAlert`, { params })\r\n .catch((err) => {\r\n if (err.response.status === 400) return { data: {} };\r\n throw err;\r\n })\r\n .then((r) => r.data);\r\n\r\n annotations.value = convertEventsToAnnotations(spikeEventsResponse, (xMin, xMax) => {\r\n const toDate = new Date(xMax);\r\n const numDaysBetween = Math.ceil((xMax - xMin) / (1000 * 3600 * 24));\r\n const period = `${numDaysBetween}d`;\r\n const segregateBy = usageOptions.value.segregateBy === 'services' ? 'services' : 'products';\r\n const searchParams = new URLSearchParams({\r\n toDate: toDate.toISOString(),\r\n period,\r\n segregateBy,\r\n });\r\n toTrends(searchParams);\r\n });\r\n } else {\r\n annotations.value = [];\r\n }\r\n } finally {\r\n isLoadingUsage.value = false;\r\n }\r\n };\r\n const loadTriggers = computed(() => {\r\n return [usageOptions.value, dataset.value, costViews.value];\r\n });\r\n\r\n return {\r\n usageOptions,\r\n handleDatasetClicked,\r\n annotations,\r\n newChartData,\r\n loadUsage,\r\n isLoadingUsage,\r\n focusedSegregation,\r\n segregations,\r\n lastHash,\r\n dataset,\r\n loadTriggers,\r\n maxDate,\r\n };\r\n },\r\n methods: {\r\n toTrends(searchParams: URLSearchParams) {\r\n this.$router.push(`/trends?${searchParams.toString()}`);\r\n },\r\n },\r\n watch: {\r\n loadTriggers: {\r\n handler() {\r\n this.loadUsage(this.toTrends);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n chartTitle() {\r\n return this.name || calculateOptionsDescription(this.usageOptions, (...params) => this.$t(...params));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LineChartGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LineChartGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LineChartGridWidget.vue?vue&type=template&id=22ca530e&scoped=true&\"\nimport script from \"./LineChartGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./LineChartGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LineChartGridWidget.vue?vue&type=style&index=0&id=22ca530e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22ca530e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"loading\":_vm.isLoadingUsage}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"savings\")]),_vm._v(\" \"+_vm._s(_vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\"}},[(_vm.usageOptions && _vm.segregateBy === 'meters')?_c('SpendUsageUnitToggle',{model:{value:(_vm.unitOfDisplay),callback:function ($$v) {_vm.unitOfDisplay=$$v},expression:\"unitOfDisplay\"}}):_vm._e(),(_vm.dataset === 'Usage')?_c('SpendUsageTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.usageTableItems,\"segregate-by\":_vm.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay,\"domLayout\":null}}):_c('CarbonTable',{staticClass:\"mt-3\",attrs:{\"items\":_vm.emissionsTableItems,\"segregate-by\":_vm.segregateBy,\"currency-code\":_vm.currencyCode,\"unitOfDisplay\":_vm.unitOfDisplay,\"domLayout\":null}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, watch, computed } from 'vue';\r\nimport {\r\n calculateOptionsDescription,\r\n convertSpendOptionsToQuery,\r\n} from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\nimport SpendUsageTable from '@/components/Domain.Usage/SpendUsageTable.vue';\r\nimport CarbonTable, {\r\n convertToEmissionsItemRecords,\r\n ICarbonTableRecordsViewModel\r\n} from '@/components/Domain.Carbon/CarbonTable.vue';\r\nimport { useFilterStore, storeToRefs, useTenantStore } from '@/stores';\r\nimport { getSpend } from '@/lib/Api';\r\nimport {\r\n generateSpendUsageOptionsFromReport,\r\n ISavedReportResultParams,\r\n ISpendUsageTableRecordsViewModel,\r\n} from '@/models';\r\nimport { UnitOfDisplay } from '@/enums/UnitOfDisplay.enum';\r\nimport SpendUsageUnitToggle from '@/components/Domain.Usage/SpendUsageUnitToggle.vue';\r\nimport { SpendUsageTableFunctions } from '@/components/Domain.Usage/SpendUsageTableFunctions';\r\nimport hash from 'object-hash';\r\n\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n components: { SpendUsageTable, CarbonTable, SpendUsageUnitToggle },\r\n setup(props, { emit }) {\r\n const filterStore = useFilterStore();\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n\r\n const usageOptions = ref({\r\n ...filterStore.options,\r\n });\r\n\r\n const unitOfDisplay = ref(UnitOfDisplay.cost);\r\n const usageTableItems = ref(null);\r\n const emissionsTableItems = ref(null);\r\n const dataset = ref('Usage');\r\n const costViews = ref(['Actual', 'Amortized', 'Utilized']);\r\n\r\n watch(\r\n () => props.config,\r\n (opt) => {\r\n if (!opt) return;\r\n const params = generateSpendUsageOptionsFromReport(opt as ISavedReportResultParams);\r\n usageOptions.value = params;\r\n dataset.value = opt.dataset || 'Usage';\r\n costViews.value = (opt.costViews || ['Actual']);\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n const handleDatasetClicked = () => {\r\n //emit('onEdit');\r\n };\r\n\r\n const segregateBy = computed(() => {\r\n if (!usageOptions.value) return '';\r\n if (Array.isArray(usageOptions.value.segregateBy))\r\n return usageOptions.value.segregateBy.join(',');\r\n return usageOptions.value.segregateBy || '';\r\n });\r\n\r\n const lastHash = ref(null);\r\n const isLoadingUsage = ref(false);\r\n const loadUsage = async () => {\r\n if (isLoadingUsage.value) return;\r\n const optionsHash = hash([ usageOptions.value, dataset.value, costViews.value ]);\r\n if (lastHash.value === optionsHash) return;\r\n lastHash.value = optionsHash;\r\n \r\n try {\r\n isLoadingUsage.value = true;\r\n const params = convertSpendOptionsToQuery(usageOptions.value);\r\n if (!params) return;\r\n\r\n const segregateBy = usageOptions.value.segregateBy;\r\n const results = await Promise.all(costViews.value.map(costView => getSpend({ ...params, costView, segregateBy })));\r\n\r\n if (dataset.value === 'Usage') {\r\n const records = results.map((r, i) => {\r\n const costView = costViews[i];\r\n return SpendUsageTableFunctions.convertToItemRecords(params, segregateBy, r, costView);\r\n });\r\n usageTableItems.value = records[0];\r\n usageTableItems.value.records = records.map((r) => r.records).reduce((a, b) => [...a, ...b], []);\r\n } else {\r\n const records = results.map(r => {\r\n return convertToEmissionsItemRecords(params, r);\r\n });\r\n emissionsTableItems.value = records[0];\r\n emissionsTableItems.value.records = records.map(r => r.records).reduce((a, b) => [...a, ...b], []);\r\n }\r\n\r\n } finally {\r\n isLoadingUsage.value = false;\r\n }\r\n };\r\n\r\n const loadTriggers = computed(() => {\r\n return [ usageOptions.value, dataset.value, costViews.value ];\r\n });\r\n\r\n return {\r\n usageOptions,\r\n handleDatasetClicked,\r\n loadUsage,\r\n isLoadingUsage,\r\n usageTableItems,\r\n emissionsTableItems,\r\n currencyCode,\r\n unitOfDisplay,\r\n dataset,\r\n loadTriggers,\r\n segregateBy\r\n };\r\n },\r\n methods: {\r\n toTrends(searchParams: URLSearchParams) {\r\n this.$router.push(`/trends?${searchParams.toString()}`);\r\n },\r\n },\r\n watch: {\r\n loadTriggers: {\r\n handler() {\r\n this.loadUsage(this.toTrends);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n chartTitle() {\r\n return this.name || calculateOptionsDescription(this.usageOptions, (...params) => this.$t(...params));\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableGridWidget.vue?vue&type=template&id=43e55e9f&scoped=true&\"\nimport script from \"./TableGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TableGridWidget.vue?vue&type=style&index=0&id=43e55e9f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43e55e9f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"loading\":_vm.isLoadingUsage}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"pie_chart\")]),_vm._v(\" \"+_vm._s(_vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),(_vm.segregations && _vm.segregations.length > 1)?_c('v-tabs',{model:{value:(_vm.focusedSegregation),callback:function ($$v) {_vm.focusedSegregation=$$v},expression:\"focusedSegregation\"}},_vm._l((_vm.segregations),function(t){return _c('v-tab',{key:t,attrs:{\"tab-value\":t}},[_vm._v(\" \"+_vm._s(t)+\" \")])}),1):_vm._e(),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\",\"width\":\"100%\"}},[_c('SpendUsagePieChart',{attrs:{\"data\":_vm.pieChartData,\"height\":\"100%\"},on:{\"click\":_vm.handleDatasetClicked}})],1),_c('div',{staticClass:\"text-center pa-4\"},[_c('form-dialog',{attrs:{\"width\":500},scopedSlots:_vm._u([{key:\"activator\",fn:function(activatorBindings){return [_vm._t(\"activator\",null,null,activatorBindings)]}},{key:\"default\",fn:function({ close }){return [_c('form-card',{attrs:{\"title\":_vm.$t('annotationDialog.dialogTitle'),\"subtitle\":_vm.annotationDialogSubtitle}},[_c('annotations-timeline',{attrs:{\"annotations\":_vm.selectedAnnotations,\"allowEdit\":false,\"showNavigate\":true,\"showProduct\":true}}),[_c('back-button',{on:{\"click\":function($event){return close()}}})]],2)]}}],null,true),model:{value:(_vm.annotationDialog),callback:function ($$v) {_vm.annotationDialog=$$v},expression:\"annotationDialog\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import * as CssVariables from \"@/lib/CssVariables\";\r\nimport { Chart } from \"chart.js/auto\";\r\nimport { LEGACY_COLORS_RGB } from './legacy'\r\nimport { formatCurrency } from '@/lib/Currencies';\r\n\r\nexport interface IClickEvent {\r\n index: number;\r\n name: string;\r\n isOther: boolean;\r\n datasetGroupId: string;\r\n}\r\n\r\nexport interface IOptions {\r\n currencyCode: string;\r\n onClick?: (event: IClickEvent) => void;\r\n}\r\n\r\nfunction colorize(opaque, hover, ctx) {\r\n const v = ctx.parsed;\r\n const c = v < -50\r\n ? \"#D60000\"\r\n : v < 0\r\n ? \"#F46300\"\r\n : v < 50\r\n ? \"#0358B6\"\r\n : \"#44DE28\";\r\n\r\n //const opacity = hover ? 1 - Math.abs(v / 150) - 0.2 : 1 - Math.abs(v / 150);\r\n\r\n return c;\r\n}\r\n\r\nfunction hoverColorize(ctx) {\r\n return colorize(false, true, ctx);\r\n}\r\n\r\nimport { ChartData } from \"chart.js\";\r\nimport { ISpendAndConsumptionGroup, ISpendResult } from \"@/models\";\r\n\r\nexport function convertUsageToPieDataset(\r\n usageResult: ISpendResult | null,\r\n reportType: \"spend\" | \"charges\" | \"credits\" = \"spend\",\r\n): ChartData<\"pie\", number[], string> {\r\n if (!usageResult || !usageResult.groupings?.length) {\r\n return { labels: [], datasets: [] };\r\n }\r\n\r\n const valueFn = {\r\n spend: (g: ISpendAndConsumptionGroup) => g.total,\r\n charges: (g: ISpendAndConsumptionGroup) => g.totalCharges,\r\n credits: () => 0\r\n }[reportType];\r\n\r\n const labels: string[] = [];\r\n const data: number[] = [];\r\n const backgroundColor: string[] = [];\r\n\r\n usageResult.groupings.forEach((g, i) => {\r\n const label = g.name || \"All Usage\";\r\n labels.push(label);\r\n data.push(valueFn(g));\r\n backgroundColor.push(\r\n g.isOther\r\n ? \"#87db79\" // or pattern if you're using it\r\n : `rgb(${LEGACY_COLORS_RGB[i % LEGACY_COLORS_RGB.length]})`,\r\n );\r\n });\r\n\r\n return {\r\n labels,\r\n datasets: [\r\n {\r\n data,\r\n backgroundColor,\r\n borderColor: \"white\",\r\n borderWidth: 1,\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport default (chartItem: HTMLCanvasElement, options: IOptions): Chart => {\r\n const { currencyCode } = options;\r\n const style = getComputedStyle(chartItem);\r\n const contrastText = style.getPropertyValue(\r\n CssVariables.ContrastTextVariable,\r\n );\r\n const chart = new Chart(chartItem, {\r\n type: \"pie\",\r\n data: {\r\n datasets: [],\r\n },\r\n options: {\r\n plugins: {\r\n legend: {\r\n labels: {\r\n color: contrastText,\r\n }\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(context) {\r\n const value = context.parsed;\r\n const label = context.label || '';\r\n return `${label}: ${formatCurrency(value, currencyCode)}`;\r\n },\r\n },\r\n bodyColor: contrastText,\r\n titleColor: contrastText,\r\n },\r\n }\r\n }\r\n });\r\n return chart;\r\n};\r\n","\r\n import { defineComponent, ref, onMounted, watch } from 'vue';\r\n import createUsagePieChart, { IClickEvent, convertUsageToPieDataset } from '@/chartjs/createPieChart';\r\n import { useTenantStore, storeToRefs } from '@/stores';\r\n \r\n export { IClickEvent, convertUsageToPieDataset };\r\n \r\n export default defineComponent({\r\n props: {\r\n data: Object,\r\n height: String,\r\n },\r\n emits: ['click'],\r\n setup(p, { emit }) {\r\n const root = ref(null);\r\n const canvas = ref(null);\r\n const { currencyCode } = storeToRefs(useTenantStore());\r\n \r\n const renderChart = () => {\r\n if (!p.data || !root.value) return;\r\n \r\n root.value.innerHTML = '';\r\n canvas.value = document.createElement('canvas');\r\n canvas.value.classList.add('chart-canvas');\r\n \r\n if (p.height === '100%') {\r\n canvas.value.classList.add('fill-height-srsly');\r\n root.value.classList.add('fill-height');\r\n } else {\r\n canvas.value.style.height = p.height || '400px';\r\n }\r\n \r\n root.value.appendChild(canvas.value);\r\n \r\n const chart = createUsagePieChart(canvas.value, {\r\n currencyCode: currencyCode.value,\r\n onClick(event: IClickEvent) {\r\n emit('click', event);\r\n }\r\n });\r\n \r\n chart.data = p.data as any;\r\n chart.update();\r\n };\r\n \r\n onMounted(() => renderChart());\r\n \r\n watch(\r\n () => p.data,\r\n () => renderChart(),\r\n { immediate: true, deep: true }\r\n );\r\n \r\n return { root, canvas };\r\n },\r\n });\r\n ","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsagePieChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpendUsagePieChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpendUsagePieChart.vue?vue&type=template&id=194d1906&\"\nimport script from \"./SpendUsagePieChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpendUsagePieChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n import { defineComponent, ref, computed, watch } from 'vue';\r\n import SpendUsagePieChart, {\r\n convertUsageToPieDataset,\r\n IClickEvent,\r\n } from '@/components/Domain.Usage/SpendUsagePieChart.vue';\r\n import { useFilterStore } from '@/stores';\r\n import {\r\n calculateOptionsDescription,\r\n convertSpendOptionsToQuery,\r\n } from '@/components/Domain.Usage/SpendUsageOptionsToolbarForm.vue';\r\n import { getSpend } from '@/lib/Api';\r\n import ApiV2 from '@/lib/ApiV2';\r\n import hash from 'object-hash';\r\n import { ChartData } from 'chart.js';\r\n import moment from '@/lib/moment';\r\n import {\r\n generateSpendUsageOptionsFromReport,\r\n ISavedReportResultParams,\r\n SpendFieldNames,\r\n PluralEntityType,\r\n } from '@/models';\r\n import { UsageReportTypes } from '@/chartjs/createUsageBarChart';\r\n import { Annotation } from '@/models/Annotation';\r\n import AnnotationsTimeline from '@/components/Domain.Annotations/AnnotationsTimeline.vue';\r\n import { ISpendUsageWidgetData } from '@/merge/Grid'\r\n \r\n export default defineComponent({\r\n props: {\r\n config: Object,\r\n name: String,\r\n hideActions: Boolean,\r\n },\r\n components: {\r\n SpendUsagePieChart,\r\n AnnotationsTimeline,\r\n },\r\n data() {\r\n return {\r\n selectedAnnotations: [],\r\n annotationDialog: false,\r\n };\r\n },\r\n setup(props) {\r\n const filterStore = useFilterStore();\r\n \r\n const usageOptions = ref({ ...filterStore.options });\r\n const segregations = ref([]);\r\n const focusedSegregation = ref(0);\r\n const pieChartData = ref | null>(null);\r\n const costViews = ref(['Actual']);\r\n const dataset = ref('Usage'); // placeholder, kept for symmetry\r\n const includeAnnotations = ref(false);\r\n const isLoadingUsage = ref(false);\r\n const lastHash = ref(null);\r\n const createdAnnotations = ref([]);\r\n const annotations = ref([]);\r\n const maxDate = ref(null);\r\n \r\n const handleDatasetClicked = (event: IClickEvent) => {\r\n // emit or handle pie slice click here\r\n console.log('Pie slice clicked', event);\r\n };\r\n \r\n const loadUsage = async () => {\r\n if (isLoadingUsage.value) return;\r\n const currentHash = hash([usageOptions.value, costViews.value, includeAnnotations.value]);\r\n if (lastHash.value === currentHash) return;\r\n \r\n lastHash.value = currentHash;\r\n isLoadingUsage.value = true;\r\n \r\n try {\r\n const params = convertSpendOptionsToQuery(usageOptions.value);\r\n if (!params) return;\r\n \r\n const spendParams = {\r\n ...params,\r\n segregateBy: usageOptions.value.segregateBy,\r\n fields: [SpendFieldNames.Charges],\r\n };\r\n \r\n const response = await getSpend(spendParams);\r\n pieChartData.value = convertUsageToPieDataset(response, UsageReportTypes.charges);\r\n maxDate.value = response?.maxDate || params.toDate;\r\n \r\n if (includeAnnotations.value) {\r\n createdAnnotations.value = await ApiV2.http\r\n .get('/api/annotations', { params })\r\n .then((r) => r.data);\r\n \r\n // You can implement convertAnnotatesToPieAnnotations if desired (optional)\r\n // annotations.value = convertAnnotatesToPieAnnotations(...);\r\n } else {\r\n createdAnnotations.value = [];\r\n annotations.value = [];\r\n }\r\n } finally {\r\n isLoadingUsage.value = false;\r\n }\r\n };\r\n \r\n // Update usage options when config changes\r\n watch(\r\n () => props.config,\r\n (opt) => {\r\n if (!opt) return;\r\n const report = opt as ISpendUsageWidgetData;\r\n segregations.value = (report.segregateBy || '').split(',').filter(Boolean);\r\n const params = generateSpendUsageOptionsFromReport(report);\r\n const segregateBy = segregations.value[focusedSegregation.value] as PluralEntityType;\r\n usageOptions.value = { ...params, segregateBy };\r\n costViews.value = report.costViews || ['Actual'];\r\n includeAnnotations.value = report.includeAnnotations || false;\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n \r\n // React to focused segregation changes\r\n watch(\r\n () => focusedSegregation.value,\r\n (v) => {\r\n const segregateBy = segregations.value[v] as PluralEntityType;\r\n if (usageOptions.value.segregateBy !== segregateBy) {\r\n usageOptions.value = { ...usageOptions.value, segregateBy };\r\n }\r\n }\r\n );\r\n \r\n const loadTriggers = computed(() => [usageOptions.value, costViews.value]);\r\n \r\n return {\r\n usageOptions,\r\n handleDatasetClicked,\r\n pieChartData,\r\n annotations,\r\n isLoadingUsage,\r\n focusedSegregation,\r\n segregations,\r\n dataset,\r\n costViews,\r\n lastHash,\r\n loadTriggers,\r\n maxDate,\r\n createdAnnotations,\r\n loadUsage\r\n };\r\n },\r\n methods: {\r\n toTrends(searchParams: URLSearchParams) {\r\n this.$router.push(`/trends?${searchParams.toString()}`);\r\n },\r\n onAnnotationSelection(annotations: Annotation[], xMin: number, xMax: number) {\r\n const to = new Date(xMax).getTime();\r\n const from = new Date(xMin).getTime();\r\n this.selectedAnnotations = annotations.filter((x) => {\r\n const date = new Date(x.annotationDate).getTime();\r\n return date >= from && date <= to;\r\n });\r\n this.annotationDialog = true;\r\n },\r\n },\r\n watch: {\r\n loadTriggers: {\r\n handler() {\r\n this.loadUsage(this.toTrends, this.onAnnotationSelection);\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n chartTitle() {\r\n return this.name || calculateOptionsDescription(this.usageOptions, (...params) => this.$t(...params));\r\n },\r\n annotationDialogSubtitle() {\r\n if (this.selectedAnnotations?.length > 0) {\r\n const dates = this.selectedAnnotations\r\n .map((x) => {\r\n const date = new Date(x.annotationDate);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n })\r\n .sort((a, b) => a.getTime() - b.getTime());\r\n const start = moment(dates[0]);\r\n const end = moment(dates[dates.length - 1]);\r\n return start.isSame(end) ? start.format('MMMM DD') : `${start.format('MMMM DD')} - ${end.format('MMMM DD')}`;\r\n }\r\n return undefined;\r\n },\r\n },\r\n });\r\n ","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PieChartGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PieChartGridWidget.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PieChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"; export default mod; export * from \"-!../../../../node_modules/@intlify/vue-i18n-loader/lib/index.js!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PieChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"","import { render, staticRenderFns } from \"./PieChartGridWidget.vue?vue&type=template&id=2e0d98a8&scoped=true&\"\nimport script from \"./PieChartGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./PieChartGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PieChartGridWidget.vue?vue&type=style&index=0&id=2e0d98a8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e0d98a8\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PieChartGridWidget.vue?vue&type=custom&index=0&blockType=i18n\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"color\":_vm.textData ? _vm.textData.color : undefined,\"light\":\"\"}},[_c('v-card-title',{class:_vm.textData ? `${_vm.textData.color} darken-1` : 'darken-1'},[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"sticky_note_2\")]),_vm._v(\" \"+_vm._s(_vm.textData.title || _vm.name || 'Note Widget')+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),(_vm.textData && _vm.textData.subtitle)?_c('v-card-subtitle',{class:_vm.textData ? `${_vm.textData.color} darken-1` : 'darken-1'},[_vm._v(\" \"+_vm._s(_vm.textData.subtitle)+\" \")]):_vm._e(),(_vm.textData && _vm.textData.bodyText)?_c('v-card-text',{staticClass:\"pa-4 subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.textData.bodyText)+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, computed } from 'vue'\r\nimport { INoteWidgetData } from '@/merge/Grid';\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n setup(p) {\r\n const textData = computed(() => {\r\n return p.config as INoteWidgetData | null | undefined;\r\n })\r\n return { textData }\r\n }\r\n})\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextualGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TextualGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextualGridWidget.vue?vue&type=template&id=5a7fd1fe&\"\nimport script from \"./TextualGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextualGridWidget.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\"}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.cardTitle)+\" \")])]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\"}},[_c('iframe',{staticClass:\"embedContainer\",attrs:{\"src\":_vm.embedData.url}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { IEmbedWidgetData } from '@/merge/Grid';\r\nimport { defineComponent, computed } from 'vue';\r\n\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n components: { },\r\n setup(props) {\r\n const embedData = computed(() => {\r\n return props.config as IEmbedWidgetData | null | undefined;\r\n })\r\n return { embedData }\r\n },\r\n methods: {\r\n },\r\n watch: {\r\n },\r\n computed: {\r\n cardTitle() {\r\n return this.name;\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmbedGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmbedGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmbedGridWidget.vue?vue&type=template&id=183d3c8d&scoped=true&\"\nimport script from \"./EmbedGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmbedGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EmbedGridWidget.vue?vue&type=style&index=0&id=183d3c8d&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"183d3c8d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"loading\":_vm.isLoading}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"analytics\")]),_vm._v(\" \"+_vm._s(_vm.name || _vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\"}},[(_vm.isLoading)?_c('v-progress-linear',{attrs:{\"indeterminate\":\"\"}}):(!_vm.config || !_vm.config.renderType || _vm.config.renderType === 'chart')?_c('TrendBarChart',{attrs:{\"data\":_vm.trendDatasets,\"height\":\"100%\"},on:{\"click\":_vm.handleChartClick}}):(_vm.config.segregateBy === 'services')?_c('ServiceComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.config.segregateBy === 'products')?_c('ProductComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.config.segregateBy === 'subscriptions')?_c('SubscriptionComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):(_vm.config.segregateBy === 'cloudAccounts')?_c('CloudAccountComparisonsTable',{attrs:{\"items\":_vm.comparisons,\"currency\":_vm.tenantStore.currencyCode,\"route-prefix\":\"/trends\"}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, watch, computed } from 'vue';\r\nimport { getTrends } from '@/lib/Api';\r\nimport TrendBarChart, {\r\n convertProductCompareResultToDatasets,\r\n convertServiceCompareResultToDatasets,\r\n convertCloudAccountCompareResultToDatasets,\r\n convertSubscriptionCompareResultToDatasets,\r\n ITrendsDatapoint,\r\n} from '@/components/Domain.Usage/TrendBarChart.vue';\r\nimport { PluralEntityType } from '@/models';\r\nimport { ITrendsWidgetData } from '@/merge/Grid';\r\nimport { ChartData } from 'chart.js/auto';\r\nimport ServiceComparisonsTable from '@/components/Domain.Services/ServiceComparisonsTable.vue';\r\nimport ProductComparisonsTable from '@/components/Domain.Products/ProductComparisonsTable.vue';\r\nimport SubscriptionComparisonsTable from '@/components/Domain.Subscriptions/SubscriptionComparisonsTable.vue';\r\nimport CloudAccountComparisonsTable from '@/components/Settings.CloudAccounts/CloudAccountComparisonsTable.vue';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport hash from 'object-hash';\r\n\r\nexport default defineComponent({\r\n props: {\r\n name: String,\r\n hideActions: Boolean,\r\n config: {\r\n type: Object,\r\n required: true,\r\n },\r\n },\r\n components: {\r\n TrendBarChart,\r\n ServiceComparisonsTable,\r\n ProductComparisonsTable,\r\n SubscriptionComparisonsTable,\r\n CloudAccountComparisonsTable,\r\n },\r\n setup(props) {\r\n const isLoading = ref(false);\r\n const trendDatasets = ref>({ labels: [], datasets: [] });\r\n const comparisons = ref([]);\r\n const tenantStore = useTenantStore();\r\n\r\n const lastHash = ref(null);\r\n const fetchTrends = async () => {\r\n if (!props.config) return;\r\n if (isLoading.value) return;\r\n const trendsConfig = props.config as ITrendsWidgetData;\r\n const optionsHash = hash([props.config.segregateBy, trendsConfig]);\r\n if (lastHash.value === optionsHash) return;\r\n lastHash.value = optionsHash;\r\n isLoading.value = true;\r\n try {\r\n const result = await getTrends(props.config.segregateBy, {\r\n period: trendsConfig.dateRangeKey,\r\n toDate: trendsConfig.toDate || new Date().toISOString(),\r\n });\r\n switch (props.config.segregateBy) {\r\n case PluralEntityType.products:\r\n trendDatasets.value = convertProductCompareResultToDatasets(result as any) as any;\r\n break;\r\n case PluralEntityType.services:\r\n trendDatasets.value = convertServiceCompareResultToDatasets(result as any) as any;\r\n break;\r\n case PluralEntityType.subscriptions:\r\n trendDatasets.value = convertSubscriptionCompareResultToDatasets(result as any) as any;\r\n break;\r\n case PluralEntityType.cloudAccounts:\r\n trendDatasets.value = convertCloudAccountCompareResultToDatasets(result as any) as any;\r\n break;\r\n }\r\n comparisons.value = result.entities || [];\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n watch(() => props.config, fetchTrends, { immediate: true, deep: true });\r\n\r\n const chartTitle = computed(() => `Trends - ${props.config.dateRangeKey}`);\r\n\r\n const handleChartClick = (event) => {\r\n console.log('Chart clicked', event);\r\n };\r\n\r\n return {\r\n isLoading,\r\n trendDatasets,\r\n chartTitle,\r\n handleChartClick,\r\n comparisons,\r\n tenantStore,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComparisonChartGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ComparisonChartGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ComparisonChartGridWidget.vue?vue&type=template&id=3678cf0f&scoped=true&\"\nimport script from \"./ComparisonChartGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./ComparisonChartGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ComparisonChartGridWidget.vue?vue&type=style&index=0&id=3678cf0f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3678cf0f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"flexcard\",attrs:{\"flat\":\"\",\"height\":\"100%\",\"loading\":_vm.isLoading}},[_c('v-card-title',[_c('div',[_c('h2',{staticClass:\"title\"},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"savings\")]),_vm._v(\" \"+_vm._s(_vm.chartTitle)+\" \")],1)]),(!_vm.hideActions)?_c('v-layout',{attrs:{\"row\":\"\",\"justify-end\":\"\"}},[_vm._t(\"actions\")],2):_vm._e()],1),_c('v-card-text',{staticClass:\"fill-height\",staticStyle:{\"overflow\":\"hidden\"}},[_c('v-simple-table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Category\")]),_c('th',[_vm._v(\"Recommendation\")]),_c('th',[_vm._v(\"Count\")]),_c('th',[_vm._v(\"Cost Impact\")])])]),_c('tbody',_vm._l((_vm.recommendations),function(r,i){return _c('tr',{key:i},[_c('td',[_vm._v(_vm._s(r.category))]),_c('td',[_vm._v(_vm._s(r.name))]),_c('td',[_vm._v(_vm._s(r.resultCount))]),_c('td',[_vm._v(\"$\"+_vm._s(r.savings))])])}),0)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport ApiV2 from '@/lib/ApiV2';\r\nimport { IRecommendationsWidgetData } from '@/merge/Grid';\r\nimport hash from 'object-hash';\r\nexport default defineComponent({\r\n props: { config: Object, name: String, hideActions: Boolean },\r\n setup(props) {\r\n const recommendations = ref<\r\n { id: string; name: string; category: string; resultCount: number; savings: number }[]\r\n >([]);\r\n\r\n const isLoading = ref(false);\r\n const lastHash = ref(null);\r\n const loadRecommendations = async (d: IRecommendationsWidgetData) => {\r\n if (isLoading.value) return;\r\n const optionsHash = hash([ d.categories, d.providerTypes ]);\r\n if (lastHash.value === optionsHash) return;\r\n lastHash.value = optionsHash;\r\n\r\n const query = new URLSearchParams();\r\n\r\n if (d.categories?.length) {\r\n d.categories.forEach((c) => query.append('categories', c));\r\n }\r\n\r\n if (d.providerTypes?.length) {\r\n d.providerTypes.forEach((p) => query.append('providerTypes', p));\r\n }\r\n\r\n try {\r\n isLoading.value = true;\r\n\r\n const recommendationResponse = await ApiV2.http\r\n .get(`/api/recommendations?${query.toString()}`)\r\n .then((r) => r.data);\r\n\r\n recommendations.value = recommendationResponse.recommendations\r\n .sort((a, b) => b.results.length - a.results.length)\r\n .map((r: any) => ({\r\n id: r.id,\r\n name: r.name,\r\n category: r.category,\r\n resultCount: r.results.length,\r\n savings: r.maximumEstimateImpact,\r\n }));\r\n } finally {\r\n isLoading.value = false;\r\n }\r\n };\r\n\r\n watch(\r\n () => props.config,\r\n (opt) => {\r\n if (!opt) return;\r\n loadRecommendations(opt as any);\r\n },\r\n { immediate: true, deep: true }\r\n );\r\n\r\n return { recommendations, isLoading };\r\n },\r\n computed: {\r\n chartTitle() {\r\n return this.name || 'Recommendations';\r\n },\r\n },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationsGridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RecommendationsGridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecommendationsGridWidget.vue?vue&type=template&id=18b75ee2&scoped=true&\"\nimport script from \"./RecommendationsGridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecommendationsGridWidget.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecommendationsGridWidget.vue?vue&type=style&index=0&id=18b75ee2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18b75ee2\",\n null\n \n)\n\nexport default component.exports","\r\nimport { defineComponent } from 'vue';\r\nimport ColumnChartGridWidget from './ColumnChartGridWidget.vue';\r\nimport LineChartGridWidget from './LineChartGridWidget.vue';\r\nimport TableGridWidget from './TableGridWidget.vue';\r\nimport PieChartGridWidget from './PieChartGridWidget.vue';\r\nimport TextualGridWidget from './TextualGridWidget.vue';\r\nimport EmbedGridWidget from './EmbedGridWidget.vue';\r\nimport ComparisonChartGridWidget from './ComparisonChartGridWidget.vue';\r\nimport RecommendationsGridWidget from './RecommendationsGridWidget.vue';\r\nexport default defineComponent({\r\n components: {\r\n ColumnChartGridWidget,\r\n LineChartGridWidget,\r\n TableGridWidget,\r\n PieChartGridWidget,\r\n TextualGridWidget,\r\n EmbedGridWidget,\r\n ComparisonChartGridWidget,\r\n RecommendationsGridWidget,\r\n },\r\n props: { name: String, type: String, config: Object, hideActions: Boolean },\r\n});\r\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GridWidget.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GridWidget.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridWidget.vue?vue&type=template&id=3c1ffca2&\"\nimport script from \"./GridWidget.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridWidget.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport VueGridLayout from 'vue-grid-layout';\r\nimport { defineComponent, ref, watch } from 'vue';\r\nimport { storeToRefs } from '@/stores';\r\nimport { useGridStore } from '@/stores/grid';\r\nimport GridWidget from './Widgets/GridWidget.vue';\r\nimport { CCWidget } from '@/merge/Grid';\r\n\r\nexport type IGridLayoutItem = CCWidget & { i: string; }\r\n\r\nexport default defineComponent({\r\n props: { gridId: String },\r\n components: {\r\n GridLayout: VueGridLayout.GridLayout,\r\n GridItem: VueGridLayout.GridItem,\r\n GridWidget: GridWidget,\r\n },\r\n setup(_, { emit }) {\r\n const gridStore = useGridStore();\r\n const { gridDoc, cachedPositionalUpdates, cachedSizingUpdates } = storeToRefs(gridStore);\r\n const layout = ref([]);\r\n\r\n watch(\r\n () => gridDoc.value,\r\n (d) => {\r\n if (!d?.elements) return;\r\n const elements = Object.entries(d.elements);\r\n if (!elements.length) {\r\n layout.value = [];\r\n } else {\r\n layout.value = elements.map(([k, v]) => {\r\n const pos = cachedPositionalUpdates.value[k] || { x: v.x, y: v.y };\r\n const rect = cachedSizingUpdates.value[k] || { w: v.w, h: v.h };\r\n return {\r\n ...pos,\r\n ...rect,\r\n id: v.id,\r\n i: v.id,\r\n name: v.name,\r\n type: v.type,\r\n config: v.config,\r\n } as IGridLayoutItem;\r\n });\r\n }\r\n },\r\n { immediate: true }\r\n );\r\n const handleMoved = (i: string, newX: number, newY: number) => {\r\n cachedPositionalUpdates.value[i] = { x: newX, y: newY };\r\n };\r\n const handleResized = (i: string, newX: number, newY: number) => {\r\n cachedSizingUpdates.value[i] = { w: newY, h: newX };\r\n };\r\n const handleEditClicked = (item: IGridLayoutItem) => {\r\n emit('onEdit', item);\r\n };\r\n\r\n const handleDeleteClicked = (item: IGridLayoutItem) => {\r\n emit('onDelete', item);\r\n };\r\n return {\r\n layout,\r\n handleMoved,\r\n handleResized,\r\n gridDoc,\r\n cachedPositionalUpdates,\r\n cachedSizingUpdates,\r\n onDeleteWidget: handleDeleteClicked,\r\n onEditWidget: handleEditClicked,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Grid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Grid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Grid.vue?vue&type=template&id=2a98841c&\"\nimport script from \"./Grid.vue?vue&type=script&lang=ts&\"\nexport * from \"./Grid.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"width\":1200,\"height\":800,\"scrollable\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',{attrs:{\"height\":850}},[_c('v-card-text',{staticClass:\"pa-0\"},[_c('v-container',{staticClass:\"fill-height py-0\",attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"fill-height\"},[_c('v-col',{staticStyle:{\"background\":\"#293748\"},attrs:{\"cols\":\"4\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"settings\")]),_vm._v(\" Widget Configuration\")],1),_c('div',{staticClass:\"px-2\"},[_c('v-text-field',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Title\"},model:{value:(_vm.widgetName),callback:function ($$v) {_vm.widgetName=$$v},expression:\"widgetName\"}}),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"View\",\"items\":_vm.availableChartTypes,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.chartType),callback:function ($$v) {_vm.chartType=$$v},expression:\"chartType\"}}),(_vm.chartType === 'note')?[_c('v-text-field',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Subtitle\"},model:{value:(_vm.widgetSubtitle),callback:function ($$v) {_vm.widgetSubtitle=$$v},expression:\"widgetSubtitle\"}}),_c('v-textarea',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Text Body\"},model:{value:(_vm.widgetBodyText),callback:function ($$v) {_vm.widgetBodyText=$$v},expression:\"widgetBodyText\"}})]:(_vm.chartType === 'embed')?[_c('v-text-field',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"URL\"},model:{value:(_vm.widgetUrl),callback:function ($$v) {_vm.widgetUrl=$$v},expression:\"widgetUrl\"}})]:(_vm.chartType === 'trends')?[_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Render Type\",\"items\":_vm.trendRenderTypes},model:{value:(_vm.trendRenderType),callback:function ($$v) {_vm.trendRenderType=$$v},expression:\"trendRenderType\"}}),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Granularity\",\"items\":_vm.granularities},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}}),_c('DateRangeSelect',{attrs:{\"filled\":true,\"flat\":true},model:{value:(_vm.dateRangeKey),callback:function ($$v) {_vm.dateRangeKey=$$v},expression:\"dateRangeKey\"}}),_c('TextDatePicker',{attrs:{\"filled\":true,\"flat\":true},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}}),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Granularity\",\"items\":_vm.trendSegregations},model:{value:(_vm.trendSegregateBy),callback:function ($$v) {_vm.trendSegregateBy=$$v},expression:\"trendSegregateBy\"}})]:(_vm.chartType === 'recommendations')?[_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Cloud Providers\",\"multiple\":\"\",\"items\":_vm.availableCloudProviders},model:{value:(_vm.selectedCloudProviders),callback:function ($$v) {_vm.selectedCloudProviders=$$v},expression:\"selectedCloudProviders\"}}),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Categories\",\"multiple\":\"\",\"items\":_vm.availableCategories},model:{value:(_vm.selectedCategories),callback:function ($$v) {_vm.selectedCategories=$$v},expression:\"selectedCategories\"}})]:[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pr-1\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Dataset\",\"items\":_vm.availableDatasets,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.dataset),callback:function ($$v) {_vm.dataset=$$v},expression:\"dataset\"}})],1),_c('v-col',{staticClass:\"pl-1\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Cost View\",\"items\":_vm.availableCostViews,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.costViewSelection),callback:function ($$v) {_vm.costViewSelection=$$v},expression:\"costViewSelection\"}})],1),_c('v-col',{staticClass:\"pr-1\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"label\":\"Granularity\",\"readonly\":_vm.chartType === 'pieChart',\"disabled\":_vm.chartType === 'pieChart',\"items\":_vm.granularities},model:{value:(_vm.granularity),callback:function ($$v) {_vm.granularity=$$v},expression:\"granularity\"}})],1),_c('v-col',{staticClass:\"pl-1\",attrs:{\"cols\":\"6\"}},[_c('DateRangeSelect',{attrs:{\"filled\":true,\"flat\":true,\"items\":_vm.dateRangeOptions},model:{value:(_vm.dateRangeKey),callback:function ($$v) {_vm.dateRangeKey=$$v},expression:\"dateRangeKey\"}})],1),(_vm.dateRangeKey === 'custom')?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('TextDatePicker',{attrs:{\"range\":true,\"filled\":true,\"flat\":true},model:{value:(_vm.dates),callback:function ($$v) {_vm.dates=$$v},expression:\"dates\"}})],1):_vm._e()],1),_c('v-select',{attrs:{\"items\":_vm.filters,\"filled\":\"\",\"flat\":\"\",\"item-text\":\"name\",\"item-value\":\"id\",\"label\":\"Filters\"},model:{value:(_vm.selectedFilterId),callback:function ($$v) {_vm.selectedFilterId=$$v},expression:\"selectedFilterId\"}}),(_vm.selectedFilterId === '$FixedFilters')?_c('EntitySearchAutocomplete',{attrs:{\"types\":_vm.supportedSearchTypes,\"multiple\":true,\"filled\":\"\",\"flat\":\"\"},model:{value:(_vm.searchEntities),callback:function ($$v) {_vm.searchEntities=$$v},expression:\"searchEntities\"}}):_vm._e(),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"multiple\":\"\",\"label\":\"Fields\",\"items\":_vm.availableFieldsToInclude,\"item-text\":\"name\",\"item-value\":\"id\"},model:{value:(_vm.fieldsToInclude),callback:function ($$v) {_vm.fieldsToInclude=$$v},expression:\"fieldsToInclude\"}}),_c('v-select',{attrs:{\"filled\":\"\",\"flat\":\"\",\"multiple\":\"\",\"label\":\"Tags\",\"items\":_vm.availableTagsToInclude},model:{value:(_vm.tagSelections),callback:function ($$v) {_vm.tagSelections=$$v},expression:\"tagSelections\"}}),_c('v-checkbox',{attrs:{\"label\":\"Include Annotations\"},model:{value:(_vm.includeAnnotations),callback:function ($$v) {_vm.includeAnnotations=$$v},expression:\"includeAnnotations\"}})]],2)],1),_c('v-col',{staticStyle:{\"height\":\"100%\"},attrs:{\"cols\":\"8\"}},[_c('GridWidget',{attrs:{\"type\":_vm.chartType,\"hide-actions\":true,\"config\":_vm.currentWidgetConfig,\"name\":_vm.widgetName}})],1)],1)],1)],1),_c('v-card-actions',{staticStyle:{\"background-color\":\"#263241\"}},[_vm._t(\"actions\",null,{\"config\":_vm.currentWidgetConfig,\"widgetName\":_vm.widgetName,\"widgetType\":_vm.chartType})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { defineComponent, ref, computed, watch } from 'vue';\r\nimport GridWidget from './Widgets/GridWidget.vue';\r\nimport DateRangeSelect from '@/components/Domain.Usage/DateRangeSelect.vue';\r\nimport TextDatePicker from '@/components/Common/TextDatePicker.vue';\r\nimport EntitySearchAutocomplete, { ISearchEntityViewModel } from '../Common/EntitySearchAutocomplete.vue';\r\nimport { Granularity, PluralEntityType, EntityType, ICustomViewResult, CloudProviderType } from '@/models';\r\nimport { useTenantStore } from '@/stores/tenant';\r\nimport {\r\n CCWidget,\r\n WidgetTypes,\r\n INoteWidgetData,\r\n IEmbedWidgetData,\r\n ITrendsWidgetData,\r\n IRecommendationsWidgetData,\r\n ISpendUsageWidgetData,\r\n} from '@/merge/Grid';\r\nimport DateKey from '@/lib/DateKey';\r\nimport { getCustomViews } from '@/lib/Api';\r\n\r\nconst FIXED_FILTER_ID = '$FixedFilters';\r\nconst UNFILTERED_ID = '$AllUsage';\r\n\r\nexport default defineComponent({\r\n components: { GridWidget, DateRangeSelect, TextDatePicker, EntitySearchAutocomplete },\r\n props: { value: Boolean, config: Object },\r\n setup(props) {\r\n const tenantStore = useTenantStore();\r\n const widgetName = ref('');\r\n const widgetSubtitle = ref('');\r\n const widgetBodyText = ref('');\r\n const widgetUrl = ref('');\r\n const isValid = ref(false);\r\n const chartType = ref(WidgetTypes.columnChart);\r\n const trendRenderType = ref<'chart' | 'table'>('chart');\r\n const trendRenderTypes = ref([\r\n { value: 'chart', text: 'Chart' },\r\n { value: 'table', text: 'Table' },\r\n ]);\r\n const availableChartTypes = ref([\r\n { id: WidgetTypes.columnChart, name: 'Column Chart' },\r\n { id: WidgetTypes.lineChart, name: 'Line Chart' },\r\n { id: WidgetTypes.table, name: 'Table' },\r\n { id: WidgetTypes.pieChart, name: 'Pie Chart' },\r\n { id: WidgetTypes.note, name: 'Text / Note' },\r\n { id: WidgetTypes.embed, name: 'Embedded' },\r\n { id: WidgetTypes.trends, name: 'Trends' },\r\n { id: WidgetTypes.recommendations, name: 'Recommendations' },\r\n ]);\r\n const dateRangeKey = ref('30d');\r\n const topXResults = ref(10);\r\n const dates = ref([]);\r\n const views = ref([]);\r\n const searchEntities = ref([]);\r\n const granularity = ref(Granularity.daily);\r\n const granularities = ref([Granularity.daily, Granularity.monthly]);\r\n const selectedFilterId = ref(null);\r\n const fieldsToInclude = ref([]);\r\n const tagSelections = ref([]);\r\n const usePredefinedView = ref(false);\r\n const includeAnnotations = ref(false);\r\n const availableFieldsToInclude = ref([\r\n { name: 'Cloud Vendor', id: PluralEntityType.cloudProviders },\r\n { name: 'Subscription Name', id: PluralEntityType.subscriptions },\r\n { name: 'Product Category', id: PluralEntityType.productCategories },\r\n { name: 'Product Name', id: PluralEntityType.products },\r\n { name: 'Service', id: PluralEntityType.services },\r\n { name: 'Meter', id: PluralEntityType.meters },\r\n { name: 'Region', id: PluralEntityType.regions },\r\n ]);\r\n const availableTagsToInclude = ref([]);\r\n const dataset = ref<'Emissions' | 'Usage'>('Usage');\r\n const availableDatasets = ref(['Usage', 'Emissions']);\r\n const costViewSelection = ref('Actual');\r\n const availableCostViews = ref([\r\n { name: 'SUM(Actual)', id: 'Actual' },\r\n { name: 'SUM(Utilization)', id: 'Utilized' },\r\n { name: 'SUM(Actual) & SUM(Utilization)', id: 'Actual+Utilized' },\r\n ]);\r\n const trendSegregateBy = ref(PluralEntityType.products);\r\n const trendSegregations = ref([\r\n { value: PluralEntityType.products, text: 'Products' },\r\n { value: PluralEntityType.services, text: 'Services' },\r\n { value: PluralEntityType.subscriptions, text: 'Subscriptions' },\r\n { value: PluralEntityType.cloudAccounts, text: 'Cloud Connections' },\r\n ]);\r\n const supportedSearchTypes = ref([\r\n EntityType.customView,\r\n EntityType.cloudProvider,\r\n EntityType.productCategory,\r\n EntityType.geography,\r\n EntityType.region,\r\n EntityType.product,\r\n EntityType.cloudAccount,\r\n EntityType.tag,\r\n EntityType.subscription,\r\n EntityType.service,\r\n ]);\r\n const toDate = ref(new Date());\r\n\r\n const selectedCloudProviders = ref([CloudProviderType.azure, CloudProviderType.amazon]);\r\n const availableCloudProviders = ref([\r\n { value: CloudProviderType.azure, text: 'Azure' },\r\n { value: CloudProviderType.amazon, text: 'Amazon' },\r\n ]);\r\n\r\n const availableCategories = ref([\r\n 'Cache',\r\n 'CDN',\r\n 'Compute',\r\n 'Cost',\r\n 'Database',\r\n 'EventHub',\r\n 'Logic',\r\n 'Network',\r\n 'Performance',\r\n 'Sql',\r\n 'Storage',\r\n 'Web',\r\n ]);\r\n const selectedCategories = ref(availableCategories.value);\r\n\r\n getCustomViews().then((v) => (views.value = v));\r\n\r\n watch(chartType, (t,o) => {\r\n if (!o) return;\r\n if (t === WidgetTypes.pieChart) {\r\n granularity.value = Granularity.monthly\r\n } \r\n });\r\n\r\n const filters = computed(() => {\r\n return [\r\n { id: UNFILTERED_ID, name: 'Unfiltered / Raw' },\r\n { id: FIXED_FILTER_ID, name: 'Fixed Filters' },\r\n ...views.value.map((v) => ({ id: v.id, name: `Custom View - ${v.name}` })),\r\n ];\r\n });\r\n\r\n const dateRangeOptions = computed(() => {\r\n if (chartType.value === WidgetTypes.trends) {\r\n return ['1d', '2d', '3d', '5d', '7d', '14d', '30d', '1m'];\r\n }\r\n return ['30d', '60d', '90d', 'lastMonth', 'thisMonth', '6m', '13m', 'custom'];\r\n });\r\n\r\n watch(\r\n () => selectedFilterId.value,\r\n (f) => {\r\n usePredefinedView.value = f !== UNFILTERED_ID && f !== FIXED_FILTER_ID;\r\n },\r\n { immediate: true }\r\n );\r\n\r\n const currentWidgetConfig = computed<\r\n ISpendUsageWidgetData | INoteWidgetData | IEmbedWidgetData | ITrendsWidgetData | IRecommendationsWidgetData\r\n >(() => {\r\n if (chartType.value === WidgetTypes.note) {\r\n const textConfig: INoteWidgetData = {\r\n bodyText: widgetBodyText.value,\r\n title: widgetName.value,\r\n subtitle: widgetSubtitle.value,\r\n color: 'yellow',\r\n };\r\n return textConfig;\r\n }\r\n\r\n if (chartType.value === WidgetTypes.embed) {\r\n const embedConfig: IEmbedWidgetData = {\r\n url: widgetUrl.value,\r\n urlTitle: widgetName.value,\r\n };\r\n return embedConfig;\r\n }\r\n\r\n if (chartType.value === WidgetTypes.trends) {\r\n const trendConfig: ITrendsWidgetData = {\r\n toDate:\r\n toDate.value.toDateString() === new Date().toDateString() ? null : toDate.value.toISOString(),\r\n dateRangeKey: dateRangeKey.value,\r\n segregateBy: trendSegregateBy.value,\r\n renderType: trendRenderType.value,\r\n };\r\n return trendConfig;\r\n }\r\n\r\n if (chartType.value === WidgetTypes.recommendations) {\r\n const recommendationConfig: IRecommendationsWidgetData = {\r\n categories:\r\n selectedCategories.value.length === availableCategories.value.length ||\r\n selectedCategories.value.length === 0\r\n ? null\r\n : selectedCategories.value,\r\n providerTypes:\r\n selectedCloudProviders.value.length === availableCloudProviders.value.length ||\r\n selectedCloudProviders.value.length === 0\r\n ? null\r\n : selectedCloudProviders.value,\r\n classifications: null,\r\n namespaces: null,\r\n recommendationIds: null,\r\n };\r\n return recommendationConfig;\r\n }\r\n\r\n const segregateBy = (fieldsToInclude.value || [])\r\n .concat((tagSelections.value || []).map((t) => `tags/${t}`))\r\n .join(',');\r\n const filters = searchEntities.value || [];\r\n const formData: ISpendUsageWidgetData = {\r\n dateRangeKey: dateRangeKey.value,\r\n topXResults: topXResults.value,\r\n segregateBy,\r\n filters:\r\n selectedFilterId.value === FIXED_FILTER_ID\r\n ? filters.map((e) => ({\r\n id: e.Id,\r\n name: e.Name,\r\n type: e.Type as EntityType,\r\n }))\r\n : [],\r\n savedViewId: usePredefinedView.value ? selectedFilterId.value : null,\r\n fromDate: dates.value[0]?.toISOString() || null,\r\n toDate: (dates.value[1] || new Date()).toISOString(),\r\n granularity: granularity.value,\r\n costViews:\r\n costViewSelection.value === 'Actual+Utilized' ? ['Actual', 'Utilized'] : [costViewSelection.value],\r\n dataset: dataset.value,\r\n includeAnnotations: includeAnnotations.value,\r\n };\r\n return formData;\r\n });\r\n\r\n watch(\r\n () => [tenantStore.tagKey1, tenantStore.tagKey2, tenantStore.tagKey3],\r\n ([tagKey1, tagKey2, tagKey3]) => {\r\n if (availableTagsToInclude.value.length) return;\r\n availableTagsToInclude.value = [tagKey1, tagKey2, tagKey3].filter((t) => t);\r\n },\r\n { immediate: true }\r\n );\r\n\r\n watch(\r\n () => props.config,\r\n (cfg) => {\r\n if (!cfg) {\r\n // reset fields\r\n widgetName.value = '';\r\n widgetSubtitle.value = '';\r\n widgetBodyText.value = '';\r\n\r\n widgetUrl.value = '';\r\n\r\n dateRangeKey.value = '30d';\r\n dates.value = [];\r\n topXResults.value = 10;\r\n searchEntities.value = [];\r\n costViewSelection.value = 'Actual';\r\n granularity.value = Granularity.daily;\r\n usePredefinedView.value = false;\r\n selectedFilterId.value = null;\r\n fieldsToInclude.value = [];\r\n tagSelections.value = [];\r\n availableTagsToInclude.value = [];\r\n dataset.value = 'Usage';\r\n trendSegregateBy.value = PluralEntityType.products;\r\n\r\n chartType.value = WidgetTypes.columnChart;\r\n\r\n return;\r\n }\r\n\r\n const widget = cfg as CCWidget;\r\n if (widget.type === WidgetTypes.note) {\r\n widgetName.value = widget.name;\r\n widgetSubtitle.value = widget.config.subtitle || null;\r\n widgetBodyText.value = widget.config.bodyText || null;\r\n } else if (widget.type === WidgetTypes.embed) {\r\n widgetName.value = widget.name;\r\n widgetUrl.value = widget.config.url || null;\r\n } else if (widget.type === WidgetTypes.trends) {\r\n dateRangeKey.value = widget.config.dateRangeKey;\r\n toDate.value = widget.config.toDate ? new Date(widget.config.toDate) : new Date();\r\n trendSegregateBy.value = widget.config.segregateBy || PluralEntityType.products;\r\n trendRenderType.value = widget.config.renderType || 'chart';\r\n } else if (widget.type === WidgetTypes.recommendations) {\r\n selectedCategories.value = widget.config.categories || availableCategories.value;\r\n selectedCloudProviders.value =\r\n widget.config.providerTypes || availableCloudProviders.value.map((i) => i.value);\r\n } else {\r\n widgetName.value = widget.name;\r\n dateRangeKey.value = widget.config.dateRangeKey;\r\n\r\n const dateKey = new DateKey(dateRangeKey.value);\r\n const fromDate = widget.config.fromDate ? new Date(widget.config.fromDate) : null;\r\n const toDate = widget.config.toDate ? new Date(widget.config.toDate) : null;\r\n dates.value = dateKey.getEffectiveDateRange(fromDate, toDate);\r\n\r\n topXResults.value = widget.config.topXResults || 10;\r\n searchEntities.value = (widget.config.filters || []).map((r, i) => ({\r\n Id: r.id,\r\n Name: r.name,\r\n Type: r.type as EntityType,\r\n Description: r.name,\r\n EntityIndex: i,\r\n Provider: null,\r\n }));\r\n costViewSelection.value =\r\n widget.config.costViews.length > 1 ? 'Actual+Utilized' : widget.config.costViews[0] || 'Actual';\r\n\r\n granularity.value = widget.type === WidgetTypes.pieChart ? Granularity.monthly : widget.config.granularity;\r\n usePredefinedView.value = !!widget.config.savedViewId;\r\n if (usePredefinedView.value) {\r\n selectedFilterId.value = widget.config.savedViewId || null;\r\n } else if (searchEntities.value.length) {\r\n selectedFilterId.value = FIXED_FILTER_ID;\r\n } else {\r\n selectedFilterId.value = UNFILTERED_ID;\r\n }\r\n\r\n const segregateByParts = widget.config.segregateBy.split(',');\r\n fieldsToInclude.value = segregateByParts.filter((s) => !s.startsWith('tags/'));\r\n tagSelections.value = segregateByParts\r\n .filter((s) => s.startsWith('tags/'))\r\n .map((s) => s.substring('tags/'.length));\r\n\r\n const allTags = [...availableTagsToInclude.value, ...tagSelections.value];\r\n availableTagsToInclude.value = allTags.filter((value, index) => allTags.indexOf(value) === index);\r\n dataset.value = (widget.config.dataset || 'Usage') as any;\r\n includeAnnotations.value = widget.config.includeAnnotations || false;\r\n }\r\n\r\n chartType.value = widget.type;\r\n },\r\n { immediate: true }\r\n );\r\n\r\n return {\r\n widgetName,\r\n widgetSubtitle,\r\n widgetUrl,\r\n widgetBodyText,\r\n isValid,\r\n dateRangeKey,\r\n topXResults,\r\n dates,\r\n searchEntities,\r\n granularity,\r\n granularities,\r\n selectedFilterId,\r\n fieldsToInclude,\r\n tagSelections,\r\n availableFieldsToInclude,\r\n availableTagsToInclude,\r\n dataset,\r\n chartType,\r\n usePredefinedView,\r\n availableChartTypes,\r\n costViewSelection,\r\n currentWidgetConfig,\r\n availableCostViews,\r\n availableDatasets,\r\n filters,\r\n views,\r\n supportedSearchTypes,\r\n trendSegregateBy,\r\n trendSegregations,\r\n toDate,\r\n trendRenderType,\r\n trendRenderTypes,\r\n selectedCloudProviders,\r\n availableCloudProviders,\r\n selectedCategories,\r\n availableCategories,\r\n dateRangeOptions,\r\n includeAnnotations,\r\n };\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WidgetGridFormDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WidgetGridFormDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WidgetGridFormDialog.vue?vue&type=template&id=78948fa4&\"\nimport script from \"./WidgetGridFormDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./WidgetGridFormDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { computed, defineComponent, ref } from 'vue';\r\nimport { storeToRefs } from '@/stores';\r\nimport { useGridStore } from '@/stores/grid';\r\nimport Grid from '@/components/Grid/Grid.vue';\r\nimport { CCWidget, WidgetTypes } from '@/merge/Grid';\r\nimport { ISavedReportResultParams } from '@/models';\r\nimport { getCustomDashboardDoc, putCustomDashboard } from '@/lib/Api';\r\nimport WidgetGridFormDialog from '@/components/Grid/WidgetGridFormDialog.vue';\r\nexport default defineComponent({\r\n components: { Grid, WidgetGridFormDialog },\r\n setup() {\r\n const gridStore = useGridStore();\r\n const { gridDoc, currentDocKey } = storeToRefs(gridStore);\r\n const pageTitle = computed(() => {\r\n return gridDoc?.value?.name || '...';\r\n });\r\n const onDeleteWidget = async (w: CCWidget) => {\r\n await gridStore.removeGridElement(w.id);\r\n };\r\n const addReportWidget = async (\r\n name: string,\r\n widgetType: WidgetTypes,\r\n r: ISavedReportResultParams | null | undefined\r\n ) => {\r\n if (!r) return;\r\n isPutting.value = false;\r\n await gridStore.addFeedElement(name, widgetType, r, { x: 0, y: 0, w: 12, h: 14 });\r\n };\r\n const updateReportWidget = async (\r\n name: string,\r\n widgetType: WidgetTypes,\r\n r: ISavedReportResultParams | null | undefined\r\n ) => {\r\n if (!r) return;\r\n isPutting.value = false;\r\n await gridStore.updateFeedElement(focusedWidget.value.id, name, widgetType, r);\r\n focusedWidget.value = null;\r\n \r\n };\r\n const handleSave = async (\r\n name: string,\r\n widgetType: WidgetTypes,\r\n r: ISavedReportResultParams | null | undefined\r\n ) => {\r\n if (focusedWidget.value) {\r\n await updateReportWidget(name, widgetType, r);\r\n } else {\r\n await addReportWidget(name, widgetType, r);\r\n }\r\n\r\n if (gridDoc.value) {\r\n const doc = gridDoc.value;\r\n await putCustomDashboard(currentDocKey.value, { name: doc.name, description: doc.description }, doc);\r\n }\r\n };\r\n const hitSave = async () => {\r\n const doc = await gridStore.commitCachedValues();\r\n await putCustomDashboard(currentDocKey.value, { name: doc.name, description: doc.description }, doc);\r\n };\r\n const focusedWidget = ref(null);\r\n const isPutting = ref(false);\r\n const onEditReportWidget = (w: CCWidget) => {\r\n isPutting.value = true;\r\n focusedWidget.value = w;\r\n };\r\n const load = async (id:string) => {\r\n const doc = await getCustomDashboardDoc(id);\r\n await gridStore.putGrid(id, doc);\r\n await gridStore.load(id);\r\n };\r\n const startCreate = () => {\r\n isPutting.value = true;\r\n focusedWidget.value = null;\r\n }\r\n return {\r\n load,\r\n addReportWidget,\r\n hitSave,\r\n isPutting,\r\n onEditReportWidget,\r\n onDeleteWidget,\r\n handleSave,\r\n focusedWidget,\r\n pageTitle,\r\n startCreate\r\n };\r\n },\r\n watch: {\r\n $route: {\r\n async handler(newRoute, oldRoute) {\r\n if (oldRoute && oldRoute.name === 'customdashboard') {\r\n await this.hitSave();\r\n }\r\n await this.load(newRoute.params.id);\r\n },\r\n immediate: true,\r\n deep: true,\r\n },\r\n },\r\n async beforeDestroy() {\r\n await this.hitSave();\r\n },\r\n});\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=5e862c7f&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { getInstance } from './index';\r\n\r\nexport const authGuard = (to, from, next) => {\r\n const auth = getInstance();\r\n\r\n const fn = () => {\r\n // If the user is authenticated, continue with the route\r\n if (auth.isAuthenticated) {\r\n return next();\r\n }\r\n\r\n // Otherwise, log in\r\n auth.loginWithRedirect({ appState: { returnTo: to.fullPath } });\r\n };\r\n\r\n // If loading has already finished, check our auth state using `fn()`\r\n if (!auth.loading) {\r\n return fn();\r\n }\r\n\r\n // Watch for the loading property to change before we check isAuthenticated\r\n auth.$watch('loading', loading => {\r\n if (loading === false) {\r\n return fn();\r\n }\r\n });\r\n};\r\n","import Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\nimport MainView from \"@/views/MainView.vue\";\r\nimport FinanceDashboard from \"@/views/FinanceDashboard.vue\";\r\nimport TrendsDashboard from \"@/views/TrendsDashboard.vue\";\r\nimport ReservationsDashboard from \"@/views/ReservationsDashboard.vue\";\r\nimport RecommendationsView from \"@/views/Recommendations.vue\";\r\nimport KubernetesDashboard from \"@/views/KubernetesDashboard.vue\";\r\nimport Passthrough from \"@/views/Passthrough.vue\";\r\n\r\nimport TagDashboardView from \"@/views/Reports/TagOverview.vue\";\r\nimport CustomersUsageView from \"@/views/Reports/CustomersUsage.vue\";\r\nimport RegionOverviewView from \"@/views/Reports/RegionOverview.vue\";\r\n\r\nimport CarbonOverview from \"@/views/CarbonFootprint/Overview.vue\";\r\nimport CarbonExplorer from \"@/views/CarbonFootprint/Explorer.vue\";\r\nimport CarbonMap from \"@/views/CarbonFootprint/Map.vue\";\r\n\r\nimport CustomersManageView from \"@/views/CustomersManage/CustomersManage.vue\";\r\nimport CustomerManageView from \"@/views/CustomersManage/CustomerManage.vue\";\r\nimport AzureEmissionsDashboard from \"@/views/AzureEmissions/Dashboard.vue\";\r\n\r\nimport Settings from \"@/views/Settings/IndexView.vue\";\r\nimport Amazon from \"@/views/Settings/AmazonView.vue\";\r\nimport Azure from \"@/views/Settings/AzureView.vue\";\r\nimport Google from \"@/views/Settings/GoogleView.vue\";\r\nimport Oracle from \"@/views/Settings/OracleView.vue\";\r\nimport Alibaba from \"@/views/Settings/AlibabaView.vue\";\r\nimport Snowflake from \"@/views/Settings/SnowflakeView.vue\";\r\nimport Custom from \"@/views/Settings/CustomView.vue\";\r\nimport Groups from \"@/views/Settings/GroupsView.vue\";\r\nimport Users from \"@/views/Settings/UsersView.vue\";\r\nimport BillingDetails from \"@/views/Settings/BillingDetailsView.vue\";\r\nimport ApiManagementView from \"@/views/Settings/ApiManagementView.vue\";\r\nimport General from \"@/views/Settings/GeneralView.vue\";\r\nconst Actions = () =>\r\n import(\r\n /* webpackChunkName: \"actions\" */ \"@/views/Settings/ActionsView.vue\"\r\n );\r\nimport FxRates from \"@/views/Settings/FxRatesView.vue\";\r\nimport TagMappings from \"@/views/Settings/TagMappings.vue\";\r\nimport MailingLists from \"@/views/Settings/MailingLists.vue\";\r\nimport Webhooks from \"@/views/Settings/WebhooksView.vue\";\r\nimport Dimensions from \"@/views/Settings/DimensionsView.vue\";\r\nimport Audit from \"@/views/Settings/AuditView.vue\";\r\n\r\nimport ChooseView from \"@/views/Auth/Choose.vue\";\r\n\r\nimport SelfServiceTenantCreate from \"@/views/SelfService/CreateTenant.vue\";\r\nimport SelfServicePlans from \"@/views/SelfService/SelectPlan.vue\";\r\nimport ResourceExplorerIndex from \"@/views/ResourceExplorer/Index.vue\";\r\n\r\nimport ServiceDialog from \"@/views/Dialog.Service/Dialog.vue\";\r\nimport ServiceDialogIndex from \"@/views/Dialog.Service/Index.vue\";\r\nimport ServiceDialogAnnotations from \"@/views/Dialog.Service/Annotations.vue\";\r\nimport ServiceDialogRecordTags from \"@/views/Dialog.Service/RecordTags.vue\";\r\nimport ServiceDialogVirtualTags from \"@/views/Dialog.Service/VirtualTags.vue\";\r\nimport ServiceDialogUsage from \"@/views/Dialog.Service/Usage.vue\";\r\nimport ServiceDialogCarbon from \"@/views/Dialog.Service/Carbon.vue\";\r\nimport ServiceDialogRawUsage from \"@/views/Dialog.Service/RawUsage.vue\";\r\n\r\nimport SubscriptionDialog from \"@/views/Dialog.Subscription/Dialog.vue\";\r\nimport SubscriptionDialogIndex from \"@/views/Dialog.Subscription/Index.vue\";\r\nimport SubscriptionDialogTrends from \"@/views/Dialog.Subscription/Trends.vue\";\r\nimport SubscriptionDialogUsage from \"@/views/Dialog.Subscription/Usage.vue\";\r\nimport SubscriptionDialogCarbon from \"@/views/Dialog.Subscription/Carbon.vue\";\r\nimport SubscriptionDialogAnnotations from \"@/views/Dialog.Subscription/Annotations.vue\";\r\nimport SubscriptionDialogVirtualTags from \"@/views/Dialog.Subscription/VirtualTags.vue\";\r\n\r\nimport ProductDialog from \"@/views/Dialog.Product/Dialog.vue\";\r\nimport ProductDialogIndex from \"@/views/Dialog.Product/Index.vue\";\r\nimport ProductDialogUsage from \"@/views/Dialog.Product/Usage.vue\";\r\nimport ProductDialogCarbon from \"@/views/Dialog.Product/Carbon.vue\";\r\nimport ProductDialogTrends from \"@/views/Dialog.Product/Trends.vue\";\r\n\r\nimport RegionDialog from \"@/views/Dialog.Region/Dialog.vue\";\r\nimport RegionDialogIndex from \"@/views/Dialog.Region/Index.vue\";\r\nimport RegionDialogUsage from \"@/views/Dialog.Region/Usage.vue\";\r\nimport RegionDialogCarbon from \"@/views/Dialog.Region/Carbon.vue\";\r\n\r\nimport ProductCategoryDialog from \"@/views/Dialog.ProductCategory/Dialog.vue\";\r\nimport ProductCategoryDialogIndex from \"@/views/Dialog.ProductCategory/Index.vue\";\r\nimport ProductCategoryDialogUsage from \"@/views/Dialog.ProductCategory/Usage.vue\";\r\n\r\nimport CloudProviderDialog from \"@/views/Dialog.CloudProvider/Dialog.vue\";\r\nimport CloudProviderDialogIndex from \"@/views/Dialog.CloudProvider/Index.vue\";\r\nimport CloudProviderDialogUsage from \"@/views/Dialog.CloudProvider/Usage.vue\";\r\n\r\nimport GeographyDialog from \"@/views/Dialog.Geography/Dialog.vue\";\r\nimport GeographyDialogIndex from \"@/views/Dialog.Geography/Index.vue\";\r\nimport GeographyDialogUsage from \"@/views/Dialog.Geography/Usage.vue\";\r\nimport GeographyDialogCarbon from \"@/views/Dialog.Geography/Carbon.vue\";\r\n\r\nimport TagDialog from \"@/views/Dialog.Tag/Dialog.vue\";\r\nimport TagDialogIndex from \"@/views/Dialog.Tag/Index.vue\";\r\nimport TagDialogUsage from \"@/views/Dialog.Tag/Usage.vue\";\r\nimport TagDialogCarbon from \"@/views/Dialog.Tag/Carbon.vue\";\r\nimport TagDialogTrends from \"@/views/Dialog.Tag/Trends.vue\";\r\n\r\nimport CloudAccountDialog from \"@/views/Dialog.CloudAccount/Dialog.vue\";\r\nimport CloudAccountDialogIndex from \"@/views/Dialog.CloudAccount/Index.vue\";\r\nimport CloudAccountDialogCopies from \"@/views/Dialog.CloudAccount/Copies.vue\";\r\nimport CloudAccountDialogAnnotations from \"@/views/Dialog.CloudAccount/Annotations.vue\";\r\nimport CloudAccountDialogUsage from \"@/views/Dialog.CloudAccount/Usage.vue\";\r\nimport CloudAccountDialogTrends from \"@/views/Dialog.CloudAccount/Trends.vue\";\r\nimport CloudAccountDialogVirtualTags from \"@/views/Dialog.CloudAccount/VirtualTags.vue\";\r\nimport CloudAccountDialogCarbon from \"@/views/Dialog.CloudAccount/Carbon.vue\";\r\n\r\nimport ReservationDialog from \"@/views/Dialog.Reservation/Dialog.vue\";\r\nimport ReservationDialogIndex from \"@/views/Dialog.Reservation/Index.vue\";\r\nimport ReservationDialogUsage from \"@/views/Dialog.Reservation/Usage.vue\";\r\n\r\nimport AWSMarketplace from '@/views/AWSMarketplace.vue';\r\n\r\nconst ActionDialog = () =>\r\n import(\r\n /* webpackChunkName: \"actions\" */ \"@/views/Dialog.Action/Dialog.vue\"\r\n );\r\nconst ActionDialogIndex = () =>\r\n import(/* webpackChunkName: \"actions\" */ \"@/views/Dialog.Action/Index.vue\");\r\nconst ActionDialogVersions = () =>\r\n import(\r\n /* webpackChunkName: \"actions\" */ \"@/views/Dialog.Action/Versions.vue\"\r\n );\r\nconst ActionDialogAccounts = () =>\r\n import(\r\n /* webpackChunkName: \"actions\" */ \"@/views/Dialog.Action/CloudAccounts.vue\"\r\n );\r\n\r\nconst ActionIndex = () =>\r\n import(/* webpackChunkName: \"actions\" */ \"@/views/Action/Index.vue\");\r\nconst ActionDevelop = () =>\r\n import(/* webpackChunkName: \"actions\" */ \"@/views/Action/Develop.vue\");\r\nconst ActionVersions = () =>\r\n import(/* webpackChunkName: \"actions\" */ \"@/views/Action/Versions.vue\");\r\nconst ActionCloudAccounts = () =>\r\n import(\r\n /* webpackChunkName: \"actions\" */ \"@/views/Action/CloudAccounts.vue\"\r\n );\r\n\r\nimport CopyCloudAccountIndex from \"@/views/CopyCloudAccount/Index.vue\";\r\nimport CopyCloudAccountChooseTenant from \"@/views/CopyCloudAccount/ChooseTenant.vue\";\r\nimport CopyCloudAccountFinish from \"@/views/CopyCloudAccount/Finish.vue\";\r\nimport CopyCloudAccountPricingRules from \"@/views/CopyCloudAccount/PricingRules.vue\";\r\nimport CopyCloudAccountTags from \"@/views/CopyCloudAccount/Tags.vue\";\r\nimport NotFound from \"@/views/NotFound.vue\";\r\n\r\nimport CustomViewDialog from \"@/views/Dialog.CustomView/Dialog.vue\";\r\nimport CustomViewDialogIndex from \"@/views/Dialog.CustomView/Index.vue\";\r\nimport CustomViewDialogUsage from \"@/views/Dialog.CustomView/Usage.vue\";\r\n\r\nimport CustomReports from \"@/views/Reports/CustomReports.vue\";\r\nimport CustomReport from \"@/views/Reports/CustomReport.vue\";\r\nimport CreateReport from \"@/views/Reports/CreateReport.vue\";\r\nimport EditReport from \"@/views/Reports/EditReport.vue\";\r\nimport CloneReport from \"@/views/Reports/CloneReport.vue\";\r\nimport CustomViews from \"@/views/CustomViews/CustomViews.vue\";\r\nimport CustomView from \"@/views/CustomViews/CustomView.vue\";\r\nimport CustomViewOverview from \"@/views/CustomViews/Overview.vue\";\r\nimport Budgets from \"@/views/Budgets/Budgets.vue\";\r\nimport BudgetDetails from \"@/views/Budgets/BudgetDetails.vue\";\r\n\r\nimport GptChats from \"@/views/Intelligence/GptChats.vue\";\r\nimport GettingStarted from \"@/views/GettingStarted.vue\";\r\n\r\nimport WatchdogDashboard from \"@/views/Watchdog/Index.vue\";\r\nimport WatchdogViewPolicy from \"@/views/Watchdog/ViewPolicy.vue\";\r\nimport WatchdogViewPolicyRun from \"@/views/Watchdog/ViewPolicyRun.vue\";\r\nimport WatchdogNewPolicy from \"@/views/Watchdog/NewPolicy.vue\";\r\n\r\nimport CustomDashboardsIndex from \"@/views/CustomDashboards/Index.vue\";\r\nimport CustomDashboardsDashboard from \"@/views/CustomDashboards/Dashboard.vue\";\r\n\r\nimport EventBus from \"@/lib/EventBus\";\r\nimport AuthClient from \"@/lib/Auth\";\r\nimport Config from \"@/lib/Config\";\r\n\r\nimport { getInstance } from '@/plugins/auth';\r\nimport { getUserPreferences } from \"@/lib/UserPreferences\";\r\nimport { authGuard } from '@/plugins/auth/authGuard';\r\n\r\nVue.use(VueRouter);\r\n\r\nexport const PATH_RESOURCES = {\r\n names: {\r\n confirm: \"confirm\",\r\n logout: \"logout\",\r\n settings: \"settings\",\r\n choose: \"choose\",\r\n dash: \"dash\",\r\n trends: \"trends\",\r\n groups: \"groups\",\r\n reservations: \"reservations\",\r\n customersUsageDashboard: \"customersUsageDashboard\",\r\n customersManage: \"customersManage\",\r\n customerManage: \"customerManage\",\r\n createEditSharedData: \"createEditSharedData\",\r\n recommendations: \"recommendations\",\r\n tagoverview: \"tagoverview\",\r\n regionoverview: \"regionoverview\",\r\n copyCloudAccount: \"copy-cloudaccount\",\r\n billingdetails: \"billingdetails\",\r\n powerBiReport: \"powerbireport\",\r\n cloudAccounts: \"cloudaccounts\",\r\n users: \"users\",\r\n tenants: \"tenants\",\r\n actions: \"actions\",\r\n fxrates: \"fxrates\",\r\n resources: \"resources\",\r\n ApiManagement: \"apiManagement\",\r\n createTenant: \"create-tenant\",\r\n reports: \"reports\",\r\n selfServiceCreate: \"selfservice-create\",\r\n selfServicePlans: \"selfservice-plans\",\r\n },\r\n};\r\n\r\nconst serviceDialogChildRoutes = [\r\n {\r\n path: \"\",\r\n component: Passthrough,\r\n },\r\n {\r\n path: \":serviceId\",\r\n component: ServiceDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n {\r\n path: \"usage\",\r\n component: ServiceDialogUsage,\r\n },\r\n { path: \"annotations\", component: ServiceDialogAnnotations },\r\n { path: \"tags\", component: ServiceDialogRecordTags },\r\n { path: \"virtualtags\", component: ServiceDialogVirtualTags },\r\n { path: \"raw\", component: ServiceDialogRawUsage },\r\n { path: \"carbon\", component: ServiceDialogCarbon },\r\n ],\r\n },\r\n];\r\n\r\nconst subscriptionDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":subscriptionId\",\r\n component: SubscriptionDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: SubscriptionDialogUsage },\r\n { path: \"carbon\", component: SubscriptionDialogCarbon },\r\n { path: \"trends\", component: SubscriptionDialogTrends },\r\n { path: \"annotations\", component: SubscriptionDialogAnnotations },\r\n { path: \"virtualtags\", component: SubscriptionDialogVirtualTags },\r\n ],\r\n },\r\n];\r\n\r\nconst cloudProviderDialogChildRoutes = [\r\n {\r\n path: \"\",\r\n component: Passthrough,\r\n },\r\n {\r\n path: \":cloudProviderId\",\r\n component: CloudProviderDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: CloudProviderDialogUsage },\r\n ],\r\n },\r\n];\r\n\r\nconst cloudAccountDialogChildRoutes = [\r\n {\r\n path: \"\",\r\n component: CloudAccountDialog,\r\n children: [\r\n {\r\n path: \":cloudAccountId\",\r\n component: CloudAccountDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: CloudAccountDialogUsage },\r\n { path: \"trends\", component: CloudAccountDialogTrends },\r\n { path: \"copies\", component: CloudAccountDialogCopies },\r\n {\r\n path: \"annotations\",\r\n component: CloudAccountDialogAnnotations,\r\n },\r\n {\r\n path: \"virtualtags\",\r\n component: CloudAccountDialogVirtualTags,\r\n },\r\n { path: \"carbon\", component: CloudAccountDialogCarbon },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n\r\nconst actionDialogChildRoutes = [\r\n {\r\n path: \"\",\r\n component: ActionDialog,\r\n children: [\r\n {\r\n path: \":actionId\",\r\n component: ActionDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"versions\" },\r\n { path: \"versions\", component: ActionDialogVersions },\r\n { path: \"accounts\", component: ActionDialogAccounts },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n\r\nconst productDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":productId\",\r\n component: ProductDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: ProductDialogUsage },\r\n { path: \"carbon\", component: ProductDialogCarbon },\r\n { path: \"trends\", component: ProductDialogTrends },\r\n ],\r\n },\r\n];\r\n\r\nconst reservationDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":reservationId\",\r\n component: ReservationDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: ReservationDialogUsage },\r\n ],\r\n },\r\n];\r\n\r\nconst customViewDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":customViewId\",\r\n component: CustomViewDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: CustomViewDialogUsage },\r\n ],\r\n },\r\n];\r\n\r\nconst regionDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":regionId\",\r\n component: RegionDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: RegionDialogUsage },\r\n { path: \"carbon\", component: RegionDialogCarbon },\r\n ],\r\n },\r\n];\r\n\r\nconst geographyDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":geographyId\",\r\n component: GeographyDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: GeographyDialogUsage },\r\n { path: \"carbon\", component: GeographyDialogCarbon },\r\n ],\r\n },\r\n];\r\n\r\nconst productCategoryDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \":productCategoryId\",\r\n component: ProductCategoryDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: ProductCategoryDialogUsage },\r\n ],\r\n },\r\n];\r\n\r\nconst tagDialogChildRoutes = [\r\n { path: \"\", component: Passthrough },\r\n {\r\n path: \"tag/:tagId\",\r\n component: TagDialogIndex,\r\n children: [\r\n { path: \"\", redirect: \"usage\" },\r\n { path: \"usage\", component: TagDialogUsage },\r\n { path: \"carbon\", component: TagDialogCarbon },\r\n { path: \"trends\", component: TagDialogTrends },\r\n ],\r\n },\r\n];\r\n\r\nconst copyCloudAccountChildRoutes = [\r\n { path: \"\", redirect: \"chooseTenant\" },\r\n {\r\n path: \"chooseTenant\",\r\n component: CopyCloudAccountChooseTenant,\r\n meta: { step: 1 },\r\n },\r\n {\r\n path: \"pricingRules\",\r\n component: CopyCloudAccountPricingRules,\r\n meta: { step: 2 },\r\n },\r\n { path: \"tags\", component: CopyCloudAccountTags, meta: { step: 3 } },\r\n { path: \"finish\", component: CopyCloudAccountFinish, meta: { step: 4 } },\r\n];\r\n\r\nconst standardEntityDialogSuffixes = [\r\n {\r\n path: \"services\",\r\n component: ServiceDialog,\r\n children: serviceDialogChildRoutes,\r\n },\r\n {\r\n path: \"subscriptions\",\r\n component: SubscriptionDialog,\r\n children: subscriptionDialogChildRoutes,\r\n },\r\n {\r\n path: \"cloudaccounts\",\r\n component: CloudAccountDialog,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"cloudproviders\",\r\n component: CloudProviderDialog,\r\n children: cloudProviderDialogChildRoutes,\r\n },\r\n {\r\n path: \"products\",\r\n component: ProductDialog,\r\n children: productDialogChildRoutes,\r\n },\r\n {\r\n path: \"regions\",\r\n component: RegionDialog,\r\n children: regionDialogChildRoutes,\r\n },\r\n {\r\n path: \"geographies\",\r\n component: GeographyDialog,\r\n children: geographyDialogChildRoutes,\r\n },\r\n {\r\n path: \"tagkeys/:tagkey\",\r\n component: TagDialog,\r\n children: tagDialogChildRoutes,\r\n },\r\n {\r\n path: \"productcategories\",\r\n component: ProductCategoryDialog,\r\n children: productCategoryDialogChildRoutes,\r\n },\r\n {\r\n path: \"customviews\",\r\n component: CustomViewDialog,\r\n children: customViewDialogChildRoutes,\r\n },\r\n {\r\n path: \"reservation\",\r\n component: ReservationDialog,\r\n children: reservationDialogChildRoutes,\r\n },\r\n];\r\n\r\nconst mainViewChildren = [\r\n {\r\n path: \"\",\r\n redirect: Config.isFeatureEnabled(\"Dataset.Usage\")\r\n ? \"finance\"\r\n : \"emissions/overview\",\r\n },\r\n {\r\n path: \"overview\",\r\n redirect: Config.isFeatureEnabled(\"Dataset.Usage\")\r\n ? \"finance\"\r\n : \"emissions/overview\",\r\n },\r\n { path: \"dashboarding\", component: CustomDashboardsIndex },\r\n {\r\n path: \"dashboarding/:id\",\r\n name: \"customdashboard\",\r\n component: CustomDashboardsDashboard,\r\n },\r\n {\r\n path: \"finance\",\r\n name: PATH_RESOURCES.names.dash,\r\n component: FinanceDashboard,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"emissions/overview\",\r\n name: \"emissions\",\r\n component: CarbonOverview,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"emissions/explore\",\r\n name: \"emissionsexplore\",\r\n component: CarbonExplorer,\r\n children: [\r\n {\r\n path: \"\",\r\n beforeEnter: async (to, from, next) => {\r\n const userPreferences = await getUserPreferences();\r\n\r\n let lastTab = userPreferences?.starredCostExplorerTab ||\r\n userPreferences?.costExplorerTab ||\r\n \"products\";\r\n if (\r\n lastTab === \"productcategories\" ||\r\n lastTab === \"cloudproviders\"\r\n ) {\r\n lastTab = \"products\";\r\n }\r\n next({ path: `/emissions/explore/${lastTab}` });\r\n },\r\n },\r\n ...standardEntityDialogSuffixes,\r\n {\r\n path: \"*\",\r\n redirect: \"products\",\r\n },\r\n ],\r\n },\r\n {\r\n path: \"emissions/map\",\r\n name: \"emissionsmap\",\r\n component: CarbonMap,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"trends\",\r\n name: PATH_RESOURCES.names.trends,\r\n component: TrendsDashboard,\r\n children: [\r\n { path: \"/\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"budgets\",\r\n component: Budgets,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"budgets/details/:id\",\r\n component: BudgetDetails,\r\n },\r\n {\r\n path: \"watchdog\",\r\n component: WatchdogDashboard,\r\n },\r\n {\r\n path: \"watchdog/:id\",\r\n component: WatchdogViewPolicy,\r\n },\r\n {\r\n path: \"watchdog/:id/edit\",\r\n component: WatchdogNewPolicy,\r\n },\r\n {\r\n path: \"watchdog/:id/run/:rid\",\r\n component: WatchdogViewPolicyRun,\r\n },\r\n {\r\n path: \"new/watchdog\",\r\n component: WatchdogNewPolicy,\r\n },\r\n {\r\n path: \"kubernetes\",\r\n component: KubernetesDashboard,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"reservations\",\r\n name: PATH_RESOURCES.names.reservations,\r\n component: ReservationsDashboard,\r\n children: [\r\n {\r\n path: \"\",\r\n component: ReservationDialog,\r\n children: [...reservationDialogChildRoutes],\r\n },\r\n ],\r\n },\r\n {\r\n path: \"custom/reports\",\r\n name: \"customreports\",\r\n component: CustomReports,\r\n },\r\n {\r\n path: \"create/custom/reports\",\r\n component: CreateReport,\r\n },\r\n {\r\n path: \"edit/custom/reports/:id\",\r\n component: EditReport,\r\n },\r\n {\r\n path: \"clone/custom/reports/:id\",\r\n component: CloneReport,\r\n },\r\n {\r\n path: \"custom/reports/:id\",\r\n name: \"customreport\",\r\n component: CustomReport,\r\n children: [\r\n { path: \"\", component: Passthrough },\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"copies/usage\",\r\n redirect: \"customers/usage\",\r\n },\r\n {\r\n path: \"azureemissions\",\r\n name: \"azureemissions\",\r\n component: AzureEmissionsDashboard\r\n },\r\n {\r\n path: \"customers/usage\",\r\n name: PATH_RESOURCES.names.customersUsageDashboard,\r\n component: CustomersUsageView,\r\n },\r\n {\r\n path: \"customers/manage\",\r\n name: PATH_RESOURCES.names.customersManage,\r\n component: CustomersManageView,\r\n },\r\n {\r\n path: \"customers/manage/:id\",\r\n name: PATH_RESOURCES.names.customerManage,\r\n component: CustomerManageView,\r\n },\r\n {\r\n path: \"customers/manage/:tenantId/shareddata\",\r\n name: PATH_RESOURCES.names.createEditSharedData,\r\n component: CopyCloudAccountIndex,\r\n children: copyCloudAccountChildRoutes,\r\n },\r\n {\r\n path: \"recommendations\",\r\n name: PATH_RESOURCES.names.recommendations,\r\n component: RecommendationsView,\r\n },\r\n {\r\n path: \"tagoverview\",\r\n name: PATH_RESOURCES.names.tagoverview,\r\n component: TagDashboardView,\r\n children: [\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"regionoverview\",\r\n name: PATH_RESOURCES.names.regionoverview,\r\n component: RegionOverviewView,\r\n children: [\r\n ...standardEntityDialogSuffixes,\r\n ],\r\n },\r\n {\r\n path: \"getting-started\",\r\n name: \"gettingstarted\",\r\n component: GettingStarted,\r\n },\r\n {\r\n path: \"cloud-intelligence\",\r\n name: \"gptChats\",\r\n component: GptChats,\r\n meta: { hideMain: true },\r\n },\r\n {\r\n path: \"copy/cloudaccounts/:cloudAccountId\",\r\n name: PATH_RESOURCES.names.copyCloudAccount,\r\n component: CopyCloudAccountIndex,\r\n children: copyCloudAccountChildRoutes,\r\n },\r\n {\r\n path: \"actions/:actionId\",\r\n name: \"actionDetails\",\r\n component: ActionIndex,\r\n children: [\r\n { path: \"\", redirect: \"develop\" },\r\n { path: \"develop\", component: ActionDevelop },\r\n { path: \"accounts\", component: ActionCloudAccounts },\r\n { path: \"versions\", component: ActionVersions },\r\n ],\r\n },\r\n {\r\n path: \"customviews\",\r\n name: \"customViews\",\r\n component: CustomViews,\r\n },\r\n {\r\n path: \"customviews/:id\",\r\n name: \"customview\",\r\n component: CustomView,\r\n children: [\r\n { path: \"\", redirect: \"overview\" },\r\n { path: \"overview\", component: CustomViewOverview },\r\n { path: \"usage\", component: CustomViewDialogUsage },\r\n ],\r\n },\r\n {\r\n path: \"settings\",\r\n name: PATH_RESOURCES.names.settings,\r\n component: Settings,\r\n children: [\r\n { path: \"\", redirect: \"general\" },\r\n {\r\n path: \"amazon\",\r\n component: Amazon,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"azure\",\r\n component: Azure,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"google\",\r\n component: Google,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"oracle\",\r\n component: Oracle,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"alibaba\",\r\n component: Alibaba,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"snowflake\",\r\n component: Snowflake,\r\n children: cloudAccountDialogChildRoutes,\r\n },\r\n {\r\n path: \"custom\",\r\n component: Custom,\r\n },\r\n {\r\n path: \"users\",\r\n name: PATH_RESOURCES.names.users,\r\n component: Users,\r\n },\r\n {\r\n path: \"groups\",\r\n name: PATH_RESOURCES.names.groups,\r\n component: Groups\r\n },\r\n {\r\n path: \"billing\",\r\n name: PATH_RESOURCES.names.billingdetails,\r\n component: BillingDetails,\r\n },\r\n {\r\n path: \"apimanagement\",\r\n name: PATH_RESOURCES.names.ApiManagement,\r\n component: ApiManagementView,\r\n },\r\n {\r\n path: \"general\",\r\n name: PATH_RESOURCES.names.tenants,\r\n component: General,\r\n },\r\n {\r\n path: \"actions\",\r\n name: PATH_RESOURCES.names.actions,\r\n component: Actions,\r\n children: actionDialogChildRoutes,\r\n },\r\n {\r\n path: \"fxrates\",\r\n name: PATH_RESOURCES.names.fxrates,\r\n component: FxRates,\r\n },\r\n {\r\n path: \"tagmappings\",\r\n name: \"tagmappings\",\r\n component: TagMappings,\r\n },\r\n {\r\n path: \"mailinglists\",\r\n name: \"mailinglists\",\r\n component: MailingLists,\r\n },\r\n {\r\n path: \"webhooks\",\r\n name: \"webhooks\",\r\n component: Webhooks,\r\n },\r\n {\r\n path: \"dimensions\",\r\n name: \"dimensions\",\r\n component: Dimensions,\r\n },\r\n {\r\n path: \"audit\",\r\n name: \"audit\",\r\n component: Audit,\r\n }\r\n ],\r\n },\r\n {\r\n path: \"resources\",\r\n redirect: \"explore\",\r\n },\r\n {\r\n path: \"services\",\r\n redirect: \"/explore/services\",\r\n },\r\n {\r\n path: \"explore\",\r\n name: \"explore\",\r\n component: ResourceExplorerIndex,\r\n children: [\r\n {\r\n path: \"\",\r\n beforeEnter: async (to, from, next) => {\r\n const userPreferences = await getUserPreferences();\r\n const lastTab = userPreferences?.starredCostExplorerTab ||\r\n userPreferences?.costExplorerTab ||\r\n \"products\";\r\n next({ path: `/explore/${lastTab}` });\r\n },\r\n },\r\n ...standardEntityDialogSuffixes,\r\n {\r\n path: \"tagkeys/:tag/key\",\r\n component: Passthrough,\r\n },\r\n {\r\n path: \"*\",\r\n redirect: \"products\",\r\n },\r\n ],\r\n },\r\n {\r\n path: \"404\",\r\n name: \"Error404\",\r\n component: NotFound,\r\n meta: { allowNoTenant: true },\r\n },\r\n];\r\n\r\nconst router = new VueRouter({\r\n mode: \"history\",\r\n base: process.env.BASE_URL,\r\n routes: [\r\n {\r\n path: \"/login\",\r\n name: \"login\",\r\n meta: { allowNoTenant: true, allowAnonymous: true },\r\n async beforeEnter(to, from, next) {\r\n const auth = getInstance();\r\n await auth.loginWithRedirect({\r\n provider: ''\r\n });\r\n },\r\n },\r\n {\r\n path: \"/register\",\r\n redirect: \"/login\",\r\n meta: { allowNoTenant: true, allowAnonymous: true },\r\n },\r\n {\r\n path: \"/logout\",\r\n name: PATH_RESOURCES.names.logout,\r\n meta: { allowNoTenant: true, allowAnonymous: true },\r\n async beforeEnter(to, from, next) {\r\n const auth = getInstance();\r\n EventBus.$emit(\"$identity.authenticated\", false);\r\n await auth.logoutWithRedirect();\r\n next(\"/\");\r\n },\r\n },\r\n {\r\n path: \"/choose\",\r\n name: PATH_RESOURCES.names.choose,\r\n component: ChooseView,\r\n meta: { allowNoTenant: true },\r\n },\r\n {\r\n path: \"/selfservice/create\",\r\n name: PATH_RESOURCES.names.selfServiceCreate,\r\n component: SelfServiceTenantCreate,\r\n meta: { allowNoTenant: true },\r\n async beforeEnter(to, from, next) {\r\n if (!Config.isSelfServiceEnabled()) {\r\n next(\"/\");\r\n } else {\r\n next();\r\n }\r\n },\r\n },\r\n {\r\n path: \"/awsmarketplace\",\r\n component: AWSMarketplace,\r\n meta: { allowNoTenant: true, allowAnonymous: true },\r\n },\r\n {\r\n path: \"/selfservice/plans\",\r\n name: PATH_RESOURCES.names.selfServicePlans,\r\n component: SelfServicePlans,\r\n },\r\n {\r\n path: \"/\",\r\n component: MainView,\r\n children: mainViewChildren,\r\n },\r\n {\r\n path: \"/:baseTenantId\",\r\n component: MainView,\r\n children: mainViewChildren,\r\n },\r\n {\r\n path: \"*\",\r\n redirect: \"/404\",\r\n },\r\n ],\r\n});\r\n\r\nfunction uuidValidate(uuid:string):boolean {\r\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(uuid);\r\n}\r\n\r\nrouter.beforeEach(async (to, from, next) => {\r\n if (to.matched.some((r) => r.path === \"/404\")) {\r\n // todo: log 404 somewhere\r\n }\r\n\r\n // Apply the tenant Id in the path\r\n if (to.params.baseTenantId) {\r\n // if it is not valid force move to root\r\n if (uuidValidate(to.params.baseTenantId)) {\r\n AuthClient.tenantId = to.params.baseTenantId;\r\n } else {\r\n next(\"/\");\r\n return;\r\n }\r\n } else if (\r\n to.meta?.allowNoTenant !== true && AuthClient.tenantId &&\r\n !to.fullPath.includes(AuthClient.tenantId)\r\n ) {\r\n next(`/${AuthClient.tenantId}${to.fullPath}`);\r\n return;\r\n }\r\n\r\n\r\n // Check for tenant context first, even if unauthenticated as next block will then force login.\r\n if (!AuthClient.tenantId && to.meta?.allowNoTenant !== true) {\r\n next(\"/choose\");\r\n return;\r\n }\r\n\r\n if (to.meta?.allowAnonymous !== true) {\r\n authGuard(to, from, next);\r\n return;\r\n }\r\n\r\n next();\r\n return;\r\n});\r\nexport default router;\r\n","import Vue from 'vue';\r\nimport Config from '@/lib/Config';\r\nimport router from '@/plugins/router';\r\nimport { v4 } from 'uuid';\r\nimport { ApplicationInsights, IConfiguration, IConfig } from '@microsoft/applicationinsights-web';\r\n\r\nlet correlationId: string;\r\n\r\nfunction nextCorrelationId() {\r\n correlationId = v4();\r\n}\r\n\r\nconst appInsightsKey = Config.get().APP_INSIGHTS_KEY;\r\nlet appInsights: ApplicationInsights;\r\n\r\nif (appInsightsKey) {\r\n const appInsightsConfig: IConfiguration & IConfig = {\r\n instrumentationKey: appInsightsKey,\r\n disableFetchTracking: false,\r\n enableCorsCorrelation: true,\r\n enableAutoRouteTracking: true,\r\n correlationHeaderExcludedDomains: ['cloudctrl.au.auth0.com', 'auth.cloudctrl.com.au', 'fonts.googleapis.com', 'spendmanager.au.auth0.com']\r\n };\r\n const telemetryInitializer = envelope => {\r\n envelope.data.cloudCtrlCorrelationId = correlationId;\r\n };\r\n appInsights = new ApplicationInsights({ config: appInsightsConfig });\r\n appInsights.loadAppInsights();\r\n appInsights.addTelemetryInitializer(telemetryInitializer);\r\n}\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n nextCorrelationId();\r\n next();\r\n});\r\n\r\nexport default router;\r\n","/* tslint:disable:no-console */\r\n\r\nimport { register } from 'register-service-worker';\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready() {\r\n console.log(\r\n 'App is being served from cache by a service worker.\\n' +\r\n 'For more details, visit https://goo.gl/AFskqB',\r\n );\r\n },\r\n registered() {\r\n console.log('Service worker has been registered.');\r\n },\r\n cached() {\r\n console.log('Content has been cached for offline use.');\r\n },\r\n updatefound() {\r\n console.log('New content is downloading.');\r\n },\r\n updated() {\r\n console.log('New content is available; please refresh.');\r\n },\r\n offline() {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n },\r\n error(error) {\r\n console.error('Error during service worker registration:', error);\r\n },\r\n });\r\n}\r\n","import Vue from 'vue';\r\nimport App from '@/App.vue';\r\nimport Config from '@/lib/Config';\r\nimport '@/plugins/vuetify';\r\nimport '@/plugins/highcharts';\r\nimport '@/plugins/currency';\r\nimport '@/plugins/dateFormatting';\r\nimport '@/plugins/common';\r\nimport '@/plugins/directives';\r\nimport router from '@/plugins/router';\r\nimport '@/plugins/tracking';\r\nimport { AuthPlugin } from '@/plugins/auth';\r\n\r\nimport ValidationModule from '@/plugins/validation';\r\nimport '@/registerServiceWorker';\r\nimport vuetify from '@/plugins/vuetify';\r\nimport '@/scss/main.scss';\r\nimport VueWait from 'vue-wait';\r\nimport Vuelidate from 'vuelidate';\r\nimport { i18n } from '@/i18n';\r\nimport VuePageTitle from 'vue-page-title';\r\nimport { Plugin as VueFragment } from 'vue-fragment';\r\nimport VueTruncate from 'vue-truncate-filter';\r\nimport { createPinia, PiniaVuePlugin } from 'pinia';\r\nimport piniaPluginPersistedState from \"pinia-plugin-persistedstate\"\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.use(AuthPlugin, {\r\n onRedirectCallback: async (redirectUrl) => {\r\n await router.push(redirectUrl ? redirectUrl : window.location.pathname);\r\n }\r\n});\r\nVue.use(Vuelidate);\r\nVue.use(VueWait);\r\nVue.use(VueFragment);\r\nVue.use(ValidationModule);\r\nVue.use(VuePageTitle, { router, suffix: `- ${Config.get().APP_NAME}` });\r\nVue.use(VueTruncate);\r\nVue.use(PiniaVuePlugin);\r\nconst pinia = createPinia();\r\npinia.use(piniaPluginPersistedState);\r\n\r\nnew Vue({\r\n router,\r\n vuetify,\r\n i18n,\r\n render: h => h(App),\r\n wait: new VueWait(),\r\n pinia\r\n}).$mount('#app');\r\n\r\n","import Vue from \"vue\";\r\nimport VueWait from \"vue-wait\";\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n//@ts-ignore\r\nimport { waitFor, } from \"vue-wait\";\r\nVue.use(VueWait);\r\n\r\nconst START_EVENT = 'start';\r\nconst STOP_EVENT = 'stop';\r\nVue.directive('wait-while', {\r\n bind(_, binding, vnode: any) {\r\n const instance = vnode.context.__$waitInstance;\r\n vnode.child.$on(START_EVENT, () => instance.start(binding.value));\r\n vnode.child.$on(STOP_EVENT, () => instance.end(binding.value));\r\n },\r\n update(_, binding, vnode: any) {\r\n const instance = vnode.context.__$waitInstance;\r\n if (vnode.data?.props) {\r\n vnode.data.props['loading'] = instance.is(binding.value);\r\n }\r\n }\r\n});\r\n\r\nexport const startStop = (emit: (event: string) => void, func: any, forceSync = false): any => {\r\n if (typeof func !== 'function') {\r\n return func;\r\n }\r\n if (forceSync === true) {\r\n return (...args: any[]) => {\r\n try {\r\n emit(START_EVENT);\r\n return func.apply(this as any, args);\r\n } finally {\r\n emit(STOP_EVENT);\r\n }\r\n };\r\n }\r\n return async (...args: any[]) => {\r\n try {\r\n emit(START_EVENT);\r\n return await func.apply(this, args);\r\n } finally {\r\n emit(STOP_EVENT);\r\n }\r\n };\r\n};\r\n\r\nexport const wait = new VueWait();\r\n\r\ntype AsyncWaitFunction = (...args: any) => Promise;\r\ntype WaitFunction = (...args: any) => any;\r\nexport const compositionWaitFor = (bindTo:any, waiter: string, callback: T): T => {\r\n return (waitFor.bind(bindTo))(waiter, callback);\r\n};\r\nexport const compositionWaitIs = (bindTo:any, key:string):boolean => {\r\n return false;\r\n}\r\n\r\nexport { waitFor };\r\n","export const evaluate = (text) => {\r\n const module = {}; // Create a local module object\r\n return eval(text); // Execute the text\r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + (chunkId === 107 ? \"actions\" : chunkId) + \".\" + {\"15\":\"f0cd4e04\",\"107\":\"df26edcd\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"cloudctrl:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcloudctrl\"] = self[\"webpackChunkcloudctrl\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(98994); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["module","exports","Component","options","__i18n","push","_Ctor","attrs","type","_vm","form","block","_v","staticRenderFns","props","href","clear","default","valid","color","outlined","version","data","loading","methods","component","render","value","headers","timeout","model","show","expression","toastError","EventBus","toastSuccess","toastInfo","text","created","this","onError","onSuccess","onInfo","destroyed","activeTab","callback","key","_c","staticClass","on","testJson","resultJson","_self","style","noop","name","diffEditor","Boolean","width","String","Number","height","original","language","theme","Object","editorMounted","Function","editorBeforeMount","watch","deep","handler","editor","updateOptions","_getValue","_setValue","modified","getModel","monaco","$nextTick","layout","computed","test","mounted","initMonaco","beforeDestroy","dispose","assign","_editorBeforeMount","$el","_setModel","_editorMounted","_getEditor","modifiedEditor","originalModel","modifiedModel","setModel","setValue","getValue","onDidUpdateDiff","event","_emitChange","onDidChangeModelContent","$emit","DEFAULT_SCRIPT_TEXT","DEFAULT_SCRIPT_TEST_JSON","DEFAULT_VS_OPTIONS","readonly","automaticLayout","defineComponent","components","MonacoEditor","setup","docsUrl","Config","DOCS_URL","ref","scriptOptions","testJsonOptions","resultOptions","readOnly","runTest","async","inputs","vm","factory","Promise","resolve","reject","beforeTransform","context","err","newRecords","record","records","newRecord","transformRecord","lastly","afterTransform","lastRecords","JSON","stringify","title","subtitle","scopedSlots","fn","actionBindings","isValid","knownScriptTypes","knownDeliveryTypes","actionName","scriptText","DEFAULT_SCRIPT_NAME","KNOWN_SCRIPT_TYPES","id","disabled","KNOWN_DELIVERY_TYPES","FlowType","DeliveryType","ActionScriptInput","init","actionType","importUsageTransformation","deliveryType","script","priceStreamRules","formData","val","immediate","config","ApiV2Client","anonymous","instance","axios","baseURL","API_2_URL","axiosRetry","retryDelay","retries","API_MAX_RETRY_COUNT","http","interceptors","request","use","token","Vue","cfg","Authorization","AuthClient","error","response","status","tenantId","localStorage","getItem","setItem","removeItem","isTenantSelected","isAuthenticated","user","email","userEmail","ConfigClient","get","window","$cloudctrl","isFeatureEnabled","featureName","FEATURES","includes","isSelfServiceEnabled","isChineseJurisdiction","isAnnotationEnabled","isMainSite","document","domain","isDeprecationNoticeEnabled","getCognitoCredentials","UserPoolId","COGNITO_USERPOOLID","ClientId","COGNITO_CLIENTID","CognitoUrl","COGNITO_DOMAIN","AzureIDPName","COGNITO_AZUREIDP","eventBus","showChineseFooter","staticStyle","Toast","dialog","Vuetify","DEFAULT_THEME","customThemes","darkThemePreference","dark","matchMedia","matches","documentElement","setProperty","icons","iconfont","proj4","fillFactory","Highcharts","HighchartsMapModule","HighchartsCustomWorld","HighchartsVue","formatCurrency","code","isNaN","toLocaleString","undefined","currency","CurrencyService","currencies","Api","then","c","getAllCurrencies","r","map","all","symbolIndex","findIndex","symbol","dayjs","calendar","local","sameElse","format","logoImageSrc","route","navigateToStep","handleClick","titleIcon","caption","_e","light","CardBase","_u","_l","keys","$scopedSlots","slot","scope","_t","chart","constructorType","close","entityType","formId","$event","entityName","warningText","checkToDelete","$t","nameConfirmation","checkToDeleteRules","nameConfirmationRules","v","resourceApi","delete","entityToDelete","DeleteEntityCard","DeleteEntityButton","getEntities","_s","message","proxy","preventDefault","resetValidation","UniqueIdentifier","static","replace","Math","random","toString","SpendFieldNames","Granularity","lazyValidation","FormCardActions","FormCardTitle","reset","open","fullscreen","toolbarColor","toggleDrawer","$router","flipIcon","icon","sheetColor","extended","extensionHeight","hideNavbtn","small","backTo","backToText","sticky","needsFilters","toggleFiltersDrawer","isJsonPatch","description","iconColor","right","compare","upGood","left","iconValue","prependIcon","hideDetails","dense","flat","multiple","chips","filled","rules","handleInput","searchText","queryEntitiesWithCurrentQuery","disableSaveCustomView","createDummyEntity","isCreating","item","CloudProviderType","EntityType","PluralEntityType","toPlural","cloudAccount","cloudAccounts","cloudProvider","cloudProviders","service","services","subscription","subscriptions","tag","tags","tagKey","tagKeys","region","regions","product","products","productCategory","productCategories","geography","geographies","meter","meters","fromPlural","Array","isArray","t","CloudAccountType","CloudCredentialType","RawUsageFields","BudgetType","BudgetPeriod","SpendUsageTableConstants","consumptionKeySuffix","slotDateFormat","CostView","utc","advancedFormat","granularityForDateRange","range","length","dayDifference","moment","diff","DateKey","constructor","granularity","total","isCustom","endsWith","substring","getEffectiveDateRange","fromDate","toDate","toDateMoment","filter","relativeFrom","add","endDate","endOf","startDate","startOf","unique","index","self","indexOf","appendValueToCommaString","inputArray","separator","split","concat","join","generateSpendUsageOptionsFromReport","dateKey","dateRangeKey","Date","dates","p","topXResults","savedViewId","forecastRangeKey","subscriptionIds","serviceIds","cloudAccountIds","productIds","regionNames","geographyNames","filters","forEach","i","productId","cloudAccountId","serviceId","regionName","geographyName","tagKeyValue","providerType","segregatedBy","segregateBy","generateSpendParametersFromReport","toISOString","topBy","tagKeyValues","reservationId","customView","$wait","is","bindings","directives","rawName","handleSuccessfulCreation","_setup","filterTypes","convert","m","Id","Name","createEntity","Description","Provider","Type","EntityIndex","sysProductIds","sysServiceIds","cloudProviderTypes","createFilters","currentFilters","array","elementInArray","find","element","removeFilter","getCloudAccounts","getSubscriptions","subscriptionId","getProducts","getServices","getRegions","getGeographies","getProductCategories","getProviderTypes","cloudProviderType","values","getTagKeyValues","getTagKeys","existingTag","allFilterTypes","shouldHaveCloudAccountFilters","shouldHaveSubscriptionFilters","shouldHaveProductFilters","shouldHaveServiceFilters","shouldHaveRegionFilters","shouldHaveGeographyFilters","shouldHaveProductCategoryFilters","shouldHaveProviderTypeFilters","providerTypes","shouldHaveTagFilters","shouldHaveTagKeyFilters","newVal","oldVal","displayFilterTypes","CustomViewCard","_g","_b","$props","$listeners","CustomViewCardDialog","PostCustomViewButton","customViewName","stringToUint","string","blob","stringToBlob","blobToUint8Array","Blob","reader","FileReader","onload","Uint8Array","target","result","onerror","readAsArrayBuffer","blobToString","readAsText","getUsage","params","ApiV2","toLowerCase","getSpend","fields","getForecast","forecastDuration","forecastUnit","match","unit","parseInt","Models","monthsToAdd","ceil","daysToAdd","catch","console","maxUsageDate","forecasts","reduce","max","usageDate","getNativeCO2e","groupings","g","kwH","getCO2e","getForecastCO2e","getTagUsage","min","dimensions","getAllTagKeys","getTrends","getTrendsSummary","getCustomerSummary","getMissingCo2eReport","getSavedReports","getSavedReport","getCustomViews","getCustomView","getApiKeys","getAllTagMappings","deleteTagMapping","updateTagMapping","createTagMapping","reorderTagMappings","models","getAllSpendLimits","getAllBudgets","getCustomViewBudgets","getBudget","createPolicy","policyModel","putPolicy","listPolicies","listAllResults","getPolicy","listPolicyResults","getPolicySummary","listDimensions","getAllTenantWebhookNames","getWebhooks","getMailingLists","getWebhook","createMailingList","body","putMailingList","getMailingList","getPolicyResultUrl","policyId","resultId","deliverSavedReport","reportId","emails","mailingListId","mailingList","listCustomDashboards","createCustomDashboard","doc","docString","docBinary","file","FormData","append","putCustomDashboard","putResponse","getCustomDashboardDoc","responseType","uint8Array","parse","enableDimension","dimensionKey","disableDimension","pinDimension","unpinDimension","convertToViewModel","e","provider","entityIndex","convertToSpendUsageOptions","cv","types","label","autofocus","solo","soloInverted","searchPrefix","supportCreate","selection","set","items","spendUsageOptions","PostCustomViewDialog","autoCompleteId","create","toAdd","x","old","queryEntities","queryString","page","pageSize","start","searchParams","URLSearchParams","searchQuery","searchItems","ids","Set","d","has","end","handleSaveCustomView","loadReports","waitFor","customViewsLoading","customViews","size","$$v","save","optional","noTitle","menu","datePickerFormValue","renderedDateString","useMain","$route","AppLogoImage","BackButton","Card","ChartCard","DeleteEntityDialog","EmptyState","FormCard","FormDialog","PageHeader","HttpPatchButton","HttpPostButton","HttpDeleteButton","HttpPutButton","FigureCard","WidgetGrid","Chart","TitleSheet","TitleSheets","ComparisonIcon","EntitySearchAutocomplete","EntityTypeIcon","CloudProviderTypeIcon","TextDatePicker","ConditionalVMain","bind","_","binding","vnode","__$waitInstance","child","$on","selectedSearchEntity","showSupportEmail","supportEmail","drawer","activeUserAlert","tenantStore","isSupportDialogOpen","selected","menuItems","LAST_TENANT_KEY","useDatasetState","hasGranularTogglesFeature","hasTenantFeature","hasUsageDataset","hasEmissionsDataset","useTenantStore","defineStore","state","getInitialTenant","getters","feature","features","hasPermission","permission","permissions","actions","loadTenant","loadTenantStatus","tenantSummary","setTenantDetails","$patch","newTenantString","$state","setTenantDetailsFromV1","newTenantData","tagKey1","tagHeirarchy","tagKey2","tagKey3","getHierarchy","initialTenantString","initialTenant","tenantName","currencyCode","customerId","numberOfActiveAccounts","lastImportStartedDate","lastImportCompletedDate","lastUsageDateForTenant","isSelfService","hasActiveSubscription","hasActiveImports","activeUserAlerts","FeatureNames","hasInvalidCredentials","expandReports","expandOptimizations","expandPricing","hasCostAndUsageToggle","hasEmissionsAndEnergyFeature","hasCustomReportsFeature","to","hasKubernetesFeature","hasAzureEmissions","hasRecommendationsViewFeature","hasBudgetsFeature","hasSpendLimitsFeature","hasWatchdogFeature","hasTagOverviewFeature","hasGridFeature","hasCopyCloudAccountFeature","stopPropagation","isEditingNotifications","tableEntities","sortedDesc","$set","onValueChanged","post","EmailSubscriptionCheckbox","sortable","allStatuses","sortedBy","itemsPerPage","h","a","b","f","k","l","n","substr","q","s","charCodeAt","fromCharCode","ProfileTenantsTable","profiles","gravatarUrl","toggleDarkTheme","loadProfiles","isMenuOpen","useAccountStore","tenants","numTenants","ctx","NavMenuList","NavTenantMenuList","NavUserMenuList","clearInterval","toggleFilters","onAuthentication","getMe","getCredentialStatus","getTenantSummary","getTenantStatus","me","shouldAlwaysBeDark","groupedActiveImports","activeImports","month","year","groupedByYear","months","rangeEnd","monthRanges","rangeStart","cloudAccountName","displayText","percentageDownFromLastMonth","expectedThisMonth","percentage","lastMonthName","lastMonthSubtitle","nativeOn","handleSavingsClicked","newChartData","usageOptions","handleDatasetClicked","tagTableItems","tenantToEdit","dialogs","updateTenant","iconTooltip","integrationType","iconType","_setupProxy","useWaitStore","waits","stop","splice","whilst","warn","useFilterStore","getInitialFilter","setFilter","entities","qs","searchType","fetchSubscriptionById","fetchCloudAccountById","fetchServiceById","persist","afterRestore","store","entity","subscriptionName","typeDescription","serviceName","initialFilter","ContrastTextVariable","ContrastLinesVariable","VuetifyPrimaryBase","VuetifyErrorDarken1","VuetifyWarningDarken1","VuetifySuccessDarken1","VuetifyErrorLighten2","VuetifyWarningLighten2","VuetifySuccessLighten2","colorsOverride","CHART_COLORS","hexToRgb","hex","normalized","bigint","LEGACY_COLORS_HEX","LEGACY_COLORS_RGB","rgb","FORMATS","datetime","millisecond","second","minute","hour","day","week","quarter","_adapters","_id","formats","valueOf","time","amount","weekday","trunc","isoWeekday","getOrCreateLegendList","legendContainer","getElementById","listContainer","querySelector","createElement","display","flexDirection","margin","padding","paddingTop","paddingBottom","maxWidth","appendChild","htmlLegendPlugin","afterUpdate","args","ul","containerID","firstChild","remove","plugins","legend","labels","generateLabels","li","alignItems","cursor","marginLeft","marginBottom","onclick","toggleDataVisibility","onLabelClick","datasetIndex","setDatasetVisibility","isDatasetVisible","update","boxSpan","background","fillStyle","borderColor","strokeStyle","borderStyle","borderWidth","lineWidth","flexShrink","marginRight","textContainer","fontColor","textDecoration","hidden","createTextNode","annotationPlugin","PREFIX_PAD","OTHERS_DATASET_ORDER","PROJECTIONS_DATASET_ORDER","UsageReportTypes","valueFn","spend","u","charges","credits","Error","autoScaling","option","origValue","chartArea","barWidth","getDatasetMeta","output","hypo","sqrt","pow","convertUsageResponseToDatasets","usageResult","opts","labelSuffix","stackGroup","colorsArray","reportType","datasets","colours","reverse","fullColor","dataset","backgroundColor","isOther","pattern","hoverBackgroundColor","order","stack","reportTypes","usageRecords","getTime","y","convertProjectionsResponseToDataset","projectionsResult","altColorHex","forecast","forecastTimestamp","convertEventsToAnnotations","eventResponse","onClick","sortedEvents","sort","aDate","bDate","plotBands","currentDate","UTC","dayBefore","setDate","getDate","toCreate","existingBand","xMin","xMax","plotBand","click","band","xMinDate","setHours","xMaxDate","convertAnnotatesToAnnotations","flatData","flatMap","annotationDate","largest","xValues","itemB","totals","minDate","maxDate","midday","offset","utcOffset","dataValues","content","font","position","xValue","yValue","getRange","scale","pixel0","pixel1","v0","getValueForPixel","v1","chartItem","containerId","onRangeSelection","allowRangeSelection","getComputedStyle","contrastLines","getPropertyValue","CssVariables","contrastText","selectedRange","zoomPlugin","zoom","center","limits","from","delta","onClickProcessor","targetPtr","targetDataset","datasetGroupId","htmlLegend","drag","enabled","mode","onZoomComplete","minXDate","floor","maxXDate","minX","maxX","stackTotal","rangeTotal","tooltip","callbacks","afterLabel","points","hoverPoint","dataIndex","datasetTotal","datasetAverage","percentageOfAverage","toFixed","annotation","annotations","interaction","intersect","onHover","newCursor","native","responsive","maintainAspectRatio","scales","stacked","ticks","grid","axis","bounds","now","emit","root","canvas","canvasContainer","storeToRefs","renderChart","innerHTML","classList","maxHeight","createUsageBarChart","onMounted","displayCurrencyCode","mpnOverride","tagHeirarchy1","nameEditable","nameRules","allowMpnOverride","tagHeirarchy2","tagHeirarchy3","currencyCodes","errorFallback","tagKeyEntity","handleTagKeySelection","CurrencyComboBox","TagKeyAutocomplete","currencyCodeRules","searchSupportedTypes","handleUpdateFilterEntity","handleUpdateDateRange","handleForecastDateRange","DEFAULT_RANGE_TYPES","isCustomDateMenuOpen","handleUpdateDateType","viewModel","showTypes","hideOthers","isOtherMenuOpen","handleSegregationChange","DEFAULT_SEGREGATION_TYPES","$vuetify","breakpoint","smAndDown","otherTypes","segregation","dateRangeForKey","convertSpendOptionsToQuery","costView","calculateOptionsDescription","segregateByTitle","startsWith","granularityName","hideSearch","dateSupportedKeys","segregationSupportedKeys","hideSegregation","hideSegregationOthers","mapStores","dateRangeDescription","date","isGeneralOptionsMenuOpen","isPickingDateRange","isPickingForecastRange","filterStore","fetchSelectedSearchEntity","handleUpdatedCostView","dateRange","newValue","entityLength","subscriptionIdEntities","latestEntity","productName","UnitOfDisplay","pinnedTopRowData","domLayout","showGptCreate","loadingGptCreate","LicenseManager","AG_GRID_KEY","SPAN_WITH_NO_VALUE","capitalizeFirstLetter","charAt","toUpperCase","slice","slotHeader","header","fieldName","headerName","field","editable","rowGroup","resizable","enableRowGroup","cellRenderer","AgGridVue","nameHeaderTitle","cardTitleText","disableLinks","hideDefaultFooter","hideExport","hideIntelligence","prefix","unitOfDisplay","sortBy","sortDesc","modules","RowGroupingModule","entityId","gridApi","gridColumnApi","displayOptions","exportCsv","exportDataAsCsv","noNav","chatId","sizeToFit","sizeColumnsToFit","onGridReady","api","columnApi","allColumnIds","getAllColumns","column","getColId","autoSizeColumns","segregateByList","showDataAsMonetaryCost","consumption","pinned","valueFormatter","isTotal","noFollow","encodeURIComponent","link","innerText","addEventListener","canShowIntelligence","monthSlots","itemValuePropName","costValuePropName","dailySlots","unitValuePropName","pinnedBottomRowData","spendUsageItems","summaryRow","totalConsumption","timestamp","usageItem","SpendUsageTableFunctions","slotsForMonthColumns","slotsForDailyColumns","spendResultGroup","totalCharges","monthlyTotalsForYear","monthlyCharges","monthlyConsumptionForYear","monthlyConsumptionTotals","usageRecord","urDate","unitsConsumed","tempDate","isBefore","slotKey","itemSlotName","fromMonth","toMonth","slots","isAfter","monthYear","endOfMonth","partialFromDayOfMonth","partialToDayOfMonth","CredentialStatusIcon","SpendUsageBarChart","SetTenantCard","PutTenantButton","SpendUsageTable","figureType","tenantMonthlyUsageResponse","totalSpendForYear","averageMonthlySpend","projectedThisMonth","totalLastMonth","totalThisMonth","creditsLastMonth","topXServices","thisMonthName","recommendationSummary","recommendationStatus","projections","tagOptions","nocreditsTxt","recommendationStatusText","chartTitle","getUsageForTenant","creditsDataset","projectionUtilized","usageResponse","tm","getRecommendationSummary","getRecommendationStatus","getTagsOverview","onManageHierarchyClick","afterUpdateTenant","handleDialogChange","deltaSpend","sevenDayTrend","priorPeriodSpend","activePeriodSpend","thirtyDayTrend","sixtyDayTrend","compareConfiguration","routePrefix","itemsPerPageOptions","Downloader","exportCSV","rows","csvContent","rowArray","row","encodedUri","encodeURI","setAttribute","removeChild","exportJSON","object","json","blob1","url","URL","createObjectURL","csvValues","UsageComparisonsTable","currentPeriodMax","SegregationButtonToggle","segregateTypes","allItems","convertCompareResultToDatasets","compareResult","nameFn","idFn","increaseDataset","decreaseDataset","abs","increaseSpend","decreaseSpend","metaData","convertProductCompareResultToDatasets","convertServiceCompareResultToDatasets","convertSubscriptionCompareResultToDatasets","convertCloudAccountCompareResultToDatasets","indexAxis","clickFn","createTrendsBarChart","clickEvent","ServiceComparisonsTable","UsageComparisonOptionsToolbar","ProductComparisonsTable","SubscriptionComparisonsTable","CloudAccountComparisonsTable","TrendBarChart","lastUsage","query","loadProductComparisons","refreshSummaries","averageDailySpend","deltaPercentage","totalNewThisMonthCount","totalNewLastMonthCount","spendLimits","recentServices","comparisons","trendRecords","chartseries","trendDatasets","period","toLocaleLowerCase","log","loadTrendSummary","days","lastUsageDate","handleChartClick","isOpen","$title","StartDate","SpendUsageOptionsToolbarForm","reservations","ReservationId","CloudAccount","CommitmentType","commitmentType","CommitmentId","commitmentId","ProductName","ProviderType","Quantity","quantity","Region","PaymentOption","paymentOption","ThirtyDayUtil","thirtyDayUtilisation","loadReservations","headerValues","unshift","reservation","remoteId","getUsageRecords","usageDataset","showRecommendationsNotAvailable","showRecomendations","filterRecommendationsBy","noDataMessage","recommendation","results","loadRecommendationSettings","Recommendation","rec","detailsUrl","res","RecommendationResult","showResults","minimumEstimateImpact","maximumEstimateImpact","minimumEstimateImpactEmissions","maximumEstimateImpactEmissions","averageMonthlyEmissions","category","environmentalImpact","numberOfResults","accum","isInFilter","cost","hasResultsToShow","costDisplay","recommendationId","cloudAccountType","snoozedOn","recommendationText","align","impactNames","settings","definitions","isEnabled","definition","SetRecommendationSettingsCard","isWhiteLabelled","ALL_VENDORS_FILTER","FILTERS_STORAGE_KEY","RecommendationResultTable","RecommendationHeaderCard","RecommendationCurrentlyAvailableCard","RecommendationCredentialsRequiredCard","EditRecommendationSettingDialog","PutRecommendationSettingsButton","RecommendationNotAvailableCard","panelsState","recommendations","elevatedFeatureRecommendations","summary","credentialStatus","recommendationsSetting","recommendationEnabled","isAssistDialogOpen","filterOptions","recommendationsHeader","showCredentialSetupRequired","totalRecommendations","totalCost","filteredRecommendations","loadRecommendations","setFilterFromStorage","panelState","cluster","handleClusterSpendChartClick","convertTagResultToNamespaceSpend","clusterName","rowMap","Map","rowDimensions","tagValue","namespace","trim","totalSpend","round","entries","AllocationTypes","convertAllocationsToDatasets","allocations","allocation","createClusterAllocationsBarChart","DateRangeButtonToggle","ClusterSpendBarChart","NamespaceSpendTable","clusterSpendData","effectiveDateRange","loadClusterSpend","tagUsageData","clusterSpend","clustersViewModel","clusterMap","clusterSpendItem","clusterRow","namespaces","clusterAllocationDatasets","effectiveDates","newClusters","clusters","wait","primaryTagRules","primaryTag","additionalTagRules","getTagSpendData","tagChartItems","convertTagSpendResponseToDatasets","tagSpendResult","grouping","ds","indexTotal","percentageOfIndexTotal","hover","createTagSpendAreaChart","singleLine","TagSpendAreaChart","Banner","filterPanels","additionalTags","subtract","startMenu","endMenu","tagTableDimensions","periodRules","startDateRules","endDateRules","usageTableItems","Charges","Spend","convertToItemRecords","startPeriodString","endPeriodString","MARGIN_DATASET_ORDER","PROFIT_DATASET_ORDER","convertCustomerUsageSummaryToDatasets","showProfit","customers","customerDataset","customerName","monthlyChargeSummaries","profit","marginDataset","fill","tension","yAxisID","profitDataset","monthlyChargeTotals","y2","drawOnChartArea","createCustomerUsageBarChart","transformedItems","Revenue","Cost","Margin","Profit","thisMonthRevenue","thisMonthCost","thisMonthProfit","thisMonthMargin","lastMonthRevenue","lastMonthCost","lastMonthProfit","lastMonthMargin","CustomersChart","CustomersTable","exportCustomerCsv","table","$refs","chartDatasets","startPeriod","endPeriod","totalRevenue","totalProfit","totalMargin","numberCustomers","filterValue","chartOptions","createMapChart","events","exporting","mapNavigation","itemStyle","itemHoverStyle","navigation","activeColor","colorAxis","plotOptions","series","point","enableMouseTracking","showInLegend","createMapSeriesRecord","groupingName","suffix","colorLookup","Azure","Amazon","joinBy","minSize","maxSize","pointFormatter","z","createMapSeriesChildRecord","correlationId","areaName","lat","lon","$$id","createCarbonColorAxis","stops","convertRegionResultsToChartSeries","costs","currencySymbol","regionTotals","agg","obj","regionTotalKey","regionData","ChartFactory","long","pointClicked","eventData","outgoingEventData","convertRegionResultsToViewItems","currentMonth","RegionsTable","RegionsTableCard","RegionChartCard","regionMapData","filteredRegions","filteredRegionMapData","loadDataForView","getAllRegions","getRegionTotals","list","some","currentTotalCo2E","fixedCarbonOptions","isUsageDatasetWarningOpen","TOTAL_ENERGY_ORDER","convertUsageResponseToEmissionsDatasets","lookup","cO2e","energyDataset","aggregateRecords","kWh","convertCO2eResponseToDatasets","hideKwh","cO2E","createEmissionBarChart","convertCarbonByTagResultToDimensions","convertCarbonByTagResultToItems","usageKey","rowKey","co2e","row1","usageHeaders","headerMap","dimension","isViewingDialog","CarbonMissingMappingCard","setMonth","getMonth","fixedParameters","CarbonMissingMappingDialog","CarbonBarChart","TagCarbonTable","CarbonMissingFooter","getTagCarbonData","getFixedCO2EForTenant","currentTotalKwH","lastMonthCo2e","lastMonthKwH","cummulativeCo2E","cummulativeKwH","datasetIndexes","SUPPORT_EMAIL","carbonOptions","getCO2EForTenant","usageParams","carbonResponse","forecastResponse","forecastDataset","totalCO2E","totalKwH","lm","monthlyCO2ETotals","monthlyKwHTotals","dims","resp","starred","groupingItems","convertToEmissionsItemRecords","totalCO2e","totalCo2e","monthlyCO2eForYear","monthlyCO2eTotals","monthlyKwHForYear","KeyedBlobsDb","Dexie","super","stores","blobs","where","toArray","getBlob","jsonString","jsonBlob","putBlob","put","listBlobsWithPrefix","docs","buffer","arrayBuffer","stringBlob","changeFn","initFn","doc1","getDoc","doc2","inited","changed","putDoc","final","getUserPreferences","KeyedBlobs","setUserPreferences","preferences","getSegregateByFromRoute","path","baseTenantId","CarbonTable","tab","tagkey","carbonRecords","getCarbonRecords","newSegregateBy","newTabKey","tabKey","costExplorerTab","starredCostExplorerTab","isStarred","newTagKey","oldTagKey","currentHeaderName","tabs","by","projectionResponse","projectionsDataset","SupportedSlices","intensity","intensityOptions","standardOptions","kwh","FIXED_OPTIONS","hideForAMoment","emissions","currentMonthCO2e","currentMonthKwH","RegionsCarbonTable","RegionsCarbonTableCard","emissionsResult","regionsResult","minPeriod","_f","class","customerToDelete","endDeleteAccount","deleteCustomer","isFormValid","isNotForProfit","AddCustomerButton","handleSuccessfulCustomerAdd","sum","CreateCustomerDialog","getTenantCustomers","startMonth","handleSuccessfulCustomerChange","startDeleteAccount","customer","flag","maxPeriod","totalShared","numberOfSharedAccounts","totalOther","numberOfOtherAccounts","totalOtherSpend","lastMonthOtherSpend","flagValue","startCreateAccount","IsMe","isTenantCreator","startEditAccount","startEditUserGroup","createOrUpdateUser","tryAddOrUpdateGroup","deleteUser","deleteUserGroup","canRead","canContribute","canAdminister","canManageBilling","isEditMode","fullName","convertToUserItems","users","userGroups","userResp","userGroupResp","ug","businessUnit","groupId","SetUserCard","UsersTable","AddUserButton","UpdateUserButton","DeleteUserButton","DeleteUserCard","SetUserGroupPermissionsCard","deletegatedUserGroups","userToDelete","userToEdit","userGroupToEdit","userGroupToRemove","addUserGroupPermission","userItems","startAddUserGroup","startDeleteUserGroup","getUsers","createNewShare","startDeleteCopy","copyToDelete","showDeleteCopy","TaxonomyType","useCloudAccountNavigationStore","taxonomyType","updateNavigationSource","navigationDetails","DeleteSharedCopyButton","loadCustomer","ParentCloudAccountId","parentCloudAccountId","navigationHistory","featureId","toggleFeature","featureDescription","SharedData","Features","Users","loadCustomerFeatures","sharedDataCloudAccounts","origin","currentMarkup","markupPercentage","effectiveFromDate","tenantFeatures","isCloudAccountActionsEnabled","isCustomAccountsEnabled","isActionsEnabled","isTagMappingsEnabled","isSnowflakeEnabled","isOracleEnabled","isAlibabaEnabled","isGoogleEnabled","isAuditEnabled","startEditName","isCreatingAwsAccount","isCreatingAwsRoleBasedAccount","onCloudAccountsChanged","isDeletingAwsAccount","isEditingAwsAccount","isEditingAwsRoleBasedAccount","isEditingAwsAccountName","isEditingAccountCurrencies","edit","UseTenantCurrencies","Token","secretAccessKey","Container","RegionCode","accessKeyId","showSecretAccessKey","secretAccessKeyRules","regionCode","s3BucketNameRules","s3BucketName","matchingBuckets","search","bucketCredentials","ProviderId","allS3Buckets","errored","matchingS3Regions","S3_REGIONS","allRegions","accessKeyIdRegex","secretAccessKeyRegex","bucketNameRegex","S3BucketAutocomplete","S3RegionAutocomplete","useTenantCurrencies","accessKeyIdRules","SetAmazonWsCredentialsCard","SetAmazonWsCredentialsDialog","PostCloudAccountButton","ClientDomain","externalId","showPax8Option","isPax8","tryPrefillExternalId","roleArn","sessionName","DEFAULT_SESSION_NAME","awsAssumeRoleCredential","clientDomain","providerId","container","SetAmazonAssumeRoleCredentialsCard","SetAmazonAssumeRoleCredentialsDialog","acceptSubmit","PutCredentialButton","IsPax8","DeleteCloudAccountCard","DeleteCloudAccountButton","account","$rules","patches","UpdateEntityNameCard","PatchCloudAccountButton","handleSuccessfulRename","SetCloudAccountCurrenciesCard","AWSConnectionEnabled","amazonCloudAccountTableFilter","ca","expiryDate","awsIamUsageCredential","expiry","AWSConnectionAccessKeyId","AWSConnectionBucketName","AWSConnectionExpiry","_original","updateRouteHistory","prettyListItems","bottom","PrettyListItem","PrettyListItemMenu","top","CreateAmazonWsCloudAccountDialog","CreateAmazonAssumeRoleCloudAccountDialog","UpdateAmazonWsCredentialDialog","UpdateAmazonAssumeRoleCredentialsDialog","DeleteCloudAccountDialog","AmazonWsCloudAccountsTable","EditCloudAccountNameDialog","EditCloudAccountCurrenciesDialog","CreateAmazonAccountMenu","focusedAccount","supportsRoleBasedAccount","amazonCloudAccounts","handleCreateNewAmazonAccount","startEditCurrencies","startEditCloudAccountLegacy","startEditCloudAccountNew","copyCloudAccount","navigationSource","cloudAccountTypes","startEditCloudAccount","isCreatingAzureArmAccount","isCreatingAzureCmeAccount","isCreatingAzureEaAccount","isCreatingRhipeAccount","isCreatingAzurePax8Account","isEditingAzureArmAccount","isEditingAzureCmeAccount","isEditingAzureEaAccount","isEditingRhipeAccount","isDeletingAccount","isEditingAccountName","isEditingAzurePax8Account","tenantIdRules","clientIdRules","clientId","clientSecretRules","showClientSecret","clientSecret","guidRegex","copyRemoteTags","SetAzureArmCredentialsCard","SetAzureArmCredentialsDialog","AzureEntraApplicationWithStorageCredential","storageAccountRules","storageAccount","containerRules","directoryNameRules","directoryName","exportNameRules","exportName","SetAzureCmeCredentialsCard","SetAzureCmeCredentialsDialog","showEaApiKey","eaApiKeyRules","eaApiKey","enrollmentNumber","parseJwt","atob","SetAzureEaCredentialsCard","SetAzureEaCredentialsDialog","SetRhipeCredentialsCard","SetRhipeCredentialsDialog","expanded","showSubscriptions","azureCloudAccountTableFilter","SubscriptionsDialog","showAzureSubscriptions","azureActiveDirectoryApplicationCredential","selectedCredential","credentialId","tableEntity","ARMConnectionTenantId","UsageConnectionType1","UsageConnectionEnabled","EnhancedConnectionEnabled","azureEntraApplicationWithStorageCredential","UsageConnectionType2","eaPortalApiCredential","rhipeApiCredential","CreateAzureCloudAccountDialog","CreateAzureEaCloudAccountDialog","CreateAzureCmeCloudAccountDialog","CreateRhipeCloudAccountDialog","UpdateAzureArmCredentialsDialog","UpdateAzureCmeCredentialsDialog","UpdateAzureEaCredentialsDialog","UpdateRhipeCredentialsDialog","AzureCloudAccountsTable","CreateCloudAccountMenu","azureCloudAccounts","startEditArmConnection","startEditCmeConnection","isCreatingGcpAccount","isEditingGcpAccount","isEditingGcpAccountName","GoogleJsonUsageCredential","projectId","jsonRulesText","tableId","dataSetId","jsonRules","googleJsonUsageCredential","SetGoogleJsonCredentialsCard","SetGoogleJsonCredentialsDialog","GoogleConnectionEnabled","googleCloudAccountTableFilter","GoogleProjectId","GoogleDatasetId","GoogleConnectionExpiry","GoogleCloudAccountsTable","CreateGoogleAccountDialog","UpdateGoogleJsonCredentialsDialog","isDeletingGcpAccount","googleCloudAccounts","isCreatingOciAccount","isEditingOciAccount","isEditingOciAccountName","OracleCredential","tenancyId","pemText","userId","fingerprint","regionId","oracleUsageCredential","SetOracleCredentialsCard","SetOracleCredentialsDialog","OracleConnectionEnabled","oracleCloudAccountTableFilter","OracleTenancyId","OracleUserId","OracleCloudAccountsTable","CreateOracleAccountDialog","UpdateOracleCredentialsDialog","isDeletingOciAccount","oracleCloudAccounts","isCreatingAccount","alibabaCloudAccounts","ConnectionEnabled","alibabaCloudAccountTableFilter","alibabaAccounts","alibabaUsageCredential","AccessKeyId","matchingAlibabaRegions","ALIBABA_REGIONS","AlibabaRegionAutocomplete","SetAlibabaCredentialsCard","SetAlibabaCredentialsDialog","isEditingAccount","AlibabaCloudAccountsTable","UpdateAlibabaCredentialsDialog","CreateAlibabaCloudAccountDialog","snowflakeAccounts","isEditing","isEditingName","isEditingCurrencies","required","organizationName","accountName","userName","password","snowflakeDirectCredential","SnowflakeDirectCredential","SetSnowflakeCredentialsCard","SetSnowflakeCredentialsDialog","snowflakeCloudAccountTableFilter","M","OrgName","AccountName","SnowflakeAccountTable","CreateSnowflakeAccountDialog","UpdateSnowflakeCredentialsDialog","isDeleting","isAdding","customCloudAccounts","customCloudAccountTableFilter","CustomCloudAccountsTable","CreateCustomCloudAccountCard","createCustomAccount","createUserGroup","membershipCount","updateGroupMembers","editUserGroup","focusGroup","getUserGroups","isDeletingGroup","entityDescription","submit","innerRules","innerLabel","readText","deleteItem","addItem","additionalIsValid","SetUserGroupCard","ModalListInput","newUserGroup","isCreatingGroup","isEditingGroup","userGroup","billingDetails","loadCustomerPortalSession","BillingPlan","plan","planId","planName","planDescription","includedSpendInAud","overagePercentage","BillingDetailsStatus","billingStatus","remainingDays","planDetails","totalSpendInAud","currentColor","currentConsumption","predictedConsumption","minConsumption","maxConsumption","predictedColor","isMonthly","propertyName","ContentCard","loadAvailablePlans","ConsumptionBar","PlanCard","selfServiceEnabled","loadBillingStatus","apiKeys","generatedKey","keyToDelete","copy","navigator","clipboard","writeText","profileId","apiKeyId","GenerateApiKeyCard","GenerateApiKeyButton","DeleteApiKeyButton","showCreateKey","showDeleteKey","setGenerated","removeKey","keyId","showGenerateApiKey","loadKeys","startEditTenant","DeleteTenantButton","tenantToDelete","tagHierarchy","deleteTenant","startDeleteTenant","children","goToChoose","getTenantCurrencies","selectedMonth","targetCurrencyCode","sourceCode","fxRate","effectiveFrom","sourceCurrencyCode","effectiveFromYear","effectiveFromMonth","SetFxRateCard","SetFxRateDialog","CreateFxRateButton","isUpdating","op","EditFxRateButton","DeleteFxRateCard","DeleteFxRateButton","SimpleActionTypes","UpdateFxRateDialog","DeleteFxRateDialog","CreateFxRateDialog","FxRateMenu","tenantFxRates","fixedFxRates","priorMonths","getFixedCurrencies","getFullYear","getKnownCurrencyCodes","mapping","isSubmitting","moveMappingDownwards","deleteMapping","mappingValidity","isCreatingNewMapping","newMappingName","isNewMappingValid","isLoading","deleteCondition","deleteAction","appendAction","actionTypes","SimpleConditionTypes","conditionTypes","isFieldType","supportedTypes","KNOWN_FIELD_TYPES","fieldTypes","UsageFieldSelect","sourceRowField_insensitive","sourceRowField_sensitive","TagMappingActionTypeSelect","TagMappingConditionTypeSelect","TagMappingConditionLeftInput","TagMappingConditionRightInput","TagMappingActionLeftInput","TagMappingActionRightInput","conditions","isExitCondition","newActions","applyMarkupActions","markup","runOrder","addNewTagActions","addNewTag","newTagValue","removeTagActions","removeTag","copyValueToNewTagActions","copyValue","existingTagKeyToCopy","newConditions","subscriptionConditions","matchCase","subscription_sensitive","subscription_insensitive","condition","matchSubscriptionNames","cloudAccountConditions","cloudAccount_Sensitive","cloudAccount_Insensitive","matchCloudAccountNames","sourceRowFieldConditions","sourceRowFieldName","matchValues","sourceTagKeyValueConditions","sourceTagKeyValue_sensitive","sourceTagKeyValue_insensitive","sourceTagKeyName","stopProcessingMoreRules","appendCondition","moveActionUpwards","sibling","moveActionDownwards","isActive","ruleDescription","ruleName","ruleOrder","TagMappingFormCardContent","TagMappingHeaderToolbar","mappings","isCreatingFullscreen","newMapping","errorOccurred","resolveError","startCreateNewMapping","createPlaceholderMapping","newResult","updatedTargetMapping","moveMappingUpwards","deletedTag","handleMappingActiveChange","startEditingList","ml","updateMailingListEmails","mailingLists","isCreatingOrEditing","targetMailingList","getPageData","submitNameForm","startCreateList","webhooks","startEditing","webhook","currentName","existingNames","nameExistsRule","lastcalled","SetWebhookCard","WebhookCardDialog","CreateWebhookButton","webhookName","EditWebhookButton","CreateWebhookDialog","EditWebhookDialog","targetWebhook","tryPromoteTagKeys","newEntities","tryUnpin","configuredDimensions","tryDemote","confirm","dim","tryPin","getAuditing","filterUserEmail","auditLog","singleExpand","logs","accountStore","hideCreate","mailToAddress","handleCreation","PostTenantButton","onSubmit","CreateTenantDialog","TenantRadioGroup","ChooseTenantCard","handleChooseEvent","redeemMarketplaceToken","marketplaceToken","loadTenants","CustomerName","BillingEmailAddress","DisplayCurrencyCode","billingEmail","CreateTenantCard","PostCreateTenantButton","rangeSelectedDialog","annotationDialog","selectedValue","unitChanged","showNavigate","onAnnotationChangeSuccess","annotationId","DeleteAnnotationCard","DeleteAnnotationButton","handleDeleteSuccess","resetForm","AnnotationDate","getPatchChanges","EditAnnotationCard","EditAnnotationButton","handleEditSuccess","annotationToDelete","annotationToEdit","deleteAnnotation","editAnnotation","DeleteAnnotationDialog","EditAnnotationDialog","allAnnotations","annotationCreatedBy","isEditable","startDeleteAnnotation","startEditAnnotation","onNavigate","pathSegments","SpendUsageUnitToggle","AnnotationsTimeline","currentRangeEvent","selectedAnnotations","trendDialogSubtitle","annotationDialogSubtitle","avgTotal","showUnitToggle","processRangeEvent","createdAnnotations","showServiceDialog","selectedService","showServiceId","tryCloseDialog","loadServiceDetails","pastTotal","percentageOf","spendLimit","projectedTotal","actualTotal","oneMonthAgo","isEditingSpendLimit","monthlySpendLimit","UpdateEntitySpendLimitCard","PatchServiceButton","handleSuccessfulSpendLimit","EditServiceSpendLimitDialog","ServiceMetadataChips","ServiceManageMenu","CostSummaryWidget","loadServiceProjections","previousDate","prevYear","prevMonth","monthlySpendTotals","monthlyForecastTotals","isAddingAnnotation","hasMore","mixins","AddAnnotationCard","AddAnnotationButton","handleSuccessfulAnnotationChange","AddAnnotationDialog","resetPagination","loadMore","getAnnotations","tagValueEntity","handleTagValueSelection","TagValueAutocomplete","Key","Value","Sources","deleteTag","TagForm","getServiceTags","Source","Editable","tagsForSubmission","addServiceTag","deleteServiceTag","newTagPeriod","newTag","supportedPeriods","VirtualTagTable","virtualTags","spendOptions","VueI18n","i18nRules","en","i8nShared","i18n","locale","silentTranslationWarn","messages","none","back","view","disable","connected","administrator","role","login","company","ja","filterUsageParamsByFilterChips","cloneParams","categoryName","dropFilter","filtersWithoutFilter","UsageFilterChips","loadTabUsage","projectionsResponse","onUnmounted","tableItems","reverseLookup","downloadAsJson","chargeDate","getServiceRawRecords","rawRecords","downloadAsCsv","csvHeaders","svc","showSubscriptionDialog","selectedSubscription","showSubscriptionId","loadSubscriptionDetails","legacySubscriptionModel","PatchSubscriptionButton","EditSubscriptionSpendLimitDialog","EditSubscriptionNameDialog","SubscriptionManageMenu","SubscriptionMetadataChips","loadSubscriptionProjections","loadServiceComparisons","configuration","orderBy","addSubscriptionTag","deleteSubscriptionTag","getSubscriptionAccountVirtualTags","showProductDialog","selectedProduct","showProductId","loadProductDetails","PatchProductButton","EditProductSpendLimitDialog","ProductManageMenu","productInd","showRegionDialog","selectedRegion","showRegionId","loadRegionDetails","RegionMetadataChips","showProductCategoryDialog","selectedProductCategory","showProductCategoryId","loadProductCategoryDetails","productCategoryName","productCategoryId","showCloudProviderDialog","selectedCloudProvider","showCloudProviderId","loadCloudProviderDetails","cloudProviderId","showGeographyDialog","selectedGeography","showGeographyId","loadGeographyDetails","geographyId","showTagDialog","selectedTag","showTagId","loadTagDetails","tagId","tagIdParts","tagKeyPart","tagValuePart","referencedTagKeyValue","tryDemoteToTagKey","tagkeyvalue","PatchTagKeyValueButton","EditTagKeyValueSpendLimitDialog","isDimension","tryPromoteToDimension","TagKeyValueManageMenu","tagName","tkv","loadSpendComparisons","filterText","AdditionalFiltersNotSupported","showCloudAccountDialog","selectedCloudAccount","showCloudAccountId","loadCloudAccountDetail","loadAccountProjections","TenantId","TenantName","CloudAccountCopiesTable","DeleteCloudAccountCopyButton","copies","getAccountCopies","addCloudAccountVirtualTag","deleteCloudAccountVirtualTag","getCloudAccountVirtualTags","showDialog","selectedEntity","showReservationId","loadReservationDetails","Auth0Client","AUTH0_DOMAIN","AUTH0_CLIENTID","authorizationParams","audience","AUTH0_AUDIENCE","redirect_uri","location","initialize","onRedirectCallback","appState","handleRedirectCallback","returnTo","pathname","loginWithRedirect","getTokenSilently","logoutWithRedirect","logout","logoutParams","getUser","scopes","loginRequest","msalConfig","auth","MSAL_CLIENTID","authority","MSAL_AUTHORITY","redirectUri","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","containsPii","LogLevel","info","debug","PublicClientApplication","handleRedirectPromise","accounts","getAllAccounts","loginRedirect","setActiveAccount","acquireTokenSilent","idToken","InteractionRequiredAuthError","getActiveAccount","logoutRedirect","postLogoutRedirectUri","username","DEFAULT_REDIRECT_CALLBACK","history","replaceState","client","msalClient","auth0Client","getInstance","useAuth","AuthPlugin","install","vue","prototype","$auth","screen_hint","currentStep","changeCloudAccount","submitConfiguration","copyConfiguration","DEFAULT_RULES","futureMarkups","tagAllocations","absoluteMarkupCheck","editing","tenant","scriptId","shareParentConnection","nextStepRoute","loadCopyConfiguration","futureDates","loadCloudAccounts","selectedTenantId","selectedCustomerTenants","childCustomers","newName","prices","editSelectedPrice","setScriptId","deleteMarkup","lastMonth","lastMonthString","nextMonth","scripts","getActions","addNewMarkup","el","pricingOrigin","newTagAllocations","showCustomViewDialog","selectedCustomView","showCustomViewId","loadCustomViewDetail","customViewId","savedReports","report","DeleteReportButton","handleSuccessfulDeletion","reportName","DeleteReportDialog","isCloning","isShowingReport","ReportsTable","ReportMenu","isMailing","selectedMailingListId","emissionsTableItems","showChart","wasTruncatedTo","deliverReportToMailingList","loadReportUsage","costViews","CO2e","limitedSet","segregateByParts","loadReport","handleSeriesClicked","meta","metaId","usePredefinedView","selectedView","tagSelections","isAddingTag","tagSearch","deliverInEmail","isViewingSchedule","recipients","schedulingStartDate","schedulingEndDate","frequency","daysOfWeek","monthlyFrequencyValue","timeOfDay","timezone","dateRanges","customDates","timeZones","isValidEmail","addEmail","emailRegex","timeRegex","digitRegex","upperCaseRegex","lowerCaseRegex","specialCharRegex","requiredIf","getter","requiredLength","num","maxLength","minLength","multipleOf","custom","equalTo","comparisonValue","containsDigit","containsLowercase","containsUppercase","containsSpecialCharacter","regex","asyncValidator","validator","myValue","setTimeout","running","method","validate","DateRangeSelect","TimezoneSelect","EmailsAutocomplete","reactive","isCreatingSchedule","searchEntities","selectedDaysOfWeek","views","availableTagsToInclude","fieldsToInclude","availableFieldsToInclude","allTags","schedule","effectiveTo","scheduledHour","scheduledDay","timezoneOffset","subject","messageBody","scheduleId","addTag","toRefs","ReportCard","PostReportButton","PutReportButton","forecastDeltaSpend","budgetStatus","startEditCustomView","focusedCustomView","isDeletingCustomView","DeleteCustomViewButton","PutCustomViewButton","PutCustomViewDialog","DeleteCustomViewDialog","currentPage","pageCount","indexDictionary","isEditingCustomView","startDeleteCustomView","loadExtraDataForCurrentPage","newItemsPerPage","handleEditComplete","handleDeleteComplete","startIdx","endIdx","itemsOnCurrentPage","loadDetailedData","updatedItems","promises","lastMonthActual","extraDataArray","additionalData","itemIndex","last12Weeks","currentMonthForecast","forecastDeltaPercentage","CustomViewsTable","CustomViewMenu","handleDialogClose","selectedTab","daysInMonth","creditsValue","loadCustomView","budget","DeleteBudgetButton","DeleteBudgetDialog","BudgetsTable","budgets","loadBudgets","recordAverage","pageTitle","totalProjectedAbove","totalActuallyAbove","isCreatingLimit","loadSpendLimits","Monthly","periods","Weekly","Quarterly","Yearly","periodStartDate","growthRatePercentage","SetBudgetCard","SetBudgetDialog","CreateBudgetButton","activatorBindings","searchEntity","submitFn","resetFn","closeFn","CreateBudgetDialog","SpendLimitsTable","SetSpendLimitSelectorDialog","projectedPercentage","currentPercentage","progressPercentage","budgetSeries","budgetedCost","variancePercentage","convertBudgetResultResponseToDatasets","budgetResult","budgetDataSet","maxBarThickness","actualDataSet","actualCost","createBudgetHistoryChart","BudgetHistoryChart","budgetName","budgetId","loadBudget","getColor","variance","currentChat","ctrlKey","submitAndRefresh","chatMessage","showChatsDialog","chatCreated","router","useRouter","go","checkExpiredChat","createdAtUtc","domProps","chatName","questionList","isUser","exec","questions","ask","question","replaceAll","AVATAR_SIZE","chat","ChatMessageContent","getCurrentInstance","md5","MD5","select","chats","sample","ChatConversation","ChatsDialog","GptCreate","getChats","disableChat","selectChat","scrollDown","goTo","configuredTypes","caType","e1","isCreatingAwsAccountLegacy","isCreatingAlibabaAccount","isCreatingOracleAccount","CreateAmazonWSCloudAccountDialog","UsersView","loadCloudAccountTypes","isCreatingAwsAccountNew","onClickAccountType","policies","loadPageData","policy","policyName","DeletePolicyButton","DeletePolicyDialog","PolicyMenu","criticalCount","warningCount","policiesActive","recentResultCount","policiesResp","resultsResp","summaryResp","severity","lastRun","lastRunRecordCount","totalCritical","totalPolicies","totalWarning","totalResultCount","customViewDescription","downloadPage","policyDescription1","policyDescription2","policyDescription3","policyLevel","deltaStrategyDesc","strategySummary","newSpendStrategyDesc","newAccountStrategyDesc","regionalSpendStrategyDesc","scheduleDescription","recentResults","policyResp","filterDescription","deltaSpendStrategy","newSpendStrategy","newAccountStrategy","regionalSpendStrategy","dimensionLabel","count","resultCount","ranAt","downloadUrl","policyRunTime","emailsSent","rid","resultPages","recordCount","emailNotifyList","allEmails","formValid","scheduleDayLabel","trySubmitForm","lookBackPeriodLabel","comparisonPeriod","editId","policyLevels","strategy","strategies","compareType","compareTypes","granularities","countComparisonPeriod","comparisonPeriodTypes","lineItemType","lineItemTypes","triggerMinDeltaPercent","triggerMinDeltaAmount","averageOverDays","triggerMinNewAmount","triggerMinUsageAmount","triggerMinRegionCount","scheduleFreqQty","scheduleDay","schedules","emailRecipients","mls","cvs","whs","wh","averageSpendStrategy","comparePeriod","comparePeriodQuantity","policyRequest","createdDate","updatedDate","frequencyQuantity","nextScheduled","loadPolicyDataForEdit","WidgetTypes","ChartTypes","isSaveNetworkLoading","startDeleteDashboard","isPuttingDashboard","isCreateFormValid","isDeletingDashboard","initGrid","v4","elements","patchGridFn","addGridElement","widget","isExisting","patchGridElement","removeGridElement","reshapeGridElements","w","useGridStore","currentDocKey","gridDoc","cachedPositionalUpdates","cachedSizingUpdates","load","initAndCommitCurrent","putGrid","initAndCommitGrid","G","addFeedElement","pos","trendConfig","recommendationConfig","savedReportsParams","updateGridName","updateFeedElement","reportConfig","nodeId","commitCachedValues","positional","gridStore","dashboards","newDashboardName","newDashboardDesc","focusedDashboard","loadViewState","handlePutDashboard","startEditDashboard","dash","handleDeleted","onDeleteWidget","focusedWidget","widgetName","widgetType","isPutting","onEditWidget","hideActions","segregations","focusedSegregation","includeAnnotations","lastHash","isLoadingUsage","loadUsage","toTrends","onAnnotationSelection","optionsHash","hash","spendParams","chartLabels","anno","spikeEventsResponse","spikes","numDaysBetween","opt","loadTriggers","isSame","SpendUsageLineChart","CarbonLineChart","pieChartData","convertUsageToPieDataset","parsed","bodyColor","titleColor","emits","createUsagePieChart","SpendUsagePieChart","currentHash","textData","bodyText","embedData","cardTitle","fetchTrends","trendsConfig","categories","recommendationResponse","savings","ColumnChartGridWidget","LineChartGridWidget","TableGridWidget","PieChartGridWidget","TextualGridWidget","EmbedGridWidget","ComparisonChartGridWidget","RecommendationsGridWidget","gridId","GridLayout","VueGridLayout","GridItem","GridWidget","rect","handleMoved","newX","newY","handleResized","handleEditClicked","handleDeleteClicked","chartType","widgetSubtitle","widgetBodyText","widgetUrl","trendRenderType","trendSegregateBy","selectedCloudProviders","selectedCategories","availableCostViews","costViewSelection","dateRangeOptions","selectedFilterId","FIXED_FILTER_ID","UNFILTERED_ID","columnChart","trendRenderTypes","availableChartTypes","lineChart","pieChart","note","embed","trends","availableDatasets","trendSegregations","supportedSearchTypes","availableCloudProviders","availableCategories","o","currentWidgetConfig","textConfig","embedConfig","urlTitle","toDateString","renderType","classifications","recommendationIds","Grid","WidgetGridFormDialog","addReportWidget","updateReportWidget","handleSave","hitSave","onEditReportWidget","startCreate","newRoute","oldRoute","authGuard","next","fullPath","$watch","Actions","ActionDialog","ActionDialogIndex","ActionDialogVersions","ActionDialogAccounts","ActionIndex","ActionDevelop","ActionVersions","ActionCloudAccounts","VueRouter","PATH_RESOURCES","names","choose","groups","customersUsageDashboard","customersManage","customerManage","createEditSharedData","tagoverview","regionoverview","billingdetails","powerBiReport","fxrates","resources","ApiManagement","createTenant","reports","selfServiceCreate","selfServicePlans","serviceDialogChildRoutes","Passthrough","ServiceDialogIndex","redirect","ServiceDialogUsage","ServiceDialogAnnotations","ServiceDialogRecordTags","ServiceDialogVirtualTags","ServiceDialogRawUsage","ServiceDialogCarbon","subscriptionDialogChildRoutes","SubscriptionDialogIndex","SubscriptionDialogUsage","SubscriptionDialogCarbon","SubscriptionDialogTrends","SubscriptionDialogAnnotations","SubscriptionDialogVirtualTags","cloudProviderDialogChildRoutes","CloudProviderDialogIndex","CloudProviderDialogUsage","cloudAccountDialogChildRoutes","CloudAccountDialog","CloudAccountDialogIndex","CloudAccountDialogUsage","CloudAccountDialogTrends","CloudAccountDialogCopies","CloudAccountDialogAnnotations","CloudAccountDialogVirtualTags","CloudAccountDialogCarbon","actionDialogChildRoutes","productDialogChildRoutes","ProductDialogIndex","ProductDialogUsage","ProductDialogCarbon","ProductDialogTrends","reservationDialogChildRoutes","ReservationDialogIndex","ReservationDialogUsage","customViewDialogChildRoutes","CustomViewDialogIndex","CustomViewDialogUsage","regionDialogChildRoutes","RegionDialogIndex","RegionDialogUsage","RegionDialogCarbon","geographyDialogChildRoutes","GeographyDialogIndex","GeographyDialogUsage","GeographyDialogCarbon","productCategoryDialogChildRoutes","ProductCategoryDialogIndex","ProductCategoryDialogUsage","tagDialogChildRoutes","TagDialogIndex","TagDialogUsage","TagDialogCarbon","TagDialogTrends","copyCloudAccountChildRoutes","CopyCloudAccountChooseTenant","step","CopyCloudAccountPricingRules","CopyCloudAccountTags","CopyCloudAccountFinish","standardEntityDialogSuffixes","ServiceDialog","SubscriptionDialog","CloudProviderDialog","ProductDialog","RegionDialog","GeographyDialog","TagDialog","ProductCategoryDialog","CustomViewDialog","ReservationDialog","mainViewChildren","CustomDashboardsIndex","CustomDashboardsDashboard","FinanceDashboard","CarbonOverview","CarbonExplorer","beforeEnter","userPreferences","lastTab","CarbonMap","TrendsDashboard","Budgets","BudgetDetails","WatchdogDashboard","WatchdogViewPolicy","WatchdogNewPolicy","WatchdogViewPolicyRun","KubernetesDashboard","ReservationsDashboard","CustomReports","CreateReport","EditReport","CloneReport","CustomReport","AzureEmissionsDashboard","CustomersUsageView","CustomersManageView","CustomerManageView","CopyCloudAccountIndex","RecommendationsView","TagDashboardView","RegionOverviewView","GettingStarted","GptChats","hideMain","CustomViews","CustomView","CustomViewOverview","Settings","Google","Oracle","Alibaba","Snowflake","Custom","Groups","BillingDetails","ApiManagementView","General","FxRates","TagMappings","MailingLists","Webhooks","Dimensions","Audit","ResourceExplorerIndex","NotFound","allowNoTenant","base","process","routes","allowAnonymous","ChooseView","SelfServiceTenantCreate","AWSMarketplace","SelfServicePlans","MainView","uuidValidate","uuid","beforeEach","matched","nextCorrelationId","appInsightsKey","APP_INSIGHTS_KEY","appInsights","appInsightsConfig","instrumentationKey","disableFetchTracking","enableCorsCorrelation","enableAutoRouteTracking","correlationHeaderExcludedDomains","telemetryInitializer","envelope","cloudCtrlCorrelationId","ApplicationInsights","loadAppInsights","addTelemetryInitializer","register","ready","registered","cached","updatefound","updated","offline","redirectUrl","Vuelidate","VueWait","VueFragment","ValidationModule","VuePageTitle","APP_NAME","VueTruncate","PiniaVuePlugin","pinia","createPinia","piniaPluginPersistedState","vuetify","App","$mount","START_EVENT","STOP_EVENT","evaluate","eval","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","__esModule","defineProperty","enumerable","chunkId","miniCssF","globalThis","prop","hasOwnProperty","inProgress","dataWebpackPrefix","done","needAttach","getElementsByTagName","getAttribute","charset","nc","src","onScriptComplete","prev","clearTimeout","doneFns","parentNode","head","Symbol","toStringTag","installedChunks","installedChunkData","promise","loadingEnded","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}