This commit is contained in:
Peer Richelsen
2023-05-24 14:47:23 +01:00
388 changed files with 8688 additions and 689 deletions
+4 -1
View File
@@ -29,6 +29,9 @@ packages/features/ee/impersonation @sean-brydon @calcom/core
packages/features/ee/payments @alannnc @calcom/core
packages/features/ee/workflows @CarinaWolli @calcom/core
packages/features/tips @PeerRich @calcom/core
packages/ui @calcom/ui
# Trivial changes should be mergeable by core team as well
# Major UI changes must be reviewed by UI team
# Critical changes even if major can still be merged by core team if needed.
packages/ui @calcom/ui @calcom/core
packages/config @calcom/core
packages/app-store/routing-forms @hariombalhara @calcom/core
-8
View File
@@ -1,8 +0,0 @@
{
"workspaceId": "63ea8121b6e2b0543ba79616",
"defaultEnvironment": "dev",
"gitBranchToEnvironmentMapping": {
"main": "staging",
"production": "prod"
}
}
+1 -1
View File
@@ -21,7 +21,7 @@ This will tell you when your calendar shows you as busy, so you can understand w
2. To the right of your screen a box saying 'Something doesn't look right?' will appear. Press the button 'Launch Troubleshooter'.
3. After pressing this, your availability will appear according to your calendar and inform you of the times booked up for that day!
By doing this you will know understand why certain times are available and others are blocked.
By doing this you will now understand why certain times are available and others are blocked.
## In team settings availability set to only Mondays but the calendar shows availability on other days as well
Its showing as available on days other than Monday because only you have set your availability to only Mondays, whereas the rest of the team haven't made that setting.
+1 -1
View File
@@ -12,6 +12,6 @@ As it stands this is currently not possible. We always keep an eye on the limita
## How to quickly block further bookings?
1. Click on the lower left corner of your dashboard where your username is displayed.
2. That initates a dropdown menu. Click on `Set youself as away`.
2. That initiates a dropdown menu. Click on `Set yourself as away`.
This is a method to disable your Cal.com account which won't allow any bookings once initiated. However, bookings made before turning on *away mode* will still be booked.
-4
View File
@@ -35,7 +35,6 @@ const Component = ({
email,
tos,
privacy,
isProOnly,
teamsPlanRequired,
descriptionItems,
isTemplate,
@@ -151,7 +150,6 @@ const Component = ({
{!isGlobal && (
<InstallAppButton
type={type}
isProOnly={isProOnly}
disableInstall={disableInstall}
teamsPlanRequired={teamsPlanRequired}
render={({ useDefaultComponent, ...props }) => {
@@ -192,7 +190,6 @@ const Component = ({
) : (
<InstallAppButton
type={type}
isProOnly={isProOnly}
disableInstall={disableInstall}
teamsPlanRequired={teamsPlanRequired}
render={({ useDefaultComponent, ...props }) => {
@@ -362,7 +359,6 @@ export default function App(props: {
tos?: string;
privacy?: string;
licenseRequired: AppType["licenseRequired"];
isProOnly: AppType["isProOnly"];
teamsPlanRequired: AppType["teamsPlanRequired"];
descriptionItems?: Array<string | { iframe: IframeHTMLAttributes<HTMLIFrameElement> }>;
isTemplate?: boolean;
@@ -176,7 +176,10 @@ const AvailableTimes: FC<AvailableTimesProps> = ({
: "text-emerald-400"
} text-sm`}>
{slot.attendees ? seatsPerTimeSlot - slot.attendees : seatsPerTimeSlot} /{" "}
{seatsPerTimeSlot} {t("seats_available")}
{seatsPerTimeSlot}{" "}
{t("seats_available", {
count: slot.attendees ? seatsPerTimeSlot - slot.attendees : seatsPerTimeSlot,
})}
</p>
)}
</Link>
@@ -22,6 +22,7 @@ import {
useIsEmbed,
} from "@calcom/embed-core/embed-iframe";
import { createBooking, createRecurringBooking } from "@calcom/features/bookings/lib";
import { useTimePreferences } from "@calcom/features/bookings/lib";
import {
getBookingFieldsWithSystemFields,
SystemField,
@@ -39,7 +40,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale";
import useTheme from "@calcom/lib/hooks/useTheme";
import { useTypedQuery } from "@calcom/lib/hooks/useTypedQuery";
import { HttpError } from "@calcom/lib/http-error";
import { parseDate, parseRecurringDates } from "@calcom/lib/parse-dates";
import { parseDate, parseDateTimeWithTimeZone, parseRecurringDates } from "@calcom/lib/parse-dates";
import { getEveryFreqFor } from "@calcom/lib/recurringStrings";
import { telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
import { TimeFormat } from "@calcom/lib/timeFormat";
@@ -231,6 +232,8 @@ const BookingPage = ({
{}
);
const { timezone } = useTimePreferences();
const reserveSlot = () => {
if (queryDuration) {
reserveSlotMutation.mutate({
@@ -602,7 +605,7 @@ const BookingPage = ({
<Calendar className="ml-[2px] -mt-1 inline-block h-4 w-4 ltr:mr-[10px] rtl:ml-[10px]" />
{isClientTimezoneAvailable &&
typeof booking.startTime === "string" &&
parseDate(dayjs(booking.startTime), i18n.language, {
parseDateTimeWithTimeZone(booking.startTime, i18n.language, timezone, {
selectedTimeFormat: timeFormat,
})}
</p>
@@ -634,7 +637,12 @@ const BookingPage = ({
{currentSlotBooking
? eventType.seatsPerTimeSlot - currentSlotBooking.attendees.length
: eventType.seatsPerTimeSlot}{" "}
/ {eventType.seatsPerTimeSlot} {t("seats_available")}
/ {eventType.seatsPerTimeSlot}{" "}
{t("seats_available", {
count: currentSlotBooking
? eventType.seatsPerTimeSlot - currentSlotBooking.attendees.length
: eventType.seatsPerTimeSlot,
})}
</p>
</div>
)}
@@ -7,16 +7,13 @@ import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hook
import { WebhookForm } from "@calcom/features/webhooks/components";
import type { WebhookFormSubmitData } from "@calcom/features/webhooks/components/WebhookForm";
import WebhookListItem from "@calcom/features/webhooks/components/WebhookListItem";
import { APP_NAME } from "@calcom/lib/constants";
import { subscriberUrlReserved } from "@calcom/features/webhooks/lib/subscriberUrlReserved";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
import { Alert, Button, Dialog, DialogContent, EmptyScreen, showToast } from "@calcom/ui";
import { Plus, Lock } from "@calcom/ui/components/icon";
export const EventTeamWebhooksTab = ({
eventType,
team,
}: Pick<EventTypeSetupProps, "eventType" | "team">) => {
export const EventWebhooksTab = ({ eventType }: Pick<EventTypeSetupProps, "eventType">) => {
const { t } = useLocale();
const utils = trpc.useContext();
@@ -32,12 +29,6 @@ export const EventTeamWebhooksTab = ({
const [editModalOpen, setEditModalOpen] = useState(false);
const [webhookToEdit, setWebhookToEdit] = useState<Webhook>();
const subscriberUrlReserved = (subscriberUrl: string, id?: string): boolean => {
return !!webhooks?.find(
(webhook) => webhook.subscriberUrl === subscriberUrl && (!id || webhook.id !== id)
);
};
const editWebhookMutation = trpc.viewer.webhook.edit.useMutation({
async onSuccess() {
setEditModalOpen(false);
@@ -61,7 +52,14 @@ export const EventTeamWebhooksTab = ({
});
const onCreateWebhook = async (values: WebhookFormSubmitData) => {
if (subscriberUrlReserved(values.subscriberUrl, values.id)) {
if (
subscriberUrlReserved({
subscriberUrl: values.subscriberUrl,
id: values.id,
webhooks,
eventTypeId: eventType.id,
})
) {
showToast(t("webhook_subscriber_url_reserved"), "error");
return;
}
@@ -102,7 +100,7 @@ export const EventTeamWebhooksTab = ({
return (
<div>
{team && webhooks && !isLoading && (
{webhooks && !isLoading && (
<>
<div>
<div>
@@ -139,7 +137,7 @@ export const EventTeamWebhooksTab = ({
<EmptyScreen
Icon={TbWebhook}
headline={t("create_your_first_webhook")}
description={t("create_your_first_team_webhook_description", { appName: APP_NAME })}
description={t("first_event_type_webhook_description")}
buttonRaw={
isChildrenManagedEventType && !isManagedEventType ? (
<Button StartIcon={Lock} color="secondary" disabled>
@@ -162,6 +160,7 @@ export const EventTeamWebhooksTab = ({
title={t("create_webhook")}
description={t("create_webhook_team_event_type")}>
<WebhookForm
noRoutingFormTriggers={true}
onSubmit={onCreateWebhook}
onCancel={() => setCreateModalOpen(false)}
apps={installedApps?.items.map((app) => app.slug)}
@@ -172,11 +171,19 @@ export const EventTeamWebhooksTab = ({
<Dialog open={editModalOpen} onOpenChange={(isOpen) => !isOpen && setEditModalOpen(false)}>
<DialogContent enableOverflow title={t("edit_webhook")}>
<WebhookForm
noRoutingFormTriggers={true}
webhook={webhookToEdit}
apps={installedApps?.items.map((app) => app.slug)}
onCancel={() => setEditModalOpen(false)}
onSubmit={(values: WebhookFormSubmitData) => {
if (subscriberUrlReserved(values.subscriberUrl, webhookToEdit?.id || "")) {
if (
subscriberUrlReserved({
subscriberUrl: values.subscriberUrl,
id: webhookToEdit?.id,
webhooks,
eventTypeId: eventType.id,
})
) {
showToast(t("webhook_subscriber_url_reserved"), "error");
return;
}
+6 -2
View File
@@ -1,4 +1,5 @@
import Link from "next/link";
import { useRouter } from "next/router";
import { WEBAPP_URL } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
@@ -14,11 +15,14 @@ type TeamTypeWithSafeHtml = Omit<TeamType, "members"> & { members: MemberType[]
const Member = ({ member, teamName }: { member: MemberType; teamName: string | null }) => {
const { t } = useLocale();
const router = useRouter();
const isBioEmpty = !member.bio || !member.bio.replace("<p><br></p>", "").length;
// slug is a route parameter, we don't want to forward it to the next route
const { slug: _slug, ...queryParamsToForward } = router.query;
return (
<Link key={member.id} href={`/${member.username}`}>
<Link key={member.id} href={{ pathname: `/${member.username}`, query: queryParamsToForward }}>
<div className="sm:min-w-80 sm:max-w-80 bg-default hover:bg-muted border-subtle group flex min-h-full flex-col space-y-2 rounded-md border p-4 hover:cursor-pointer">
<Avatar
size="md"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@calcom/web",
"version": "2.9.1",
"version": "2.9.2",
"private": true,
"scripts": {
"analyze": "ANALYZE=true next build",
+29 -24
View File
@@ -23,35 +23,40 @@ const logoApiSchema = z.object({
const SYSTEM_SUBDOMAINS = ["console", "app", "www"];
async function getTeamLogos(subdomain: string) {
if (
// if not cal.com
IS_SELF_HOSTED ||
// missing subdomain (empty string)
!subdomain ||
// in SYSTEM_SUBDOMAINS list
SYSTEM_SUBDOMAINS.includes(subdomain)
) {
try {
if (
// if not cal.com
IS_SELF_HOSTED ||
// missing subdomain (empty string)
!subdomain ||
// in SYSTEM_SUBDOMAINS list
SYSTEM_SUBDOMAINS.includes(subdomain)
) {
throw new Error("No custom logo needed");
}
// load from DB
const { default: prisma } = await import("@calcom/prisma");
const team = await prisma.team.findUniqueOrThrow({
where: {
slug: subdomain,
},
select: {
appLogo: true,
appIconLogo: true,
},
});
// try to use team logos, otherwise default to LOGO/LOGO_ICON regardless
return {
appLogo: team.appLogo || `${WEBAPP_URL}${LOGO}`,
appIconLogo: team.appIconLogo || `${WEBAPP_URL}${LOGO_ICON}`,
};
} catch (error) {
if (error instanceof Error) console.error(error.message);
return {
appLogo: `${WEBAPP_URL}${LOGO}`,
appIconLogo: `${WEBAPP_URL}${LOGO_ICON}`,
};
}
// load from DB
const { default: prisma } = await import("@calcom/prisma");
const team = await prisma.team.findUniqueOrThrow({
where: {
slug: subdomain,
},
select: {
appLogo: true,
appIconLogo: true,
},
});
// try to use team logos, otherwise default to LOGO/LOGO_ICON regardless
return {
appLogo: team.appLogo || `${WEBAPP_URL}${LOGO}`,
appIconLogo: team.appIconLogo || `${WEBAPP_URL}${LOGO_ICON}`,
};
}
/**
+14 -3
View File
@@ -33,14 +33,16 @@ const triggerWebhook = async ({
booking: {
userId: number | undefined;
eventTypeId: number | null;
teamId?: number | null;
};
}) => {
const eventTrigger: WebhookTriggerEvents = "RECORDING_READY";
// Send Webhook call if hooked to BOOKING.RECORDING_READY
const subscriberOptions = {
userId: booking.userId ?? 0,
eventTypeId: booking.eventTypeId ?? 0,
userId: booking.userId,
eventTypeId: booking.eventTypeId,
triggerEvent: eventTrigger,
teamId: booking.teamId,
};
const webhooks = await getWebhooks(subscriberOptions);
@@ -87,6 +89,11 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
location: true,
isRecorded: true,
eventTypeId: true,
eventType: {
select: {
teamId: true,
},
},
user: {
select: {
id: true,
@@ -164,7 +171,11 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
await triggerWebhook({
evt,
downloadLink,
booking: { userId: booking?.user?.id, eventTypeId: booking.eventTypeId },
booking: {
userId: booking?.user?.id,
eventTypeId: booking.eventTypeId,
teamId: booking.eventType?.teamId,
},
});
const isSendingEmailsAllowed = IS_SELF_HOSTED || session?.user?.belongsToActiveTeam;
@@ -0,0 +1,35 @@
import { google } from "googleapis";
import type { NextApiRequest, NextApiResponse } from "next";
import getAppKeysFromSlug from "@calcom/app-store/_utils/getAppKeysFromSlug";
import { WEBAPP_URL } from "@calcom/lib/constants";
const scopes = [
"https://www.googleapis.com/auth/admin.directory.user.readonly",
"https://www.googleapis.com/auth/admin.directory.customer.readonly",
];
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method === "GET") {
// Get appKeys from google-calendar
const { client_id, client_secret } = await getAppKeysFromSlug("google-calendar");
if (!client_id || typeof client_id !== "string")
return res.status(400).json({ message: "Google client_id missing." });
if (!client_secret || typeof client_secret !== "string")
return res.status(400).json({ message: "Google client_secret missing." });
// use differnt callback to normal calendar connection
const redirect_uri = WEBAPP_URL + "/api/teams/googleworkspace/callback";
const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uri);
const authUrl = oAuth2Client.generateAuthUrl({
access_type: "offline",
scope: scopes,
prompt: "consent",
state: JSON.stringify({ teamId: req.query.teamId }),
});
res.status(200).json({ url: authUrl });
}
}
@@ -0,0 +1,63 @@
import { google } from "googleapis";
import type { NextApiRequest, NextApiResponse } from "next";
import { z } from "zod";
import getAppKeysFromSlug from "@calcom/app-store/_utils/getAppKeysFromSlug";
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { WEBAPP_URL } from "@calcom/lib/constants";
import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl";
import prisma from "@calcom/prisma";
const stateSchema = z.object({
teamId: z.string(),
});
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const session = await getServerSession({ req, res });
if (!session?.user?.id) {
return res.status(401).json({ message: "You must be logged in to do this" });
}
const { code, state } = req.query;
const parsedState = stateSchema.parse(JSON.parse(state as string));
const { teamId } = parsedState;
if (code && typeof code !== "string") {
res.status(400).json({ message: "`code` must be a string" });
return;
}
const { client_id, client_secret } = await getAppKeysFromSlug("google-calendar");
if (!client_id || typeof client_id !== "string")
return res.status(400).json({ message: "Google client_id missing." });
if (!client_secret || typeof client_secret !== "string")
return res.status(400).json({ message: "Google client_secret missing." });
const redirect_uri = WEBAPP_URL + "/api/teams/googleworkspace/callback";
const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uri);
if (!code) {
throw new Error("No code provided");
}
const credentials = await oAuth2Client.getToken(code);
await prisma.credential.create({
data: {
type: "google_workspace_directory",
key: credentials.res?.data,
userId: session.user.id,
},
});
if (!teamId) {
res.redirect(getSafeRedirectUrl(WEBAPP_URL + "/settings") ?? `${WEBAPP_URL}/teams`);
}
res.redirect(
getSafeRedirectUrl(WEBAPP_URL + `/settings/teams/${teamId}/members?inviteModal=true&bulk=true`) ??
`${WEBAPP_URL}/teams`
);
}
@@ -0,0 +1,4 @@
import { createNextApiHandler } from "@calcom/trpc/server/createNextApiHandler";
import { googleWorkspaceRouter } from "@calcom/trpc/server/routers/viewer/googleWorkspace/_router";
export default createNextApiHandler(googleWorkspaceRouter);
-1
View File
@@ -73,7 +73,6 @@ function SingleAppPage(props: inferSSRProps<typeof getStaticProps>) {
email={data.email}
licenseRequired={data.licenseRequired}
teamsPlanRequired={data.teamsPlanRequired}
isProOnly={data.isProOnly}
descriptionItems={source.data?.items as string[] | undefined}
isTemplate={data.isTemplate}
dependencies={data.dependencies}
+12 -4
View File
@@ -1,3 +1,4 @@
import { zodResolver } from "@hookform/resolvers/zod";
import classNames from "classnames";
import { jwtVerify } from "jose";
import type { GetServerSidePropsContext } from "next";
@@ -8,6 +9,7 @@ import type { CSSProperties } from "react";
import { useState } from "react";
import { FormProvider, useForm } from "react-hook-form";
import { FaGoogle } from "react-icons/fa";
import { z } from "zod";
import { SAMLLogin } from "@calcom/features/auth/SAMLLogin";
import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
@@ -39,7 +41,6 @@ interface LoginValues {
totpCode: string;
csrfToken: string;
}
export default function Login({
csrfToken,
isGoogleLoginEnabled,
@@ -50,7 +51,14 @@ export default function Login({
}: inferSSRProps<typeof _getServerSideProps> & WithNonceProps) {
const { t } = useLocale();
const router = useRouter();
const methods = useForm<LoginValues>();
const formSchema = z.object({
email: z
.string()
.min(1, `${t("error_required_field")}`)
.email(`${t("enter_valid_email")}`),
password: z.string().min(1, `${t("error_required_field")}`),
});
const methods = useForm<LoginValues>({ resolver: zodResolver(formSchema) });
const { register, formState } = methods;
const [twoFactorRequired, setTwoFactorRequired] = useState(!!totpEmail || false);
@@ -150,7 +158,7 @@ export default function Login({
: null
}>
<FormProvider {...methods}>
<form onSubmit={methods.handleSubmit(onSubmit)} data-testid="login-form">
<form onSubmit={methods.handleSubmit(onSubmit)} noValidate data-testid="login-form">
<div>
<input defaultValue={csrfToken || undefined} type="hidden" hidden {...register("csrfToken")} />
</div>
@@ -172,7 +180,7 @@ export default function Login({
className="mb-0"
{...register("password")}
/>
<div className="absolute -top-1.5 ltr:right-0 rtl:left-0">
<div className="absolute -top-[2px] ltr:right-0 rtl:left-0">
<Link
href="/auth/forgot-password"
tabIndex={-1}
+1 -1
View File
@@ -53,7 +53,7 @@ const AvailabilityView = ({ user }: { user: User }) => {
{t("overview_of_day")}{" "}
<input
type="date"
className="inline h-8 border-none p-0"
className="inline h-8 border-none bg-inherit p-0"
defaultValue={formattedSelectedDate}
onChange={(e) => {
if (e.target.value) setSelectedDate(e.target.value);
+4 -2
View File
@@ -443,8 +443,10 @@ export default function Success(props: SuccessProps) {
)}
{bookingInfo?.attendees.map((attendee) => (
<div key={attendee.name + attendee.email} className="mb-3 last:mb-0">
{attendee.name && <p>{attendee.name}</p>}
<p data-testid={`attendee-${attendee.email}`}>{attendee.email}</p>
{attendee.name && (
<p data-testid={`attendee-name-${attendee.name}`}>{attendee.name}</p>
)}
<p data-testid={`attendee-email-${attendee.email}`}>{attendee.email}</p>
</div>
))}
</div>
+2 -2
View File
@@ -39,8 +39,8 @@ import { EventLimitsTab } from "@components/eventtype/EventLimitsTab";
import { EventRecurringTab } from "@components/eventtype/EventRecurringTab";
import { EventSetupTab } from "@components/eventtype/EventSetupTab";
import { EventTeamTab } from "@components/eventtype/EventTeamTab";
import { EventTeamWebhooksTab } from "@components/eventtype/EventTeamWebhooksTab";
import { EventTypeSingleLayout } from "@components/eventtype/EventTypeSingleLayout";
import { EventWebhooksTab } from "@components/eventtype/EventWebhooksTab";
import EventWorkflowsTab from "@components/eventtype/EventWorkfowsTab";
import { ssrInit } from "@server/lib/ssr";
@@ -309,7 +309,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
workflows={eventType.workflows.map((workflowOnEventType) => workflowOnEventType.workflow)}
/>
),
webhooks: <EventTeamWebhooksTab eventType={eventType} team={team} />,
webhooks: <EventWebhooksTab eventType={eventType} />,
} as const;
const handleSubmit = async (values: FormValues) => {
+14 -2
View File
@@ -56,6 +56,9 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio }: TeamPageProps) {
);
}
// slug is a route parameter, we don't want to forward it to the next route
const { slug: _slug, ...queryParamsToForward } = router.query;
const EventTypes = () => (
<ul className="border-subtle rounded-md border">
{team.eventTypes.map((type, index) => (
@@ -67,7 +70,10 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio }: TeamPageProps) {
)}>
<div className="px-6 py-4 ">
<Link
href={`/team/${team.slug}/${type.slug}`}
href={{
pathname: `/team/${team.slug}/${type.slug}`,
query: queryParamsToForward,
}}
onClick={async () => {
sdkActionManager?.fire("eventTypeSelected", {
eventType: type,
@@ -146,7 +152,13 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio }: TeamPageProps) {
color="minimal"
EndIcon={ArrowRight}
className="dark:hover:bg-darkgray-200"
href={`/team/${team.slug}?members=1`}
href={{
pathname: `/team/${team.slug}`,
query: {
members: "1",
...queryParamsToForward,
},
}}
shallow={true}>
{t("book_a_team_member")}
</Button>
+9 -2
View File
@@ -8,6 +8,8 @@ import {
bookTimeSlot,
selectFirstAvailableTimeSlotNextMonth,
selectSecondAvailableTimeSlotNextMonth,
testEmail,
testName,
} from "./lib/testUtils";
test.describe.configure({ mode: "parallel" });
@@ -101,6 +103,8 @@ testBothBookers.describe("pro user", () => {
// Because it tests the entire booking flow + the cancellation + rebooking
test.setTimeout(testInfo.timeout * 3);
await bookFirstEvent(page);
await expect(page.locator(`[data-testid="attendee-email-${testEmail}"]`)).toHaveText(testEmail);
await expect(page.locator(`[data-testid="attendee-name-${testName}"]`)).toHaveText(testName);
const [pro] = users.get();
await pro.login();
@@ -114,7 +118,10 @@ testBothBookers.describe("pro user", () => {
const cancelledHeadline = await page.locator('[data-testid="cancelled-headline"]').innerText();
await expect(cancelledHeadline).toBe("This event is cancelled");
expect(cancelledHeadline).toBe("This event is cancelled");
await expect(page.locator(`[data-testid="attendee-email-${testEmail}"]`)).toHaveText(testEmail);
await expect(page.locator(`[data-testid="attendee-name-${testName}"]`)).toHaveText(testName);
await page.goto(`/${pro.username}`);
await bookFirstEvent(page);
@@ -155,7 +162,7 @@ testBothBookers.describe("pro user", () => {
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
additionalGuests.forEach(async (email) => {
await expect(page.locator(`[data-testid="attendee-${email}"]`)).toHaveText(email);
await expect(page.locator(`[data-testid="attendee-email-${email}"]`)).toHaveText(email);
});
});
});
+12 -6
View File
@@ -419,9 +419,13 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => {
// Go to cancel page and see that attendees are listed and myself as I'm owner of the booking
await page.goto(`/booking/${booking.uid}?cancel=true&allRemainingBookings=false`);
const foundFirstAttendeeAsOwner = await page.locator('p[data-testid="attendee-first+seats@cal.com"]');
const foundFirstAttendeeAsOwner = await page.locator(
'p[data-testid="attendee-email-first+seats@cal.com"]'
);
await expect(foundFirstAttendeeAsOwner).toHaveCount(1);
const foundSecondAttendeeAsOwner = await page.locator('p[data-testid="attendee-second+seats@cal.com"]');
const foundSecondAttendeeAsOwner = await page.locator(
'p[data-testid="attendee-email-second+seats@cal.com"]'
);
await expect(foundSecondAttendeeAsOwner).toHaveCount(1);
await page.pause();
await page.goto("auth/logout");
@@ -433,10 +437,12 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => {
);
// No attendees should be displayed only the one that it's cancelling
const notFoundSecondAttendee = await page.locator('p[data-testid="attendee-second+seats@cal.com"]');
const notFoundSecondAttendee = await page.locator(
'p[data-testid="attendee-email-second+seats@cal.com"]'
);
await expect(notFoundSecondAttendee).toHaveCount(0);
const foundFirstAttendee = await page.locator('p[data-testid="attendee-first+seats@cal.com"]');
const foundFirstAttendee = await page.locator('p[data-testid="attendee-email-first+seats@cal.com"]');
await expect(foundFirstAttendee).toHaveCount(1);
await prisma.eventType.update({
@@ -453,11 +459,11 @@ testBothBookers.describe("Booking with Seats", (bookerVariant) => {
);
// Now attendees should be displayed
const foundSecondAttendee = await page.locator('p[data-testid="attendee-second+seats@cal.com"]');
const foundSecondAttendee = await page.locator('p[data-testid="attendee-email-second+seats@cal.com"]');
await expect(foundSecondAttendee).toHaveCount(1);
const foundFirstAttendeeAgain = await page
.locator('p[data-testid="attendee-first+seats@cal.com"]')
.locator('p[data-testid="attendee-email-first+seats@cal.com"]')
.first();
await expect(foundFirstAttendeeAgain).toHaveCount(1);
});
+5 -2
View File
@@ -15,6 +15,9 @@ type Request = IncomingMessage & { body?: unknown };
type RequestHandlerOptions = { req: Request; res: ServerResponse };
type RequestHandler = (opts: RequestHandlerOptions) => void;
export const testEmail = "test@example.com";
export const testName = "Test Testson";
export function createHttpServer(opts: { requestHandler?: RequestHandler } = {}) {
const {
requestHandler = ({ res }) => {
@@ -133,8 +136,8 @@ export async function bookFirstEvent(page: Page) {
export const bookTimeSlot = async (page: Page, opts?: { name?: string; email?: string }) => {
// --- fill form
await page.fill('[name="name"]', opts?.name ?? "Test Testson");
await page.fill('[name="email"]', opts?.email ?? "test@example.com");
await page.fill('[name="name"]', opts?.name ?? testName);
await page.fill('[name="email"]', opts?.email ?? testEmail);
await page.press('[name="email"]', "Enter");
};
// Provide an standalone localize utility not managed by next-i18n
@@ -52,8 +52,21 @@ test.describe("Manage Booking Questions", () => {
// Considering there are many steps in it, it would need more than default test timeout
test.setTimeout(testInfo.timeout * 3);
const user = await createAndLoginUserWithEventTypes({ users });
const team = await prisma.team.findFirst({
where: {
members: {
some: {
userId: user.id,
},
},
},
select: {
id: true,
},
});
const webhookReceiver = await addWebhook(user);
const teamId = team?.id ?? 0;
const webhookReceiver = await addWebhook(undefined, teamId);
await test.step("Go to First Team Event", async () => {
const $eventTypes = page.locator("[data-testid=event-types]").nth(1).locator("li a");
@@ -79,7 +92,6 @@ async function runTestStepsCommonForTeamAndUserEventType(
bookerVariant: BookerVariants
) {
await page.click('[href$="tabName=advanced"]');
await test.step("Add Question and see that it's shown on Booking Page at appropriate position", async () => {
await addQuestionAndSave({
page,
@@ -391,19 +403,35 @@ async function saveEventType(page: Page) {
await page.locator("[data-testid=update-eventtype]").click();
}
async function addWebhook(user: Awaited<ReturnType<typeof createAndLoginUserWithEventTypes>>) {
async function addWebhook(
user?: Awaited<ReturnType<typeof createAndLoginUserWithEventTypes>>,
teamId?: number | null
) {
const webhookReceiver = createHttpServer();
await prisma.webhook.create({
data: {
id: uuid(),
userId: user.id,
subscriberUrl: webhookReceiver.url,
eventTriggers: [
WebhookTriggerEvents.BOOKING_CREATED,
WebhookTriggerEvents.BOOKING_CANCELLED,
WebhookTriggerEvents.BOOKING_RESCHEDULED,
],
},
});
const data: {
id: string;
subscriberUrl: string;
eventTriggers: WebhookTriggerEvents[];
userId?: number;
teamId?: number;
} = {
id: uuid(),
subscriberUrl: webhookReceiver.url,
eventTriggers: [
WebhookTriggerEvents.BOOKING_CREATED,
WebhookTriggerEvents.BOOKING_CANCELLED,
WebhookTriggerEvents.BOOKING_RESCHEDULED,
],
};
if (teamId) {
data.teamId = teamId;
} else if (user) {
data.userId = user.id;
}
await prisma.webhook.create({ data });
return webhookReceiver;
}
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#0052B4" width="513" height="342"/>
<g>
<path fill="#FFFFFF" d="M440.1,181.1c-0.1,39.2-6.4,81.4-57.4,101.5c-51.1-20.1-57.3-62.3-57.4-101.5L440.1,181.1L440.1,181.1z"/>
<path fill="#29DBFF" d="M439.6,197.7c-2.8,34.9-12.4,67.4-57,85c-44.4-17.6-54.5-51.2-56.9-84.9"/>
<path fill="#FFFFFF" d="M437.8,214.1c-3.2,24.3-16.7,53.5-55.1,68.6c-38.4-15.1-50.5-42.5-55.1-68.4"/>
<path fill="#29DBFF" d="M434.2,230.3c-5.7,17.7-19.3,39.4-51.3,52.8c-32-12.6-45.2-33.8-51.4-53"/>
<path fill="#FFFFFF" d="M426.7,246.9c-6.5,11.3-17.7,25.4-44,35.9c-27.5-11.5-37.4-25.3-44-36.1"/>
<path fill="#29DBFF" d="M412.4,265.1c-8.1,7.2-12,11.2-29.6,17.9c-20.1-7.9-22.6-11.6-29.2-17.5"/>
<path fill="#5CC85C" d="M383.3,231.6c-0.2-0.2-27.9,35.7-27.9,35.7c-1.8-1.3-10-9.5-13.3-15l41.3-50.1l40.2,49.7
c-3.9,6.5-11.4,13.6-13.2,15"/>
</g>
<polygon fill="#5CC85C" points="382.6,85.3 356.1,130.3 409.1,130.3 409.1,130.3 "/>
<ellipse transform="matrix(0.134 -0.991 0.991 0.134 28.7247 484.2523)" fill="#F7A226" cx="291.4" cy="225.7" rx="48.7" ry="15.7"/>
<ellipse transform="matrix(0.373 -0.9278 0.9278 0.373 37.247 384.4472)" fill="#DDC7AB" cx="303.1" cy="164.7" rx="11.7" ry="7.2"/>
<ellipse transform="matrix(0.1437 -0.9896 0.9896 0.1437 -19.091 521.3171)" fill="#DDC7AB" cx="291.7" cy="271.7" rx="11.4" ry="3.3"/>
<ellipse transform="matrix(0.9986 -5.352928e-02 5.352928e-02 0.9986 -13.9925 16.4237)" fill="#DDC7AB" cx="299.6" cy="269.4" rx="3.3" ry="11"/>
<ellipse transform="matrix(0.9303 -0.3668 0.3668 0.9303 -51.8254 129.3871)" fill="#DDC7AB" cx="314.5" cy="201.1" rx="4.1" ry="13.7"/>
<ellipse transform="matrix(0.9303 -0.3668 0.3668 0.9303 -43.1881 128.875)" fill="#DDC7AB" cx="317.5" cy="178.1" rx="13.7" ry="4.1"/>
<ellipse transform="matrix(0.991 -0.134 0.134 0.991 -26.0008 65.5194)" fill="#F7A226" cx="473.6" cy="225.9" rx="15.7" ry="48.7"/>
<ellipse transform="matrix(0.9278 -0.373 0.373 0.9278 -28.1478 184.2457)" fill="#DDC7AB" cx="462" cy="164.9" rx="7.2" ry="11.7"/>
<ellipse transform="matrix(0.9896 -0.1437 0.1437 0.9896 -34.1512 70.8368)" fill="#DDC7AB" cx="473.4" cy="271.9" rx="3.3" ry="11.4"/>
<ellipse transform="matrix(5.352928e-02 -0.9986 0.9986 5.352928e-02 171.3404 719.9983)" fill="#DDC7AB" cx="465.5" cy="269.6" rx="11" ry="3.3"/>
<ellipse transform="matrix(0.3668 -0.9303 0.9303 0.3668 98.0689 546.5782)" fill="#DDC7AB" cx="450.6" cy="201.2" rx="13.7" ry="4.1"/>
<ellipse transform="matrix(0.3668 -0.9303 0.9303 0.3668 117.5679 529.2617)" fill="#DDC7AB" cx="447.6" cy="178.3" rx="4.1" ry="13.7"/>
<polygon fill="#B0C6CC" points="373.3,130.3 356.1,155 373.9,181.1 396,181.1 400.7,155.7 395.3,130.3 "/>
<polygon fill="#FFFFFF" points="256,0 256,117.4 209.9,117.4 256,148.1 256,170.7 233.4,170.7 160,121.8 160,170.7 96,170.7 96,121.8
22.6,170.7 0,170.7 0,148.1 46.1,117.4 0,117.4 0,53.4 46.1,53.4 0,22.7 0,0 22.6,0 96,48.9 96,0 160,0 160,48.9 233.4,0 "/>
<polygon fill="#D80027" points="144,0 112,0 112,69.4 0,69.4 0,101.4 112,101.4 112,170.7 144,170.7 144,101.4 256,101.4 256,69.4
144,69.4 "/>
<polygon fill="#2E52B2" points="256,22.7 256,53.4 209.9,53.4 "/>
<g>
<polygon fill="#D80027" points="0,170.7 0,159.7 62.5,117.4 85.1,117.4 7.3,170.7 "/>
</g>
<polygon fill="#D80027" points="7.3,0.1 85.1,53.3 62.5,53.3 0,11.1 0,0.1 "/>
<polygon fill="#D80027" points="256,0.1 256,11.1 193.5,53.4 170.9,53.4 248.7,0.1 "/>
<polygon fill="#D80027" points="248.7,170.7 170.9,117.4 193.5,117.4 256,159.7 256,170.7 "/>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<style type="text/css">
.st0{fill:#FFDA44;}
.st1{fill:#0052B4;}
.st2{fill:#D80027;}
.st3{fill:none;stroke:#D80027;stroke-width:7;stroke-miterlimit:10;}
.st4{fill:none;stroke:#D80027;stroke-width:4;stroke-miterlimit:10;}
.st5{fill:#BC8B00;}
</style>
<rect fill="#FFDA44" width="513" height="342"/>
<rect fill="#0052B4" width="171" height="342"/>
<rect x="342" fill="#D80027" width="171" height="342"/>
<rect x="198.9" y="113.6" fill="#D80027" width="57.1" height="64.8"/>
<g stroke="#D80027" stroke-width="7">
<line x1="267.6" y1="113.6" x2="267.6" y2="178.3"/>
<line x1="284.2" y1="113.6" x2="284.2" y2="178.3"/>
<line x1="300.8" y1="113.6" x2="300.8" y2="178.3"/>
</g>
<g stroke="#D80027" stroke-width="5">
<line x1="247.4" y1="178.4" x2="247.4" y2="243.1"/>
<line x1="234.1" y1="178.4" x2="234.1" y2="243.1"/>
<line x1="220.8" y1="178.5" x2="220.8" y2="232.4"/>
<line x1="207.1" y1="178.5" x2="207.1" y2="225.6"/>
</g>
<polygon fill="#FFDA44" points="199.9,146 227.5,113.6 256,145.9 227.9,178.3 "/>
<path fill="#BC8B00" d="M182.2,95.9v92.2c0,34.3,27.3,54.2,48.6,64.5c-0.8,1.4,25.1,8.3,25.1,8.3s25.9-6.9,25.1-8.3
c21.4-10.3,48.6-30.1,48.6-64.5V95.9H182.2z M312.1,188.1c0,16.9-10,29.4-32.8,43.9c-8.6,5.5-17.5,9-23.3,11
c-5.8-2-14.7-5.5-23.3-11c-22.8-14.5-32.8-28-32.8-43.9v-74.5h112.2L312.1,188.1z"/>
<rect x="264.4" y="188.9" fill="#D80027" width="29.5" height="8.6"/>
<rect x="264.4" y="206.5" fill="#D80027" width="29.5" height="8.6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect y="0" fill="#009e49" width="513" height="114"/>
<rect y="228" width="513" height="114"/>
<rect y="0" fill="#ce1126" width="171" height="342"/>
</svg>

After

Width:  |  Height:  |  Size: 312 B

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#DB3E00" width="513" height="342"/>
<rect x="331" y="0" fill="#479900" width="182" height="342"/>
<rect y="0" width="181.8" height="342"/>
<path fill="#FFFFFF" d="M256,126.7c-19.4,0-35.2,15.8-35.2,35.2v52.8h70.4v-52.8C291.2,142.4,275.4,126.7,256,126.7z"/>
<path fill="#FFFFFF" d="M256,84.3c-47.7,0-86.4,38.7-86.4,86.4S208.3,257,256,257c47.7,0,86.4-38.7,86.4-86.4S303.7,84.3,256,84.3z
M256,242c-39.4,0-71.4-32-71.4-71.4c0-39.4,32-71.4,71.4-71.4c39.4,0,71.4,32,71.4,71.4C327.4,210.1,295.4,242,256,242z"/>
</svg>

After

Width:  |  Height:  |  Size: 646 B

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" width="513" height="342"/>
<path fill="#0072c6" d="M88.8,136.5c-2.2,12.9-3.4,26.2-3.4,39.8c0,13.6,1.2,27,3.4,39.8L256,228.3l167.2-12.1
c2.2-12.9,3.4-26.2,3.4-39.8s-1.2-27-3.4-39.8"/>
<path fill="#FFFFFF" d="M423.2,219H88.8c15.8,69.8,84.7,122.3,167.2,122.3S407.4,288.8,423.2,219z"/>
<polygon fill="#FFDA44" points="365.9,136.5 146.1,136.5 191,115.4 167.1,71.9 215.9,81.3 222,32 256,68.2 290,32 296.1,81.3
344.9,71.9 321,115.4 "/>
<g fill="#ce1126">
<polygon points="256.5,342 0,0 0,342 "/>
<polygon points="513,342 513,0 256,342 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 678 B

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#00318b" width="513" height="342"/>
<path fill="#FFFFFF" d="M454.8,265.38c7.94-10.93,13.24-24.27,13.24-40.42V104.89c-10.04,7.54-22.5,12.01-36.02,12.01
c-19.64,0-37.07-9.43-48.03-24.01c-10.95,14.58-28.39,24.01-48.03,24.01c-13.52,0-25.99-4.47-36.02-12v120.06
c0,16.16,5.3,29.5,13.24,40.42L454.8,265.38L454.8,265.38z"/>
<path fill="#8DCCFF" d="M310.23,260.98C332.65,296.96,384,309,384,309s51.35-12.04,73.77-48.02H310.23L310.23,260.98z"/>
<path fill="#D87B00" d="M396.66,172.21c0.32,1.42,8.72,10.17,17.56,20.15c1.39,1.57-8.74,12.63-6.91,12.59
c4.75-0.12,19.27-17.26,19.34,6.65c0.05,15.94-30,27.51-30,27.51h17.47l0.65,14.96c0,0,4.97-13.34,7.59-16.57
c8.1-9.97,20.18-30.07,34.59-27.1c14.41,2.97-13.66-13.92-13.66-13.92s-5.2-15.19-16.63-16.97c-10.06-1.57-14.29-2.51-26.64-7.3
C398.34,171.56,396.14,169.89,396.66,172.21z"/>
<path fill="#D87B00" d="M359.69,198.69c1.07-0.99,4.46-12.63,8.69-25.28c0.67-1.99,15.31,1.27,14.35-0.3
c-2.47-4.06-24.58-8.08-3.9-20.08c13.79-8,38.82,12.27,38.82,12.27l-8.72-15.14l12.64-8.03c0,0-14.05,2.35-18.14,1.69
c-12.68-2.04-36.13-2.48-40.75-16.45c-4.62-13.97-5.25,18.79-5.25,18.79s-10.56,12.08-6.4,22.88c3.66,9.5,4.96,13.64,6.97,26.73
C358.29,197.56,357.94,200.3,359.69,198.69z"/>
<path fill="#D87B00" d="M395.67,219.87c-1.39-0.43-13.16,2.49-26.22,5.18c-2.06,0.42-6.59-13.88-7.47-12.26
c-2.27,4.17,5.36,25.31-15.41,13.45c-13.84-7.91-8.89-39.73-8.89-39.73l-8.71,15.14l-13.29-6.9c0,0,9.09,10.96,10.57,14.84
c4.6,11.99,16,32.49,6.24,43.49c-9.76,11.01,18.88-4.9,18.88-4.9s15.76,3.07,23-5.96c6.38-7.94,9.3-11.14,19.61-19.45
C395.41,221.65,397.95,220.58,395.67,219.87z"/>
<g>
<polygon fill="#FFFFFF" points="256.5,0 233.4,0 160,48.9 160,0 96,0 96,48.9 22.6,0 0,0 0,22.7 46.1,53.4 0,53.4 0,117.4 46.1,117.4
0,148.1 0,171 22.6,171 96,121.8 96,171 160,171 160,121.8 233.4,171 256.5,171 256.5,148.1 209.9,117.4 256.5,117.4
256.5,53.4 209.9,53.4 256.5,22.7 "/>
<polygon fill="#D80027" points="144,0 112,0 112,69.4 0,69.4 0,101.4 112,101.4 112,171 144,171 144,101.4 256.5,101.4 256.5,69.4
144,69.4 "/>
<polygon fill="#D80027" points="0,171 0,159.7 62.5,117.4 85.1,117.4 7.3,171 "/>
<polygon fill="#D80027" points="7.3,0.1 85.1,53.3 62.5,53.3 0,11.1 0,0.1 "/>
<polygon fill="#D80027" points="256.5,0.1 256.5,11.1 193.5,53.4 170.9,53.4 248.7,0.1 "/>
<polygon fill="#D80027" points="248.7,171 170.9,117.4 193.5,117.4 256.5,159.7 256.5,171 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 60">
<rect x="0" fill="#ED2024" width="90" height="60"/>
<polygon fill="#212121" points="32.5,12.2 32.5,28.2 39.6,30.7 34.6,35.6 37,38.6 42.3,33.1 43.5,35.4 40.5,40.3 44.1,45.9 42.3,48.5
45.1,52.1 47.8,48.4 46.3,45.8 49.3,40 46.6,35.4 47.8,33.1 53,38.6 55.5,35.7 50.3,30.6 57.5,28 57.5,12.2 52.3,14.1 52.2,17.9
48.9,18.2 48.9,15.6 50.6,13.3 56.2,11.1 53.9,10.7 55.3,9.5 56.2,9.9 55.4,8.5 54,9 53,7.9 47.5,9 48.9,10.1 45.1,15 41.3,10.2
42.6,9.1 37.6,7.9 36.2,9 34.7,8.6 33.9,10 34.8,9.4 36.4,10.5 34.1,11 39.6,13 41.2,15.3 41.2,18.2 37.9,17.9 37.9,14.3 "/>
<g>
<rect x="26.2" y="25" fill="#212121" width="6.4" height="2.5"/>
<rect x="26.2" y="20.9" fill="#212121" width="6.4" height="2.7"/>
<rect x="26.2" y="16.7" fill="#212121" width="6.4" height="2.6"/>
<rect x="26.2" y="12.7" fill="#212121" width="6.4" height="2.5"/>
</g>
<g>
<rect x="57.4" y="25" fill="#212121" width="6.4" height="2.5"/>
<rect x="57.4" y="20.9" fill="#212121" width="6.4" height="2.7"/>
<rect x="57.4" y="16.7" fill="#212121" width="6.4" height="2.6"/>
<rect x="57.4" y="12.7" fill="#212121" width="6.4" height="2.5"/>
</g>
<rect x="53.4" y="36.1" fill="#212121" width="6.4" height="1.9"/>
<rect x="30.2" y="36.1" fill="#212121" width="6.4" height="1.9"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#0052B4" width="513" height="342"/>
<rect y="0" fill="#D80027" width="513" height="114"/>
<rect y="228" fill="#FF9811" width="513" height="114"/>
</svg>

After

Width:  |  Height:  |  Size: 273 B

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#000000" y="171" width="513" height="171"/>
<rect fill="#D80027" class="st0" width="513" height="171"/>
<g fill="#FFDA44">
<polygon points="332.7,135.6 350.2,127 342.8,108 324.1,114.2 "/>
<polygon points="287.1,79.6 292.6,60.8 273.5,53.6 265.5,71.6 "/>
<polygon points="316.5,102.8 328.7,87.5 313.8,73.6 299.6,87.2 "/>
<polygon points="335.9,171.7 355.4,170.9 355.4,149.6 332.5,149.8 "/>
<polygon points="323.3,209.8 342.1,215.3 349.4,196.3 331.4,188.3 "/>
<polygon points="294.3,242.2 309.2,254.9 323.6,240.5 310.5,225.8 "/>
<polygon points="247.3,94.5 257.1,114.4 279,117.7 263.1,133.2 266.7,155.1 247.1,144.7 227.4,154.9 231.2,133
215.4,117.5 237.4,114.4 "/>
<path d="M250.8,61.3l-2.7,18.3c43.1,3.2,77,39.2,77,83.1c0,46-37.3,82.9-83.4,83.4c-29.2,0.3-51.3-14.8-67-33.7
l-13.9,12.3c15,19,40.8,39.9,80.9,39.9c56.3,0,101.9-45.6,101.9-101.9C343.7,109.5,302.9,65.8,250.8,61.3z"/>
<path fill="#000000" d="M291.9,223.4l-11.8,14c0,0,51.9,38.9,53.6,40.4c1.7,1.5,5.2,2,9.1-2.7c3.7-4.5,2.8-8.1,0.9-9.7
C341.7,263.9,291.9,223.4,291.9,223.4z"/>
<path d="M206.1,157.2c-7.7,10.3-7.5,23.1,2.8,30.9c0,0,135.2,101.5,136.9,103c1.7,1.5,5.2,2,9.1-2.7
c3.7-4.5,2.8-8.1,0.9-9.7C353.9,277.2,206.1,157.2,206.1,157.2z"/>
<polygon points="253.8,256.3 261.1,274.5 280.6,268.5 275.8,249.4 "/>
<polygon points="213.4,252.6 211.4,272.1 231.5,275.7 236,256.6 "/>
<polygon points="177.7,231.4 167.4,248 183.8,260.1 196.3,244.9 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 744 496">
<path fill="#3A7DCE" d="M0,0h744v496H0V0z"/>
<polygon fill="#ffffff" points="120,125 210,188 264,174 287,93 348,57 440,71 545,126 551,216 585,228 585,320 520,435 442,459
370,442 388,412 380,380 370,389 208,364 159,279 179,233 130,171 "/>
</svg>

After

Width:  |  Height:  |  Size: 364 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="512" height="342"/>
<rect y="0" fill="#338AF3" width="512" height="114"/>
<rect y="228" fill="#338AF3" width="512" height="114"/>
<circle fill="#FFDA44" stroke="#d6ab00" stroke-width="5" cx="256.5" cy="171" r="40"/>
</svg>

After

Width:  |  Height:  |  Size: 359 B

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#10338c" width="513" height="342"/>
<polygon fill="#D80027" points="513,33 95.3,171 513,310.76 513,342 0,171 513,0 "/>
<polyline fill="#FFFFFF" points="513,287.18 513,311.76 81.72,171 513,30 513,54.16 "/>
<path fill="#A2001D" d="M476.98,140.21l-21.89,10.68l-3.18-15.32l31.19-29.77c0,0-9.42-40.65-13.75-44.98l-112.32,55.82l-6.84,36.76
l-31.9,28.59l-0.4,34.2l34.29-22.76l67.23-2.66l-1.51,38.11h22.23l11.9-44.64l31.55-24.61L476.98,140.21z"/>
<polygon fill="#EFC100" stroke="#231F20" stroke-miterlimit="10" points="317.89,238.41 295.65,227.3 317.89,216.19 462.35,216.19 462.35,238.41 "/>
</svg>

After

Width:  |  Height:  |  Size: 720 B

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="114" fill="#FFFFFF" width="513" height="114"/>
<rect y="0" fill="#D80027" width="513" height="114"/>
<rect y="228" fill="#D80027" width="513" height="114"/>
</svg>

After

Width:  |  Height:  |  Size: 275 B

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#10338c" width="513" height="342"/>
<g fill="#FFFFFF">
<path d="M222.2,170.7c0.3-0.3,0.5-0.6,0.8-0.9C222.8,170.1,222.5,170.4,222.2,170.7L222.2,170.7z"/>
<polygon points="188,212.6 199,235.5 223.7,229.8 212.7,252.6 232.6,268.4 207.8,274 207.9,299.4 188,283.5
168.2,299.4 168.3,274 143.5,268.4 163.4,252.6 152.3,229.8 177.1,235.5 "/>
<polygon points="385.9,241.1 391.1,252 402.9,249.3 397.6,260.2 407.1,267.7 395.3,270.3 395.3,282.5 385.9,274.9
376.4,282.5 376.5,270.3 364.7,267.7 374.2,260.2 368.9,249.3 380.7,252 "/>
<polygon points="337.3,125.1 342.5,136 354.3,133.3 349,144.2 358.5,151.7 346.7,154.4 346.7,166.5 337.3,158.9
327.8,166.5 327.9,154.4 316,151.7 325.5,144.2 320.2,133.3 332,136 "/>
<polygon points="385.9,58.9 391.1,69.8 402.9,67.1 397.6,78 407.1,85.5 395.3,88.2 395.3,100.3 385.9,92.7
376.4,100.3 376.5,88.2 364.7,85.5 374.2,78 368.9,67.1 380.7,69.8 "/>
<polygon points="428.4,108.6 433.6,119.5 445.4,116.8 440.1,127.7 449.6,135.2 437.8,137.8 437.8,150 428.4,142.4
418.9,150 418.9,137.8 407.1,135.2 416.6,127.7 411.3,116.8 423.1,119.5 "/>
<polygon points="398,166.5 402.1,179.2 415.4,179.2 404.6,187 408.8,199.7 398,191.8 387.2,199.7 391.3,187
380.6,179.2 393.9,179.2 "/>
<polygon points="254.8,0 254.8,30.6 209.7,55.7 254.8,55.7 254.8,115 195.7,115 254.8,147.8 254.8,170.7 228.1,170.7
154.6,129.8 154.6,170.7 99,170.7 99,122.1 11.6,170.7 -1.2,170.7 -1.2,140.1 44,115 -1.2,115 -1.2,55.7 57.9,55.7 -1.2,22.8
-1.2,0 25.5,0 99,40.8 99,0 154.6,0 154.6,48.6 242.1,0 "/>
</g>
<polygon fill="#D80027" points="142.8,0 110.8,0 110.8,69.3 -1.2,69.3 -1.2,101.3 110.8,101.3 110.8,170.7 142.8,170.7 142.8,101.3
254.8,101.3 254.8,69.3 142.8,69.3 "/>
<polygon fill="#0052B4" points="154.6,115 254.8,170.7 254.8,154.9 183,115 "/>
<polygon fill="#FFFFFF" points="154.6,115 254.8,170.7 254.8,154.9 183,115 "/>
<g fill="#D80027">
<polygon points="154.6,115 254.8,170.7 254.8,154.9 183,115 "/>
<polygon points="70.7,115 -1.2,154.9 -1.2,170.7 -1.2,170.7 99,115 "/>
</g>
<polygon fill="#0052B4" points="99,55.7 -1.2,0 -1.2,15.7 70.7,55.7 "/>
<polygon fill="#FFFFFF" points="99,55.7 -1.2,0 -1.2,15.7 70.7,55.7 "/>
<g fill="#D80027">
<polygon points="99,55.7 -1.2,0 -1.2,15.7 70.7,55.7 "/>
<polygon points="183,55.7 254.8,15.7 254.8,0 254.8,0 154.6,55.7 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 363 242">
<rect fill="#338AF3" width="363" height="242"/>
<g>
<polygon fill="#FFFFFF" points="57,96.9 14.7,78.2 57,59.6 75.6,17.4 94.2,59.6 136.5,78.2 94.2,96.9 75.6,139.1 "/>
<polygon fill="#f30028" points="75.6,40.6 87.1,66.7 113.2,78.2 87.1,89.7 75.6,115.8 64.1,89.7 38,78.2 64.1,66.7 "/>
</g>
<g fill="#FFDA44">
<rect y="152.2" width="363" height="15.7"/>
<rect y="183.6" width="363" height="15.7"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 528 B

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#0052B4" width="513" height="342"/>
<polygon fill="#FFDA44" points="513,210.9 202.2,210.9 202.2,342 122.4,342 122.4,210.9 0,210.9 0,192.3 0,149.7 0,131.1 122.4,131.1
122.4,0 202.2,0 202.2,131.1 513,131.1 513,149.7 513,192.3 "/>
<polygon fill="#D80027" points="513,149.7 513,192.3 183.7,192.3 183.7,342 141,342 141,192.3 0,192.3 0,149.7 141,149.7 141,0
183.7,0 183.7,149.7 "/>
</svg>

After

Width:  |  Height:  |  Size: 513 B

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#ef3340" width="513" height="342"/>
<rect fill="#00b5e2" width="513" height="114"/>
<rect y="228" fill="#509e2f" width="513" height="114"/>
<g fill="#FFFFFF">
<path d="M265.6,212.6c-23,0-41.6-18.6-41.6-41.6s18.6-41.6,41.6-41.6c7.2,0,13.9,1.8,19.8,5
c-9.2-9-21.9-14.6-35.8-14.6c-28.3,0-51.2,22.9-51.2,51.2s22.9,51.2,51.2,51.2c13.9,0,26.6-5.6,35.8-14.6
C279.5,210.8,272.8,212.6,265.6,212.6z"/>
<polygon points="297.6,142.2 303.1,157.7 318,150.6 310.9,165.5 326.4,171 310.9,176.5 318,191.4 303.1,184.3
297.6,199.8 292.1,184.3 277.2,191.4 284.3,176.5 268.8,171 284.3,165.5 277.2,150.6 292.1,157.7 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 746 B

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 513 342">
<rect fill="#10338C" width="513.1" height="342"/>
<polyline fill="#F6C500" points="99.9,0 441.9,0 441.9,342 "/>
<g>
<polygon fill="#FFFFFF" points="19.9,21.1 40.3,6.2 60.9,21 54,0 26.7,0 "/>
<polygon fill="#FFFFFF" points="92.3,25.5 84.4,1.3 76.6,25.5 51.3,25.5 71.8,40.3 64,64.3 84.4,49.5 105,64.3 97.1,40.3 117.6,25.4
"/>
<polygon fill="#FFFFFF" points="136.3,69.2 128.5,45.2 120.7,69.2 95.5,69.2 115.9,84.1 108.1,108.1 128.5,93.3 149.1,108.1
141.3,84.1 161.7,69.2 "/>
<polygon fill="#FFFFFF" points="179.4,112.3 171.6,88.2 163.8,112.3 138.5,112.3 159,127.2 151.2,151.2 171.6,136.4 192.2,151.2
184.3,127.2 204.8,112.2 "/>
<polygon fill="#FFFFFF" points="222.5,155.3 214.7,131.3 206.9,155.3 181.5,155.3 202.1,170.3 194.3,194.3 214.7,179.4 235.1,194.3
227.3,170.3 247.9,155.3 "/>
<polygon fill="#FFFFFF" points="265.6,198.4 257.8,174.4 250,198.4 224.6,198.4 245.2,213.3 237.4,237.4 257.8,222.5 278.2,237.4
270.4,213.2 290.9,198.4 "/>
<polygon fill="#FFFFFF" points="308.7,241.5 300.8,217.5 293,241.5 267.7,241.5 288.2,256.3 280.3,280.5 300.9,265.6 321.3,280.4
313.5,256.3 334,241.5 "/>
<polygon fill="#FFFFFF" points="351.7,284.6 343.9,260.4 336.1,284.6 310.8,284.6 331.2,299.4 323.4,323.5 343.9,308.6 364.4,323.5
356.6,299.4 377,284.6 "/>
<polygon fill="#FFFFFF" points="387,303.5 379.1,327.6 353.8,327.7 373.6,342 400.2,342 420.1,327.6 394.8,327.6 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#ffc726" width="513" height="342"/>
<g fill="#00267f">
<rect y="0" width="171" height="342"/>
<rect x="342" y="0" width="171" height="342"/>
</g>
<path d="M325.74,101.02l-31.97,12.4c-0.68,1.35-5.79,7.54-8.18,53.06h-17.05v-60.42l-12.54-27.38l-12.54,27v60.8H226.4
c-2.39-45.53-7.8-52.48-8.47-53.84l-31.68-11.63c0.15,0.31,15.4,31.34,15.4,78.01v12.54h41.81v71.07h25.08v-71.07h41.81v-12.54
c0-24.13,4.17-44.02,7.68-56.46c3.82-13.57,7.7-21.49,7.74-21.57L325.74,101.02z"/>
</svg>

After

Width:  |  Height:  |  Size: 611 B

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342">
<rect y="85.331" fill="#2d6e41" width="513" height="342"/>
<circle fill="#F40B32" cx="218.902" cy="256.5" r="115"/>
</svg>

After

Width:  |  Height:  |  Size: 230 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#fdda25" width="513" height="342"/>
<rect y="0" width="171" height="342"/>
<rect x="342" y="0" fill="#ef3340" width="171" height="342"/>
</svg>

After

Width:  |  Height:  |  Size: 265 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#3d944f" width="513" height="342"/>
<rect y="0" fill="#ef2b2d" width="513" height="171"/>
<polygon fill="#FFDA44" points="256,102.6 272.9,154.6 327.6,154.6 283.4,186.8 300.2,238.8 256,206.7 211.8,238.8 228.6,186.8
184.4,154.6 239.1,154.6 "/>
</svg>

After

Width:  |  Height:  |  Size: 385 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#00966e" width="513" height="342"/>
<rect y="0" fill="#FFFFFF" width="513" height="114"/>
<rect y="228" fill="#d62612" width="513" height="114"/>
</svg>

After

Width:  |  Height:  |  Size: 277 B

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<polygon fill="#D80027" points="0,0 513,0 513,342 0,342 "/>
<polygon fill="#FFFFFF" points="222.8,34.3 137.6,68.5 222.8,102.6 137.6,136.7 222.8,170.8 137.6,204.9 222.8,239 137.6,273.1
222.8,307.2 137.6,342 0,342 0,0 137.6,0 "/>
</svg>

After

Width:  |  Height:  |  Size: 357 B

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#D80027" width="513" height="342"/>
<g fill="#47a644">
<polygon points="215.9,170.7 0,314.6 0,26.8 "/>
<polygon points="513,26.8 513,314.6 297.1,170.7 "/>
</g>
<polygon fill="#0052B4" points="513,26.8 296.1,170.7 513,314.6 513,342 471.9,342 256,197.4 40.1,342 0,342 0,314.6
215.9,170.7 0,26.8 0,0 40.1,0 256,143.9 471.9,0 513,0 "/>
<polygon fill="#FFFFFF" points="513,26.8 297.1,170.7 513,314.6 513,342 473,342 256,197.4 39,342 0,342 0,314.6 215.9,170.7 0,26.8
0,0 40.1,0 256,143.9 471.9,0 513,0 "/>
<circle fill="#FFFFFF" cx="251.6" cy="170.7" r="100.2"/>
<g fill="#D80027" stroke="#47a644" stroke-width="3">
<polygon points="251.4,103.6 258.8,116.5 273.6,116.5 266.2,129.3 273.6,142.1 258.8,142.1 251.4,155 244,142.1
229.2,142.1 236.6,129.3 229.2,116.5 244,116.5 "/>
<polygon points="290.2,170.3 297.6,183.2 312.4,183.2 305,196 312.4,208.8 297.6,208.8 290.2,221.7 282.8,208.8
267.9,208.8 275.3,196 267.9,183.2 282.8,183.2 "/>
<polygon points="213,170.3 220.4,183.2 235.3,183.2 227.9,196 235.3,208.8 220.4,208.8 213,221.7 205.6,208.8
190.8,208.8 198.2,196 190.8,183.2 205.6,183.2 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342">
<rect y="85.333" fill="#008751" width="513" height="342"/>
<rect x="196.666" y="85.333" fill="#fcd116" width="316.334" height="171"/>
<rect x="196.666" y="256" fill="#e8112d" width="316.334" height="171"/>
</svg>

After

Width:  |  Height:  |  Size: 321 B

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#FFFFFF" width="513" height="342"/>
<path fill="#FFFFFF" d="M0-75.85"/>
<path fill="#E6BC00" d="M157.31,199.76c0,0-9.04,43.93-19.31,40.39c-10.62-3.54-17.53-18.76-17.53-18.76l-14.52,21.24
c0,0,38.18,8.48,41.01,5.47c1.22-1.14,8.21-15.1,10.34-26.05V199.76z M101.18,260.33c0,0-2.48,20.18-1.06,22.66
c1.24,2.3,39.48,11.33,39.48,11.33s-24.96,16.46-29.74,20.54L91.8,284.94l-0.71-24.61L101.18,260.33L101.18,260.33z"/>
<path fill="#E6BC00" d="M0-75.85"/>
<path fill="#E6BC00" d="M112.51,94.64c0,0,39.65,41.6,40.36,45.5c0.71,3.72-4.25,3.19-4.25,3.19s-44.79-37.53-49.92-41.07
C93.39,98.71,112.51,94.64,112.51,94.64L112.51,94.64z"/>
<path fill="#ADADAD" d="M99.41,104.73c0,0,16.99-0.71,16.64-11.51C115.7,82.6,104.9,78.35,96.93,80.83
c-7.97,2.3-23.01,13.45-13.63,35.05c9.38,21.42,23.37,29.39,26.2,47.8c0,0-5.46,9.86-19.12,0.35c-16.9-11.77-6.2-38.24-10.44-44.96
c-4.25-7.08-40.95-38.92-40.95-38.92s-30.24,39.37-18,74.92c16.95,49.21,51.74,31.98,64.61,36.76c0,0-42.13,61.96-49.57,67.09
c0,0,24.08,8.32,47.8-18.76c0,0,5.84,9.74,7.08,20.18h10.27c4.78-26.2,51.51-64.26,49.92-82.32
C149.33,156.77,101.89,128.63,99.41,104.73z"/>
<path fill="#E6BC00" d="M359.17,201.27c0,0,8.96,42.43,19.23,38.89c10.62-3.54,17.53-18.76,17.53-18.76l14.52,21.24
c0,0-37,8.48-39.83,5.47c-1.21-1.14-9.32-13.79-11.52-24.66L359.17,201.27z M415.22,260.33c0,0,2.48,20.18,1.06,22.66
c-1.24,2.3-39.48,11.33-39.48,11.33s24.96,16.46,29.74,20.54l18.06-29.92l0.71-24.61H415.22z"/>
<path fill="#E6BC00" d="M403.89,94.64c0,0-39.65,41.6-40.36,45.5c-0.71,3.72,4.25,3.19,4.25,3.19s44.79-37.53,49.92-41.07
C422.84,98.71,403.89,94.64,403.89,94.64L403.89,94.64z"/>
<g transform="translate(6.5 5)">
<g>
<path id="b_1_" fill="#125ECC" d="M150.81,82.06h201.79v145.46c0,16.06-9.69,21.39-21.91,31.85l-45.92,39.41
c-18.25,15.62-47.91,15.57-66.07,0l-46.01-39.43c-12.08-10.35-21.88-15.71-21.88-31.82V82.06z"/>
</g>
<path fill="#FFE600" d="M194.05,142.71c-7.96,0-14.41-6.45-14.41-14.41s6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41
S202.01,142.71,194.05,142.71z M251.7,139.71c-7.96,0-14.41-6.45-14.41-14.41c0-7.96,6.45-14.41,14.41-14.41
s14.41,6.45,14.41,14.41C266.11,133.26,259.66,139.71,251.7,139.71z M309.35,142.71c-7.96,0-14.41-6.45-14.41-14.41
s6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41S317.31,142.71,309.35,142.71z M208.46,269.43c-7.96,0-14.41-6.45-14.41-14.41
c0-7.96,6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41C222.88,262.98,216.42,269.43,208.46,269.43z M251.7,283.85
c-7.96,0-14.41-6.45-14.41-14.41c0-7.96,6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41C266.11,277.39,259.66,283.85,251.7,283.85z
M294.94,269.43c-7.96,0-14.41-6.45-14.41-14.41c0-7.96,6.45-14.41,14.41-14.41c7.96,0,14.41,6.45,14.41,14.41
C309.35,262.98,302.9,269.43,294.94,269.43z"/>
<path fill="#D60537" d="M150.81,170.36h201.79v57.65H150.81V170.36z"/>
</g>
<path fill="#EACE00" d="M142.9,43.82c0,0,57.65-14.41,115.31-14.41s115.31,14.41,115.31,14.41l-14.41,57.65
c0,0-50.45-14.41-100.89-14.41s-100.89,14.41-100.89,14.41L142.9,43.82z"/>
<path fill="#7A6920" d="M258.2,72.65c-7.96,0-14.41-6.45-14.41-14.41s6.45-14.41,14.41-14.41c7.96,0,14.41,6.45,14.41,14.41
S266.16,72.65,258.2,72.65z M315.85,77.65c-7.96,0-14.41-6.45-14.41-14.41s6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41
S323.81,77.65,315.85,77.65z M200.55,77.65c-7.96,0-14.41-6.45-14.41-14.41s6.45-14.41,14.41-14.41s14.41,6.45,14.41,14.41
S208.51,77.65,200.55,77.65z"/>
<path fill="#ADADAD" d="M365.08,178.02c-1.59,18.06,45.14,56.12,49.92,82.32h10.27c1.24-10.44,7.08-20.18,7.08-20.18
c23.72,27.09,47.8,18.76,47.8,18.76c-7.44-5.13-49.57-67.09-49.57-67.09c12.88-4.78,47.67,12.45,64.61-36.76
c12.24-35.55-18-74.92-18-74.92s-36.7,31.84-40.95,38.92c-4.25,6.73,6.46,33.2-10.44,44.96c-13.66,9.51-19.12-0.35-19.12-0.35
c2.83-18.41,16.82-26.38,26.2-47.8c9.38-21.6-5.66-32.75-13.63-35.05c-7.97-2.48-18.76,1.77-19.12,12.39
c-0.35,10.8,16.64,11.51,16.64,11.51C414.29,128.63,366.85,156.77,365.08,178.02z"/>
<circle fill="#FFFFFF" cx="258.2" cy="204.19" r="16.93"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#c8102e" width="513" height="342"/>
<g>
<rect y="0.1" fill="#012169" width="256.5" height="171"/>
<polygon fill="#FFFFFF" points="256,0 233.4,0 160,48.9 160,0 96,0 96,48.9 22.6,0 0,0 0,22.7 46.1,53.4 0,53.4 0,117.4 46.1,117.4
0,148.1 0,170.7 22.6,170.7 96,121.8 96,170.7 160,170.7 160,121.8 233.4,170.7 256,170.7 256,148.1 209.9,117.4 256,117.4
256,53.4 209.9,53.4 256,22.7 "/>
<polygon fill="#c8102e" points="144,0 112,0 112,69.4 0,69.4 0,101.4 112,101.4 112,170.7 144,170.7 144,101.4 256,101.4 256,69.4
144,69.4 "/>
<polygon fill="#c8102e" points="0,170.7 0,159.7 62.5,117.4 85.1,117.4 7.3,170.7 "/>
<polygon fill="#c8102e" points="7.3,0.1 85.1,53.3 62.5,53.3 0,11.1 0,0.1 "/>
<polygon fill="#c8102e" points="256,0.1 256,11.1 193.5,53.4 170.9,53.4 248.7,0.1 "/>
<polygon fill="#c8102e" points="248.7,170.7 170.9,117.4 193.5,117.4 256,159.7 256,170.7 "/>
</g>
<g transform="translate(13 5)">
<path fill="#ffffff" d="M303.9,94.94v99.69c0,59.81,79.75,99.69,79.75,99.69s79.75-39.88,79.75-99.69V94.94H303.9z"/>
<path fill="#2F8F22" d="M436.37,254.44H330.93c23.13,25.08,52.72,39.88,52.72,39.88S413.24,279.52,436.37,254.44z"/>
<circle fill="#65B5D2" cx="383.65" cy="214.56" r="39.88"/>
<circle fill="#c8102e" cx="343.77" cy="194.63" r="19.94"/>
<circle fill="#c8102e" cx="423.52" cy="194.63" r="19.94"/>
<circle fill="#c8102e" cx="383.65" cy="154.75" r="19.94"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFDA44" width="513" height="342"/>
<polygon fill="#000000" points="0,193.74 513,320.93 513,214.26 0,97.08 "/>
<polyline fill="#FFFFFF" points="513,234.26 513,147.59 0,20.41 0,107.08 "/>
<g>
<path fill="#D80027" stroke="#231F20" stroke-width="3" stroke-miterlimit="10" d="M306.4,134.01c3.87,7.14,6.07,15.33,6.07,24.02c0,21.55-13.51,39.94-32.52,47.19v-59.51
c5.7-1.19,10-6.37,10-12.59c6.9,0,12.5-5.75,12.5-12.85h-0.42c6.9,0,12.91-5.75,12.91-12.85h-34.99V76.58l-14.99-27.71l-15,27.71
v30.84h-34.99c0,7.1,6.01,12.85,12.91,12.85h-0.42c0,7.1,5.6,12.85,12.5,12.85c0,6.22,4.29,11.4,9.99,12.59v61.37
c-22.09-5.39-38.48-25.3-38.48-49.05c0-8.7,2.2-16.88,6.07-24.02c-10.96,11.21-17.72,26.53-17.72,43.44
c0,34.32,27.82,62.15,62.15,62.15s62.15-27.83,62.15-62.15C324.12,160.54,317.35,145.21,306.4,134.01z"/>
<path fill="#D80027" stroke="#231F20" stroke-width="3" stroke-miterlimit="10" d="M198.46,226.81c0,0,20.69,27.71,66.5,27.71s66.5-27.71,66.5-27.71l13.47,28.37c0,0-21.03,27.71-79.97,27.71
s-79.97-27.71-79.97-27.71L198.46,226.81z"/>
<polygon fill="#D80027" stroke="#231F20" stroke-width="3" stroke-miterlimit="10" points="129.24,133.18 150.12,133.18 175.05,160.44 175.05,233.89 148.77,233.89 148.77,165.52 "/>
<polygon fill="#D80027" stroke="#231F20" stroke-width="3" stroke-miterlimit="10" points="400,133.18 379.12,133.18 354.19,160.44 354.19,233.89 380.46,233.89 380.46,165.52 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#d52b1e" d="M0 0h513v114H0z"/><path fill="#f9e300" d="M0 114h513v114H0z"/><path fill="#007934" d="M0 228h513v114H0z"/></svg>

After

Width:  |  Height:  |  Size: 199 B

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<polygon fill="#012a87" points="0,342 513,342 513,0 513,0 "/>
<polygon fill="#f9d90f" points="250.4,0 0,0 0,0 0,166.9 "/>
<polygon fill="#dc171d" points="140.4,118.3 152.6,139.5 177.1,139.5 164.8,160.6 177.1,181.8 152.6,181.8 140.4,203 128.2,181.8
103.7,181.8 116,160.6 103.7,139.5 128.2,139.5 "/>
<circle fill="none" stroke="#000000" stroke-width="9" stroke-miterlimit="10" cx="140.4" cy="160.6" r="57.7"/>
</svg>

After

Width:  |  Height:  |  Size: 586 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#009b3a" width="513" height="342"/>
<polygon fill="#fedf00" points="256.5,19.3 461.4,170.7 256.5,322 50.6,170.7 "/>
<circle fill="#FFFFFF" cx="256.5" cy="171" r="80.4"/>
<path fill="#002776" d="M215.9,165.7c-13.9,0-27.4,2.1-40.1,6c0.6,43.9,36.3,79.3,80.3,79.3c27.2,0,51.3-13.6,65.8-34.3
C297,185.7,258.7,165.7,215.9,165.7z"/>
<path fill="#002776" d="M334.9,186c0.9-5,1.5-10.1,1.5-15.4c0-44.4-36-80.4-80.4-80.4c-33.1,0-61.5,20.1-73.9,48.6
c10.9-2.2,22.1-3.4,33.6-3.4C262.5,135.5,304.7,154.9,334.9,186z"/>
</svg>

After

Width:  |  Height:  |  Size: 651 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#ffc72c" width="513" height="342"/>
<g>
<rect y="0" fill="#00778b" width="513" height="114"/>
<rect y="228" fill="#00778b" width="513" height="114"/>
</g>
<polygon points="256,171 0,342 0,0 "/>
</svg>

After

Width:  |  Height:  |  Size: 324 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#FF7415" width="513" height="342"/>
<polyline fill="#FFDA44" points="513,0 0,0 0,342 "/>
<path fill="none" stroke="#FFFFFF" stroke-width="42" stroke-miterlimit="10" d="M128.7,255.5c0,0,35,54,67.3,32.4c56.9-37.9-68.9-108.6-2.9-152.6c58.3-38.8,76.6,103.5,137.6,62.8
c59-39.3-64.7-111.4-9.2-148.4c33.4-22.2,67.1,32.6,67.1,32.6"/>
</svg>

After

Width:  |  Height:  |  Size: 463 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 33.333 1100 733.333">
<rect width="1100" height="800" fill="#ef2b2d"/>
<rect width="200" height="800" x="300" fill="#ffffff"/>
<rect width="1100" height="200" y="300" fill="#ffffff"/>
<rect width="100" height="800" x="350" fill="#002868"/>
<rect width="1100" height="100" y="350" fill="#002868"/>
</svg>

After

Width:  |  Height:  |  Size: 523 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<g fill="#6da9d2">
<rect y="238" width="513" height="104"/>
<rect y="0" width="513" height="104"/>
</g>
<rect y="125.5" width="513" height="89.656"/>
</svg>

After

Width:  |  Height:  |  Size: 316 B

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 513 342">
<rect fill="#007C30" width="513" height="342"/>
<polyline fill="#CE1720" points="0,230 513,230 513,0 513,0 0,0 0,0 "/>
<polygon fill="#FFFFFF" points="100,230 100,215.1 100,0 0,0 0,342 513,342 513,342 100,342 "/>
<g fill="#CE1720">
<polygon points="28,159.6 8.6,128.2 28,97.4 47.3,128.2 "/>
<polygon points="72.6,159.6 53.3,128.2 72.6,97.4 92,128.2 "/>
<polygon points="28,241.2 8.6,209.8 28,179 47.3,209.8 "/>
<polygon points="72.6,241.2 53.3,209.8 72.6,179 92,209.8 "/>
</g>
<g fill="none" stroke="#CE1720" stroke-width="7">
<polygon points="28,73.8 11.9,47.8 28,22.2 44,47.8 "/>
<polygon points="72.6,73.8 56.6,47.8 72.6,22.2 88.7,47.8 "/>
<polygon points="28,318 11.9,291.9 28,266.3 44,291.9 "/>
<polygon points="72.6,318 56.6,291.9 72.6,266.3 88.7,291.9 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#003e87" width="513" height="342"/>
<g>
<circle fill="#FFFFFF" cx="260.9" cy="170.9" r="118.9"/>
<circle fill="none" stroke="#6DA544" stroke-width="18" stroke-miterlimit="10" cx="261.9" cy="173.1" r="94.5"/>
</g>
<g stroke="#000000" stroke-width="1">
<path fill="#003e87" d="M261.9,151.5l-50.6,23.4v20c0,11.8,6.1,22.8,16.2,28.9l34.5,15.2l34.5-15.2c10-6.2,16.2-17.1,16.2-28.9v-20
L261.9,151.5z"/>
<rect x="211.3" y="128.1" fill="#FFDA44" width="101.3" height="46.7"/>
</g>
<g fill="#ce1127">
<rect y="0" width="513" height="35"/>
<rect y="306" width="513" height="35"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 723 B

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<g fill="#ff0000">
<rect y="0" width="142" height="342"/>
<rect x="371" y="0" width="142" height="342"/>
<polygon points="306.5,206 356.9,180.8 331.7,168.2 331.7,143 281.3,168.2 306.5,117.8 281.3,117.8 256.1,80
230.9,117.8 205.7,117.8 230.9,168.2 180.5,143 180.5,168.2 155.3,180.8 205.7,206 193.1,231.2 243.5,231.2 243.5,269 268.7,269
268.7,231.2 319.1,231.2 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 553 B

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#008000" width="513" height="342"/>
<g fill="#FFDA44">
<polygon points="422.7,252.4 428.9,265.2 442.7,262 436.5,274.8 447.7,283.6 433.8,286.8 433.8,301 422.7,292.1
411.6,301 411.6,286.8 397.8,283.6 408.9,274.8 402.7,262 416.6,265.2 "/>
<polygon points="376.1,116.1 382.3,129 396.1,125.8 389.9,138.6 401.1,147.4 387.2,150.5 387.2,164.8 376.1,155.9
365,164.8 365.1,150.5 351.2,147.4 362.3,138.6 356.1,125.8 370,129 "/>
<polygon points="413.1,38.3 419.3,51.1 433.1,47.9 426.9,60.7 438.1,69.6 424.2,72.7 424.2,86.9 413.1,78 402,86.9
402.1,72.7 388.2,69.6 399.3,60.7 393.1,47.9 407,51.1 "/>
<polygon points="464.9,96.7 471.1,109.5 485,106.3 478.7,119.1 489.9,128 476,131.1 476.1,145.3 464.9,136.4
453.8,145.3 453.9,131.1 440,128 451.2,119.1 444.9,106.3 458.8,109.5 "/>
<polygon points="436.9,164.8 441.8,179.6 457.4,179.6 444.8,188.8 449.6,203.7 436.9,194.5 424.3,203.7 429.1,188.8
416.5,179.6 432.1,179.6 "/>
</g>
<path fill="#FFDA44" d="M306.8,254.7c-49.2,0-89.1-39.9-89.1-89.1s39.9-89.1,89.1-89.1c15.3,0,29.8,3.9,42.4,10.7
C329.4,67.9,302.3,56,272.5,56c-60.5,0-109.6,49.1-109.6,109.6S212,275.3,272.5,275.3c29.8,0,56.9-11.9,76.6-31.3
C336.5,250.8,322.1,254.7,306.8,254.7z"/>
<g>
<path fill="#FFDA44" d="M140.4,59.5C129.7,41,109.7,28.6,86.8,28.6S44,41,33.3,59.5H140.4z"/>
<path fill="#FFDA44" d="M140.6,59.9l-53.8,53.8L33.1,59.9c-5.1,9-8.1,19.4-8.1,30.6c0,34.2,27.7,61.9,61.9,61.9s61.9-27.7,61.9-61.9
C148.7,79.3,145.7,68.9,140.6,59.9z"/>
<path fill="#A2001D" d="M71.4,98.2v52.2c4.9,1.3,10.1,1.9,15.5,1.9s10.5-0.7,15.5-1.9V98.2H71.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#338AF3" width="513" height="342"/>
<polygon fill="#FFDA44" points="513,66.9 513,0 411.7,0 0,274.4 0,342 100.3,342 "/>
<polygon fill="#D80027" points="513,0 513,40.1 60.2,342 0,342 0,301.2 451.8,0 "/>
<polygon fill="#FFDA44" points="93.6,31.2 109.9,81.6 163,81.6 120.1,112.8 136.5,163.3 93.6,132.1 50.6,163.3 67,112.8 24.1,81.6
77.2,81.6 "/>
</svg>

After

Width:  |  Height:  |  Size: 484 B

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#d21034" width="513" height="342"/>
<g fill="#3a9927">
<rect y="171" width="211.5" height="85.3"/>
<rect x="300.5" y="171" width="211.5" height="85.3"/>
</g>
<polygon fill="#003082" points="0,0 0,0 0,85.3 211.5,85.3 211.5,0 300.5,0 300.5,85.3 513,85.3 513,0 513,0 "/>
<g fill="#FFFFFF">
<rect x="300.5" y="85.3" width="211.5" height="85.3"/>
<rect y="85.3" width="211.5" height="85.3"/>
</g>
<g fill="#ffce00">
<polygon points="300.5,342 211.5,342 211.5,256 0,256 0,342 0,342 513,342 513,342 513,256 300.5,256 "/>
<polygon points="105.7,8.6 114.3,34.8 141.8,34.8 119.5,51 128.1,77.2 105.7,61 83.4,77.2 91.9,51 69.6,34.8
97.2,34.8 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 784 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342">
<rect y="85.331" fill="#da1a35" width="513" height="342"/>
<polygon fill="#009543" points="443.726,85.331 102.4,426.657 0,426.657 0,85.331 "/>
<polygon fill="#fbde4a" points="500.124,85.331 158.798,426.657 11.876,426.657 353.202,85.331 "/>
</svg>

After

Width:  |  Height:  |  Size: 355 B

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342">
<rect y="85.337" fill="#ff0000" width="513" height="342"/>
<polygon fill="#FFFFFF" points="356.174,222.609 289.391,222.609 289.391,155.826 222.609,155.826 222.609,222.609 155.826,222.609 155.826,289.391 222.609,289.391 222.609,356.174 289.391,356.174 289.391,289.391 356.174,289.391 "/>
</svg>

After

Width:  |  Height:  |  Size: 404 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect x="342" y="0" fill="#009e60" width="171" height="342"/>
<rect y="0" fill="#f77f00" width="171" height="342"/>
</svg>

After

Width:  |  Height:  |  Size: 283 B

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 85.333 513 342">
<rect y="85.332" fill="#01237a" width="513" height="342"/>
<g>
<polygon fill="#FFFFFF" points="384,156.705 389.283,172.959 406.372,172.959 392.546,183.004 397.827,199.258 384,189.211 370.175,199.258 375.455,183.004 361.63,172.959 378.719,172.959 "/>
<polygon fill="#FFFFFF" points="313.791,185.786 329.019,193.544 341.103,181.461 338.43,198.34 353.657,206.099 336.778,208.772 334.104,225.652 326.344,210.425 309.466,213.098 321.552,201.014 "/>
<polygon fill="#FFFFFF" points="284.71,255.995 300.964,250.714 300.965,233.625 311.009,247.45 327.263,242.168 317.217,255.995 327.263,269.821 311.009,264.541 300.965,278.366 300.965,261.276 "/>
<polygon fill="#FFFFFF" points="313.791,326.204 321.55,310.975 309.466,298.891 326.347,301.565 334.104,286.338 336.778,303.217 353.657,305.889 338.43,313.648 341.103,330.53 329.019,318.443 "/>
<polygon fill="#FFFFFF" points="384,355.284 378.719,339.031 361.628,339.031 375.455,328.986 370.175,312.732 384,322.776 397.827,312.732 392.546,328.986 406.372,339.031 389.283,339.031 "/>
<polygon fill="#FFFFFF" points="454.209,326.204 438.98,318.446 426.897,330.53 429.57,313.648 414.343,305.892 431.222,303.217 433.897,286.338 441.653,301.565 458.534,298.891 446.448,310.976 "/>
<polygon fill="#FFFFFF" points="483.29,255.995 467.036,261.276 467.036,278.366 456.991,264.54 440.737,269.821 450.783,255.995 440.737,242.168 456.991,247.45 467.036,233.625 467.036,250.714 "/>
<polygon fill="#FFFFFF" points="454.209,185.788 446.452,201.014 458.534,213.098 441.653,210.425 433.897,225.652 431.222,208.772 414.343,206.097 429.57,198.34 426.897,181.462 438.981,193.544 "/>
<path fill="#FFFFFF" d="M0,186.665v16h46.069L0,233.377v7.539l57.377-38.252H80L0,255.998h112v-69.334H0z M96,255.996 H22.628L96,207.083V255.996z"/>
<path fill="#FFFFFF" d="M176,138.665l80-53.334H144v69.334h112v-16h-46.069L256,107.951v-7.539l-57.377,38.251H176V138.665z M160,85.333h73.372L160,134.246V85.333z"/>
<path fill="#FFFFFF" d="M144,255.998h112l-80-53.334h22.623L256,240.917v-7.539l-46.069-30.713H256v-16H144V255.998z M160,207.083l73.372,48.913H160V207.083z"/>
<path fill="#FFFFFF" d="M112,85.331H0l80,53.334H57.377L0,100.413v7.539l46.069,30.712H0v16h112V85.331z M96,134.246 L22.628,85.333H96V134.246z"/>
</g>
<g>
<polygon fill="#D80027" points="144,85.331 112,85.331 112,154.665 0,154.665 0,186.665 112,186.665 112,255.998 144,255.998 144,186.665 256,186.665 256,154.665 144,154.665 "/>
<polygon fill="#D80027" points="80,138.665 0,85.331 0,100.413 57.377,138.665 "/>
<polygon fill="#D80027" points="176,138.665 198.623,138.665 256,100.413 256,85.331 "/>
<polygon fill="#D80027" points="57.377,202.665 0,240.917 0,255.998 80,202.665 "/>
<polygon fill="#D80027" points="176,202.665 256,255.998 256,240.917 198.623,202.665 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#D80027" width="513" height="342"/>
<rect x="196" y="0" fill="#FFFFFF" width="317" height="171"/>
<rect y="0" fill="#0037A1" width="196" height="171"/>
<polygon fill="#FFFFFF" points="98,24.5 113.1,71 162,71 122.4,99.7 137.6,146.2 98,117.5 58.4,146.2 73.6,99.7 34,71 82.9,71 "/>
</svg>

After

Width:  |  Height:  |  Size: 420 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#ce1126" width="513" height="342"/>
<rect y="0" fill="#007a5e" width="171" height="342"/>
<g fill="#fcd116">
<rect x="342" y="0" width="171" height="342"/>
<polygon points="256,102.2 273.2,155.2 329,155.2 283.9,188 301.1,241 256,208.3 210.9,241 228.1,188 183,155.2
238.8,155.2 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 432 B

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#D80027" width="513" height="342"/>
<g fill="#FFDA44">
<polygon points="226.8,239.2 217.1,223.6 199.2,228 211.1,213.9 201.4,198.3 218.5,205.2 230.3,191.1 229,209.5
246.1,216.4 228.2,220.8 "/>
<polygon points="290.6,82 280.5,97.4 292.1,111.7 274.4,106.9 264.3,122.4 263.3,104 245.6,99.2 262.8,92.6
261.8,74.2 273.4,88.5 "/>
<polygon points="236.2,25.4 234.2,43.7 251,51.3 233,55.1 231,73.4 221.8,57.4 203.9,61.2 216.2,47.5 207,31.6
223.8,39.1 "/>
<polygon points="292.8,161.8 277.9,172.7 283.7,190.2 268.8,179.4 253.9,190.4 259.5,172.8 244.6,162.1 263,162
268.6,144.4 274.4,161.9 "/>
<polygon points="115,46.3 132.3,99.8 188.5,99.8 143.1,132.7 160.4,186.2 115,153.2 69.5,186.2 86.9,132.7 41.4,99.8
97.7,99.8 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 870 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFDA44" width="513" height="342"/>
<rect y="256.5" fill="#D80027" width="513" height="85.5"/>
<rect y="171" fill="#0052B4" width="513" height="85.5"/>
</svg>

After

Width:  |  Height:  |  Size: 283 B

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect y="114" fill="#D80027" width="513" height="114"/>
<rect y="285" fill="#0052B4" width="513" height="57"/>
<rect y="0" fill="#0052B4" width="513" height="57"/>
</svg>

After

Width:  |  Height:  |  Size: 332 B

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<polygon fill="#FF9811" points="0,-40.8 0,-40.8 0,382.1 0,382.1 0,170.7 "/>
<rect fill="#FFFFFF" width="513" height="342"/>
<g>
<rect fill="#0052B4" width="513" height="68.3"/>
<rect y="136.5" fill="#0052B4" width="513" height="68.3"/>
<rect y="273.1" fill="#0052B4" width="513" height="68.3"/>
</g>
<polygon fill="#D80027" points="256,170.7 0,342 0,0 "/>
<polygon fill="#FFFFFF" points="86.5,111.4 99.2,150.6 140.5,150.6 107.1,174.8 119.9,214.1 86.5,189.9 53.1,214.1 65.9,174.8
32.5,150.6 73.7,150.6 "/>
</svg>

After

Width:  |  Height:  |  Size: 637 B

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#003893" width="513" height="342"/>
<g>
<rect y="182.2" fill="#cf2027" width="513" height="41.4"/>
<rect y="140.8" fill="#FFFFFF" width="513" height="41.4"/>
<rect y="223.6" fill="#FFFFFF" width="513" height="41.4"/>
</g>
<g fill="#f7d116" stroke="#000000">
<polygon points="150.4,70 157.3,91.1 179.5,91.1 161.5,104.2 168.4,125.3 150.4,112.2 132.5,125.3 139.3,104.2
121.4,91.1 143.6,91.1 "/>
<polygon points="150.4,279.7 157.3,300.8 179.5,300.8 161.5,313.8 168.4,335 150.4,321.9 132.5,335 139.3,313.8
121.4,300.8 143.6,300.8 "/>
<polygon points="52.8,208.8 59.7,229.9 81.9,229.9 63.9,242.9 70.8,264.1 52.8,251 34.9,264.1 41.7,242.9 23.8,229.9
46,229.9 "/>
<polygon points="90.1,91 97,112.1 119.2,112.1 101.2,125.1 108.1,146.3 90.1,133.2 72.2,146.3 79,125.1 61,112.1
83.3,112.1 "/>
<polygon points="23.8,162 46,162 52.8,140.9 59.7,162 81.9,162 63.9,175.1 70.8,196.2 52.8,183.2 34.9,196.2
41.7,175.1 "/>
<polygon points="72.2,310.9 79,289.8 61,276.8 83.3,276.8 90.1,255.6 97,276.8 119.2,276.8 101.2,289.8 108.1,310.9
90.1,297.9 "/>
<polygon points="248,208.8 241.1,229.9 218.9,229.9 236.9,242.9 230,264.1 248,251 266,264.1 259.1,242.9 277.1,229.9
254.9,229.9 "/>
<polygon points="210.7,91 203.9,112.1 181.7,112.1 199.6,125.1 192.8,146.3 210.7,133.2 228.7,146.3 221.8,125.1
239.8,112.1 217.6,112.1 "/>
<polygon points="277.1,162 254.9,162 248,140.9 241.1,162 218.9,162 236.9,175.1 230,196.2 248,183.2 266,196.2
259.1,175.1 "/>
<polygon points="228.7,310.9 221.8,289.8 239.8,276.8 217.6,276.8 210.7,255.6 203.9,276.8 181.7,276.8 199.6,289.8
192.8,310.9 210.7,297.9 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#002b7f" width="513" height="342"/>
<rect y="233.5" fill="#f9e814" width="513" height="51"/>
<g fill="#FFFFFF">
<polygon points="168.7,86.5 181.6,126.3 223.4,126.3 189.6,150.8 202.5,190.5 168.7,166 134.9,190.5 147.8,150.8
114,126.3 155.8,126.3 "/>
<polygon points="85.4,32.5 93.2,56.4 118.2,56.4 97.9,71.1 105.7,94.9 85.4,80.2 65.1,94.9 72.9,71.1 52.6,56.4
77.7,56.4 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 525 B

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#0021ad" width="513" height="342"/>
<polyline fill="#1c8a42" points="0,0 513,0 513,342 "/>
<g fill="#FFFFFF">
<polygon points="77.6,272 83.3,283.9 96.1,280.9 90.4,292.8 100.7,300.9 87.9,303.8 87.9,317 77.6,308.7 67.4,317
67.4,303.8 54.6,300.9 64.9,292.8 59.1,280.9 72,283.9 "/>
<polygon points="40.5,173.1 46.2,185 59,182 53.3,193.8 63.6,202 50.7,204.9 50.8,218.1 40.5,209.8 30.2,218.1
30.3,204.9 17.4,202 27.8,193.8 22,182 34.8,185 "/>
<polygon points="77.6,92.2 83.3,104 96.1,101.1 90.4,112.9 100.7,121.1 87.9,124 87.9,137.1 77.6,128.9 67.4,137.1
67.4,124 54.6,121.1 64.9,112.9 59.1,101.1 72,104 "/>
<polygon points="123.7,155.1 129.4,167 142.2,164 136.5,175.9 146.8,184 134,186.9 134,200.1 123.7,191.9 113.5,200.1
113.5,186.9 100.7,184 111,175.9 105.3,164 118.1,167 "/>
<polygon points="90.8,209.1 95.2,222.8 109.7,222.8 98,231.3 102.5,245 90.8,236.6 79.1,245 83.6,231.3 71.9,222.8
86.3,222.8 "/>
</g>
<g>
<circle fill="#ffc639" cx="267.1" cy="170.7" r="74.5"/>
<path fill="#1c8a42" d="M267.1,220.3h24.8c0,0,10.8-19,0-37.2l24.8-24.8l-12.4-24.8h-12.4c0,0-6.2,18.6-31,18.6s-31-18.6-31-18.6
h-12.4l12.4,24.8l-12.4,24.8l12.4,12.4c0,0,12.4-24.8,37.2-12.4C267.1,183.1,277.6,198.6,267.1,220.3z"/>
</g>
<path fill="#ffc639" d="M464.4,92.2c0.6-2.9-0.2-17.6-0.2-20.7c0-21.3-13.9-39.4-33.2-45.7c5.9,12,9.2,25.4,9.2,39.7
c0,4.8-0.4,9.5-1.1,14.1c-2.9-4.7-6.6-8.9-11.2-12.6c-17.1-13.6-40.6-14-57.9-2.5c13.4,2.9,26.3,8.9,37.7,18
c9,7.1,16.2,16.8,21.7,26.1c0,0-17.8,10.9-31,15.1s-42.3,7.9-42.3,7.9c72,12,132-36,132-36C481.6,82.2,472.3,91.6,464.4,92.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#FFFFFF" width="513" height="342"/>
<path fill="#DB7D00" d="M141.7,154.7c0,0,0.2,67.1,74.7,65.3l4.5,13.9h8.9c0,0-7.4-41.1,60.1-41.5c0,0,0-27.6,27.6-27.6s41.5,0,41.5,0
s-66-51.8,58.9-118l1.8-13.1c0,0-129.9,71-198.9,57.2c0,0,10.7,42.5-10.8,42.5c-10.8,0-9.7-8.1-32.3-8.1
c-18.7,0-17.3,19.7-26.3,19.5c-8.9-0.2-18.8-12.3-19.6-10.2C131.1,136.7,141.7,154.7,141.7,154.7z"/>
<g fill="#006651">
<path d="M237.2,308.1c6.9-5,13-6.6,22.4-8.3s19.4-4.4,24.6-5.8s-17.7,6.6-23.5,8.3
C254.9,303.9,237.2,308.1,237.2,308.1z"/>
<path d="M275.1,293.4c-1.9-11.9,2.8-24.3,13.5-29.3C291.1,272.7,283.4,287.3,275.1,293.4z"/>
<path d="M293.3,287.2c-5.8-9.8,4-22.6,11.1-28.8C307.7,264.4,301.9,282.1,293.3,287.2z"/>
<path d="M310.2,279.6c-6.2-8.4,1.1-23.2,8.8-29C322.1,258.8,319.1,273.8,310.2,279.6z"/>
<path d="M327.1,269c-5.6-8-1.7-20.4,6.3-28.4C339.2,247.2,334.3,261.6,327.1,269z"/>
<path d="M340.6,258.3c-4.7-7.5,1.1-25.4,8.6-30.4C352.5,234.5,350,253.3,340.6,258.3z"/>
<path d="M351.4,255.5c-1.4-10.8,17.4-22.7,25.2-22.4C375.7,242,367.7,251.7,351.4,255.5z"/>
<path d="M340.9,267.7c8.8-9.1,26-9.1,32.1-7.2C371.3,265.8,351.1,277.4,340.9,267.7z"/>
<path d="M328.7,276.8c12.4-3.3,20.5-6.1,27.9,1.7C351.4,285.1,331.2,283.2,328.7,276.8z"/>
<path d="M311,284.8c11.9-6.4,26.3,3,28.5,8.6C326.2,298.9,310.8,286.2,311,284.8z"/>
<path d="M294.7,294c10.8-4.1,23.2,1.4,28.2,7.5C317.1,304.2,301.9,307.2,294.7,294z"/>
<path d="M279.8,298.7c12.4-1.4,24.4,8,27,13.4C290.9,313.6,284.8,308.9,279.8,298.7z"/>
<path d="M275.8,308.1c-6.9-5-13-6.6-22.4-8.3c-9.4-1.7-19.4-4.4-24.6-5.8c-5.3-1.4,17.7,6.6,23.5,8.3
C258.1,303.9,275.8,308.1,275.8,308.1z"/>
<path d="M237.9,293.4c1.9-11.9-2.8-24.3-13.5-29.3C221.9,272.7,229.6,287.3,237.9,293.4z"/>
<path d="M219.7,287.2c5.8-9.8-4-22.6-11.1-28.8C205.3,264.4,211.1,282.1,219.7,287.2z"/>
<path d="M202.8,279.6c6.2-8.4-1.1-23.2-8.8-29C190.9,258.8,193.9,273.8,202.8,279.6z"/>
<path d="M185.9,269c5.6-8,1.7-20.4-6.3-28.4C173.8,247.2,178.7,261.6,185.9,269z"/>
<path d="M172.4,258.3c4.7-7.5-1.1-25.4-8.6-30.4C160.5,234.5,163,253.3,172.4,258.3z"/>
<path d="M161.6,255.5c1.4-10.8-17.4-22.7-25.2-22.4C137.3,242,145.3,251.7,161.6,255.5z"/>
<path d="M172.1,267.7c-8.8-9.1-26-9.1-32.1-7.2C141.7,265.8,161.9,277.4,172.1,267.7z"/>
<path d="M184.3,276.8c-12.4-3.3-20.5-6.1-27.9,1.7C161.6,285.1,181.8,283.2,184.3,276.8z"/>
<path d="M202,284.8c-11.9-6.4-26.3,3-28.5,8.6C186.8,298.9,202.2,286.2,202,284.8z"/>
<path d="M218.3,294c-10.8-4.1-23.2,1.4-28.2,7.5C195.9,304.2,211.1,307.2,218.3,294z"/>
<path d="M233.2,298.7c-12.4-1.4-24.4,8-27,13.4C222.1,313.6,228.2,308.9,233.2,298.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#11457e" width="513" height="342"/>
<polygon fill="#d7141a" points="513,171 513,342 0,342 215,171 "/>
<polygon fill="#FFFFFF" points="513,0 513,171 215.185,171 0,0 "/>
</svg>

After

Width:  |  Height:  |  Size: 299 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#D80027" width="513" height="342"/>
<rect y="0" width="513" height="114"/>
<rect y="228" fill="#FFDA44" width="513" height="114"/>
</svg>

After

Width:  |  Height:  |  Size: 262 B

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#12ad2b" width="513" height="342"/>
<polygon fill="#6ab2e7" points="513,0 513,166.7 0,170.8 0,0 "/>
<polygon fill="#FFFFFF" points="256,170.7 0,342 0,0 "/>
<polygon fill="#d7141a" points="89.8,92.5 106.8,144.9 162,144.9 117.4,177.4 134.4,229.8 89.8,197.4 45.2,229.8 62.2,177.4
17.6,144.9 72.8,144.9 "/>
</svg>

After

Width:  |  Height:  |  Size: 450 B

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#c60c30" width="513" height="342"/>
<polygon fill="#FFFFFF" points="190,0 130,0 130,140 0,140 0,200 130,200 130,342 190,342 190,200 513,200 513,140
190,140 "/>
</svg>

After

Width:  |  Height:  |  Size: 296 B

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#496E2D" width="513" height="342"/>
<polygon points="0,110.7 0,150.7 0,190.7 0,230.7 513,230.7 513,190.7 513,150.7 513,110.7 "/>
<rect y="110.7" fill="#FFDA44" width="513" height="40"/>
<rect y="190.7" fill="#FFFFFF" width="513" height="40"/>
<rect x="196" y="0" width="120" height="342"/>
<rect x="196" y="0" fill="#FFDA44" width="40" height="342"/>
<rect x="274.7" y="0" fill="#FFFFFF" width="40" height="342"/>
<g>
<circle fill="#D80027" cx="256" cy="170.7" r="123.1"/>
<g fill="#496E2D">
<polygon points="256,58.6 260.6,72.8 275.6,72.8 263.5,81.7 268.1,95.9 256,87.1 243.9,95.9 248.5,81.7 236.4,72.8
251.4,72.8 "/>
<polygon points="190.1,80 202.3,88.8 214.4,80 209.8,94.3 221.9,103.1 206.9,103.1 202.3,117.3 197.6,103.1
182.6,103.1 194.7,94.3 "/>
<polygon points="149.4,136 164.4,136 169,121.8 173.7,136 188.7,136 176.5,144.8 181.2,159.1 169,150.3 156.9,159.1
161.5,144.8 "/>
<polygon points="149.4,205.3 161.5,196.5 156.9,182.2 169,191 181.2,182.2 176.5,196.5 188.7,205.3 173.7,205.3
169,219.6 164.4,205.3 "/>
<polygon points="190.1,261.4 194.7,247.1 182.6,238.3 197.6,238.3 202.3,224 206.9,238.3 221.9,238.3 209.8,247.1
214.4,261.4 202.3,252.5 "/>
<polygon points="256,282.8 251.4,268.5 236.4,268.5 248.5,259.7 243.9,245.4 256,254.2 268.1,245.4 263.5,259.7
275.6,268.5 260.6,268.5 "/>
<polygon points="321.9,261.4 309.7,252.5 297.6,261.4 302.2,247.1 290.1,238.3 305.1,238.3 309.7,224 314.4,238.3
329.4,238.3 317.3,247.1 "/>
<polygon points="362.6,205.3 347.6,205.3 343,219.6 338.3,205.3 323.3,205.3 335.5,196.5 330.8,182.2 343,191
355.1,182.2 350.5,196.5 "/>
<polygon points="362.6,136 350.5,144.8 355.1,159.1 343,150.3 330.8,159.1 335.5,144.8 323.3,136 338.3,136
343,121.8 347.6,136 "/>
<polygon points="321.9,80 317.3,94.3 329.4,103.1 314.4,103.1 309.7,117.3 305.1,103.1 290.1,103.1 302.2,94.3
297.6,80 309.7,88.8 "/>
</g>
<path fill="#496E2D" d="M279.3,168.7c-11-21.1-14.5-25.1-14.5-25.1s0.4-9.7,0.4-15.6c0-8.8-7.4-15.8-16.5-15.8
c-8.6,0-15.7,2.9-16.5,11c-4.2,0.9-8.6,4.1-8.6,10.7c0,4.8,1,7.3,5.2,9.3c2.1-4.6,4.3-4.8,9.3-6.4c0.8,0.6,1.7,3,2.6,3.4l0.3,1
c0,0-13.3,6.6-13.3,30.9c0,29.5,22,45.4,22,45.4l-1.8,0.3l-1.9,7.1h22v-7.2l11,17.5C279.3,234.9,289.2,187.6,279.3,168.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect y="215.2" fill="#D80027" width="211.5" height="126.1"/>
<rect y="0" fill="#0052B4" width="211.5" height="126.2"/>
<rect x="300.5" y="0" fill="#D80027" width="211.5" height="126.2"/>
<rect x="300.5" y="215.2" fill="#0052B4" width="211.5" height="126.1"/>
<g stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10">
<path fill="#0052B4" d="M256,130h-49.9v49.4c0,0,19.5,6,49.9,6V130z"/>
<path fill="#D80027" d="M206.1,179.4v6c0,27.5,22.3,49.9,49.9,49.9v-49.9C225.6,185.4,206.1,179.4,206.1,179.4z"/>
<path fill="#0052B4" d="M256,235.3c27.5,0,49.9-22.3,49.9-49.9v-6c0,0-19.5,6-49.9,6V235.3z"/>
<path fill="#D80027" d="M256,130v55.4c30.4,0,49.9-6,49.9-6V130H256z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 853 B

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#41662E" width="513" height="342"/>
<rect x="256.5" y="0" fill="#FFFFFF" width="256.5" height="342"/>
<g>
<polygon fill="#D80027" points="341.5,105.3 312.1,145.7 264.6,130.3 294,170.7 264.6,211.1 312.1,195.7 341.5,236.1 341.5,186.1
389,170.6 341.5,155.2 "/>
<path fill="#D80027" d="M309.9,276.7c-58.5,0-106-47.5-106-106s47.5-106,106-106c18.3,0,35.4,4.6,50.4,12.7
c-23.5-23-55.7-37.2-91.2-37.2c-72,0-130.4,58.4-130.4,130.4s58.4,130.4,130.4,130.4c35.5,0,67.7-14.2,91.2-37.2
C345.4,272,328.2,276.7,309.9,276.7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 666 B

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFDA44" width="513" height="342"/>
<rect y="170.7" fill="#0052B4" width="513" height="85.3"/>
<rect y="256" fill="#D80027" width="513" height="85.3"/>
<circle fill="#FFDA44" cx="256" cy="171" r="60"/>
<path fill="#4C1F00" d="M369.2,79.9c0,0-27.2-13.8-33.9-16c-6.7-2.2-49.1-13.2-49.1-7c0,10.3-13.5,12-15.5,12s-2-5.3-14.8-5.3
s-13.7,4.8-15.8,4.8c-2.2,0-14.5-1-14.5-11.5c0-5.2-42.9,4-49.1,7c-6.1,3.1-33.9,16-33.9,16s45.8,2.7,53.9,6.2s43.8,16.5,43.8,16.5
l-2.8,13.3h37.8l-3.8-13.3c0,0,35.1-12.7,43.8-16.5S369.2,79.9,369.2,79.9z"/>
<path fill="#57BA17" d="M217.7,171.7c0,21.1,17.2,38.3,38.3,38.3c21.1,0,38.3-17.2,38.3-38.3v-11.5h-76.5V171.7z"/>
<path fill="#338AF3" d="M256,110.5c-21.1,0-38.3,17.2-38.3,38.3v11.5h76.5v-11.5C294.3,127.7,277.1,110.5,256,110.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 901 B

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#111111" width="513" height="342"/>
<rect y="0" fill="#368FD8" width="513" height="114"/>
<rect y="228" fill="#FFFFFF" width="513" height="114"/>
</svg>

After

Width:  |  Height:  |  Size: 277 B

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect y="0" fill="#D80027" width="513" height="114"/>
<rect y="228" width="513" height="114"/>
<path fill="#C09300" d="M220.3,204.4c0,0,0-58.4,4.5-64.7c3.1-4.3,16.8,5.2,22.7,4.5c0,0,4.2-7.5,4.5-12c0.3-4.6-1.1-7.6-4.9-6.2
c0,0-1.2-2.1,0.5-3.3c1.6-1.2,5.6,0.1,5.6,0.1s-0.5-1,1.6-0.9c2.9,0.2,7.2,1.4,7.4,5.6c0.2,3.1,0.3,7.7,0.4,8.7
c0.7,6.8,2.7,8.7,2.7,8.7s18.4-9.2,22-5.2c3.3,3.8,4.5,64.7,4.5,64.7l-18.1-16.8l12.1,29.5c0,0-14.4,2.4-28.9,2.4
c-14.5,0-31.1-4.2-31.1-4.2l13.8-28.2L220.3,204.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 672 B

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<rect y="0" width="513" height="114"/>
<rect y="228" fill="#428823" width="513" height="114"/>
<g>
<polygon fill="#D80027" points="256,171 0,342 0,0 "/>
<path fill="#D80027" d="M309.1,171c0-22.9,13.1-42.1,34.6-46.8c-3.3-0.7-6.7-1.1-10.3-1.1c-26.4,0-47.9,21.4-47.9,47.9
s21.4,47.9,47.9,47.9c3.5,0,7-0.4,10.3-1.1C322.2,212.7,309.1,193.6,309.1,171z"/>
<polygon fill="#D80027" points="365,129.2 375.3,160.9 408.6,160.9 381.6,180.5 391.9,212.2 365,192.6 338,212.2 348.3,180.5
321.3,160.9 354.7,160.9 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 690 B

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#338AF3" width="513" height="342"/>
<rect y="0" fill="#56AF35" width="513" height="171"/>
<path fill="#D80027" d="M0,342c0,0,513-171,513-171L0,0V342z"/>
<g fill="#ffc945">
<path d="M134.7,231.5c33.6,0,60.8-27.2,60.8-60.8s-27.2-60.8-60.8-60.8s-60.8,27.2-60.8,60.8S101.1,231.5,134.7,231.5z
M134.7,255.8c-47,0-85.2-38.1-85.2-85.2s38.1-85.2,85.2-85.2s85.2,38.1,85.2,85.2S181.7,255.8,134.7,255.8z"/>
<circle cx="119.5" cy="148.3" r="17.5"/>
<circle cx="148.9" cy="158.5" r="17.5"/>
<circle cx="134.7" cy="135.2" r="17.5"/>
<circle cx="119.5" cy="172.7" r="17.5"/>
<circle cx="149.9" cy="182.8" r="17.5"/>
<circle cx="122.5" cy="198" r="17.5"/>
<circle cx="145.9" cy="205.2" r="17.5"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 837 B

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15">
<path fill="#FFFFFF" d="M0,0h22.5v15H0V0z"/>
<path fill="#D03433" d="M0,0h22.5v4H0V0z M0,11h22.5v4H0V11z"/>
<path fill="#FBCA46" d="M0,4h22.5v7H0V4z"/>
<path fill="#FFFFFF" d="M7.8,7h1v0.5h-1V7z"/>
<path fill="#A41517" d="M7.2,8.5C7.2,8.8,7.5,9,7.8,9c0.3,0,0.6-0.2,0.6-0.5L8.5,7H7.1C7.1,7,7.2,8.5,7.2,8.5z M6.6,7
c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0,0h1.5C8.8,6.5,9,6.7,9,6.9C9,7,9,7,9,7L8.9,8.5c-0.1,0.6-0.5,1-1.1,1c-0.6,0-1-0.4-1.1-1L6.6,7
L6.6,7z"/>
<path fill="#A41517" d="M6.8,7.5h2V8H8.3L7.8,9L7.3,8H6.8V7.5z M5.3,6h1v3.5h-1V6z M9.3,6h1v3.5h-1V6z M6.8,5.5C6.8,5.2,7,5,7.3,5h1
c0.3,0,0.5,0.2,0.5,0.5v0.2C8.8,5.9,8.7,6,8.5,6c0,0,0,0,0,0H7C6.9,6,6.8,5.9,6.8,5.8c0,0,0,0,0,0V5.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 911 B

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.5 15">
<path fill="#20AA46" d="M0,0h22.5v5H0V0z"/>
<path fill="#E92F3B" d="M0,10h22.5v5H0V10z"/>
<path fill="#FADF50" d="M0,5h22.5v5H0V5z"/>
<circle fill="#205CCA" cx="11.3" cy="7.5" r="5.2"/>
<g stroke="#FFDB3D" fill="none">
<g stroke-width="0.5">
<path d="M11.3,8.8l-2.1,1.5L10,7.9L8,6.4h2.5l0.8-2.3l0.8,2.3l2.6,0l-2.1,1.5l0.8,2.4L11.3,8.8z"/>
<line x1="10.3" y1="6.4" x2="12.2" y2="6.4"/>
<line x1="9.9" y1="7.8" x2="11.2" y2="8.8"/>
<line x1="12" y1="6.2" x2="12.7" y2="8"/>
<line x1="10" y1="7.9" x2="10.6" y2="6.1"/>
<line x1="11" y1="9" x2="12.6" y2="7.9"/>
</g>
<g stroke-width="0.25">
<line x1="8.7" y1="3.9" x2="9.8" y2="5.5"/>
<line x1="13.8" y1="3.8" x2="12.8" y2="5.4"/>
<line x1="11.3" y1="10.1" x2="11.3" y2="12"/>
<line x1="8.9" y1="8.3" x2="7.1" y2="9"/>
<line x1="15.5" y1="9" x2="13.7" y2="8.3"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 994 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 810 540"><path fill="#039" d="M0 0h810v540H0z"/><path fill="#FC0" d="m404.951 59.865 6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zM314.951 83.865l6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zM248.951 149.865l6.735 20.718h21.894l-17.633 12.812 6.638 20.74-17.634-12.812-17.634 12.812 6.736-20.729-17.633-12.812h21.796zM224.951 239.864l6.735 20.719h21.894l-17.633 12.813 6.638 20.74-17.634-12.813-17.634 12.813 6.736-20.731-17.633-12.811h21.796zM248.951 329.865l6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zM314.951 395.865l6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zM494.951 83.865l6.735 20.718h21.894l-17.633 12.812 6.637 20.74-17.633-12.812-17.635 12.812 6.737-20.729-17.633-12.812h21.795zM560.951 149.865l6.735 20.718h21.894l-17.633 12.812 6.637 20.74-17.633-12.812-17.635 12.812 6.737-20.729-17.633-12.812h21.795zM584.951 239.865l6.735 20.718h21.894l-17.633 12.813 6.638 20.74-17.634-12.813-17.634 12.813 6.736-20.731-17.633-12.811h21.796zM560.951 329.865l6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zM404.951 419.865l6.735 20.719h21.894l-17.633 12.811 6.638 20.74-17.634-12.811-17.634 12.811 6.736-20.729-17.633-12.812h21.796zM494.951 395.864l6.735 20.719h21.894l-17.633 12.812 6.639 20.74-17.635-12.812-17.633 12.812 6.735-20.73-17.633-12.811h21.797z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#FFFFFF" width="513" height="342"/>
<polygon fill="#2E52B2" points="513,129.3 513,212 203.7,212 203.7,342 121,342 121,212 0,212 0,129.3 121,129.3 121,0 203.7,0
203.7,129.3 "/>
</svg>

After

Width:  |  Height:  |  Size: 318 B

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#2E52B2" width="513" height="342"/>
<polygon fill="#FFFFFF" points="256,0 256,22.6 209.9,53.3 256,53.3 256,117.3 209.9,117.3 256,148 256,170.7 233.4,170.7 160,121.7
160,170.7 96,170.7 96,121.7 22.6,170.7 0,170.7 0,148 46.1,117.3 0,117.3 0,53.3 46.1,53.3 0,22.6 0,0 22.6,0 96,48.9 96,0 160,0
160,48.9 233.4,0 "/>
<g>
<polygon fill="#D80027" points="144,0 112,0 112,69.3 0,69.3 0,101.3 112,101.3 112,170.7 144,170.7 144,101.3 256,101.3 256,69.3
144,69.3 "/>
<polygon fill="#D80027" points="0,0 0,15.1 57.4,53.3 80,53.3 "/>
<polygon fill="#D80027" points="256,0 256,15.1 198.6,53.3 176,53.3 "/>
<polygon fill="#D80027" points="0,0 0,15.1 57.4,53.3 80,53.3 "/>
<polygon fill="#D80027" points="256,0 256,15.1 198.6,53.3 176,53.3 "/>
<polygon fill="#D80027" points="0,170.7 0,155.6 57.4,117.3 80,117.3 "/>
<polygon fill="#D80027" points="256,170.7 256,155.6 198.6,117.3 176,117.3 "/>
</g>
<g>
<path fill="#F3F3F3" d="M307.1,127.1v92c0,61.6,80.5,80.5,80.5,80.5S468,280.6,468,219v-92l-80.5-23L307.1,127.1z"/>
<path fill="#D80027" d="M468,132.8V98.3H307.1v34.5h69v69h-69v23v0h69V296c6.9,2.5,11.5,3.5,11.5,3.5s4.6-1.1,11.5-3.5v-71.2h69v0v-23
h-69v-69H468z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect fill="#0052B4" width="513" height="342"/>
<polygon fill="#FFFFFF" points="256,0 256,30.6 210.8,55.7 256,55.7 256,115 196.9,115 256,147.8 256,170.7 229.3,170.7 155.8,129.8
155.8,170.7 100.2,170.7 100.2,122.1 12.7,170.7 0,170.7 0,140.1 45.2,115 0,115 0,55.7 59.1,55.7 0,22.8 0,0 26.7,0 100.2,40.8
100.2,0 155.8,0 155.8,48.6 243.3,0 "/>
<polygon fill="#D80027" points="144,0 112,0 112,69.3 0,69.3 0,101.3 112,101.3 112,170.7 144,170.7 144,101.3 256,101.3 256,69.3
144,69.3 "/>
<polygon fill="#0052B4" points="155.8,115 256,170.7 256,154.9 184.2,115 "/>
<polygon fill="#FFFFFF" points="155.8,115 256,170.7 256,154.9 184.2,115 "/>
<g>
<polygon fill="#D80027" points="155.8,115 256,170.7 256,154.9 184.2,115 "/>
<polygon fill="#D80027" points="71.8,115 0,154.9 0,170.7 0,170.7 100.2,115 "/>
</g>
<polygon fill="#0052B4" points="100.2,55.6 0,0 0,15.7 71.8,55.6 "/>
<polygon fill="#FFFFFF" points="100.2,55.6 0,0 0,15.7 71.8,55.6 "/>
<g>
<polygon fill="#D80027" points="100.2,55.6 0,0 0,15.7 71.8,55.6 "/>
<polygon fill="#D80027" points="184.2,55.6 256,15.7 256,0 256,0 155.8,55.6 "/>
</g>
<g transform="translate(13 4)">
<path fill="#1F8BDE" d="M299.2,190.2v-90c0-8.5,6.5-15.3,15-15.3h120.5c8.3,0,15,6.8,15,15.3v90
c0,75.2-75.2,105.3-75.2,105.3S299.2,265.4,299.2,190.2z"/>
<path fill="#FFFFFF" d="M299.2,190.2v-90c0-8.5,6.5-15.3,15-15.3h120.5c8.3,0,15,6.8,15,15.3v90c0,75.2-75.2,105.3-75.2,105.3
S299.2,265.4,299.2,190.2z M378.8,276.5c7.9-4.5,15.9-10,23.2-16.7c20.5-18.5,32.6-41.4,32.6-69.7v-90c0-0.3-120.4-0.3-120.4-0.3
l0,90.3c0,28.3,12.1,51.2,32.6,69.7c8.3,7.5,17.6,13.9,27.6,19C375.8,278.2,377.2,277.4,378.8,276.5z"/>
<path fill="#187536" d="M334.1,189.4c-2.6-7.9,1.7-14.3,10.1-14.3h60.5c8.2,0,12.8,6.3,10.1,14.3l-5.5,16.5c-2.6,7.9-8.9,9.2-15.8,4
c0,0,2.6-4.8-19.1-4.8c-21.7,0-19.1,4.8-19.1,4.8c-6.1,5.7-13.1,4-15.8-4C339.6,206,334.1,189.4,334.1,189.4z"/>
<path fill="#FFFFFF" d="M344.4,175.1c8.1,1.6,17.8-15,30.1-15c13.1,0,21.8,17.1,30.1,15c7.4-1.8,15-22.2,15-30.1
c0-16.6-20.2-30.1-45.1-30.1c-24.9,0-45.1,13.5-45.1,30.1C329.3,153.5,336,173.5,344.4,175.1z"/>
<path fill="#FFFFFF" d="M343,266.7c6.2,0.4,12.5-1.8,17.2-6.5l9-9c2.9-2.9,7.5-2.9,10.4,0c0,0,0,0,0,0l9,9c4.7,4.7,11,6.9,17.1,6.5
c5.3-0.3,32.5-33.5,25.7-32.6c-4.6,0.6-9.1,2.8-12.7,6.3c0,0,0,0-0.1,0.1l-9,9c-2.9,2.9-7.5,2.9-10.4,0c0,0,0,0,0,0l-9-9
c-8.7-8.8-22.9-8.8-31.7-0.1c0,0,0,0-0.1,0.1l-9,9c-2.9,2.9-7.5,2.9-10.4,0c0,0,0,0,0,0l-9-9c-3.5-3.5-7.8-5.6-12.3-6.3
C311,233.1,337.8,266.4,343,266.7z M309.1,206c2.9-2.9,7.5-2.9,10.4,0c0,0,0,0,0,0l9,9c8.8,8.7,22.9,8.7,31.7,0l9-9
c2.9-2.9,7.5-2.9,10.4,0c0,0,0,0,0,0l9,9c8.8,8.7,22.9,8.7,31.7,0l9-9c2.9-2.9,7.5-2.9,10.4,0c0,0,0,0,0,0c0,0,5.5-14.8,2.5-15.9
c-7.9-2.9-17.2-1.2-23.5,5.2c0,0,0,0-0.1,0.1l-9,9c-2.9,2.9-7.5,2.9-10.4,0c0,0,0,0,0,0l-9-9c-8.7-8.8-22.9-8.8-31.7-0.1
c0,0,0,0-0.1,0.1l-9,9c-2.9,2.9-7.5,2.9-10.4,0c0,0,0,0,0,0l-9-9c-6.2-6.2-15.1-8-22.8-5.5C304.1,191,309.1,206,309.1,206z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342">
<rect y="0" fill="#338AF3" width="513" height="342"/>
<g>
<polygon fill="#FFFFFF" points="256,37.9 266.1,69.1 299,69.1 272.4,88.4 282.6,119.6 256,100.3 229.4,119.6 239.6,88.4 213,69.1
245.9,69.1 "/>
<polygon fill="#FFFFFF" points="123.2,170.7 154.4,160.5 154.4,127.7 173.7,154.3 204.9,144.1 185.6,170.7 204.9,197.2 173.7,187.1
154.4,213.6 154.4,180.8 "/>
<polygon fill="#FFFFFF" points="256,303.5 245.9,272.3 213,272.3 239.6,253 229.4,221.7 256,241 282.6,221.7 272.4,253 299,272.3
266.1,272.3 "/>
<polygon fill="#FFFFFF" points="388.8,170.7 357.6,180.8 357.6,213.6 338.3,187.1 307.1,197.2 326.4,170.7 307.1,144.1 338.3,154.3
357.6,127.7 357.6,160.5 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 797 B

Some files were not shown because too many files have changed in this diff Show More