Skip to content

Commit

Permalink
Merge pull request #427 from layerx-labs/dev
Browse files Browse the repository at this point in the history
BEPRO 2.25
  • Loading branch information
moshmage authored Jun 6, 2024
2 parents 05ea859 + 3610676 commit a4fcbf3
Show file tree
Hide file tree
Showing 119 changed files with 2,081 additions and 1,120 deletions.
7 changes: 5 additions & 2 deletions __mocks__/x-hooks/stores/toasts/toasts.store.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
const mockAddSuccess = jest.fn();
const mockAddError = jest.fn();
const useToastStore = jest.fn(() => ({
addSuccess: mockAddSuccess
addSuccess: mockAddSuccess,
addError: mockAddError,
}));

export {
useToastStore,
mockAddSuccess
mockAddSuccess,
mockAddError,
}
20 changes: 16 additions & 4 deletions __mocks__/x-hooks/use-react-query-mutation.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
import { mockAddSuccess } from "__mocks__/x-hooks/stores/toasts/toasts.store";
import { mockAddError, mockAddSuccess } from "__mocks__/x-hooks/stores/toasts/toasts.store";

const useReactQueryMutation = jest.fn(({
mutationFn,
onSuccess = () => {},
onError = () => {},
onSettled = () => {},
toastSuccess = undefined,
toastError = undefined,
}) => {
const mutate = jest.fn((props) => {
mutationFn(props);
onSuccess();
if (toastSuccess) mockAddSuccess(toastSuccess);
try {
mutationFn(props);
onSuccess();
onSettled();

if (toastSuccess)
mockAddSuccess(toastSuccess);
} catch(error) {
onError();

if (toastError)
mockAddError(toastError);
}
});

return {
mutate: mutate,
mutateAsync: mutate,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import React from "react";

import { fireEvent, waitFor } from "@testing-library/dom";
import { useSession } from "next-auth/react";

import { AvatarForm } from "components/profile/avatar-form/avatar-form.controller";

import { useUpdateUserAvatar } from "x-hooks/api/user/use-update-user-avatar";

import { render } from "__tests__/utils/custom-render";

jest
.mock("next-auth/react", () => ({
useSession: jest.fn().mockReturnValue({
update: jest.fn()
})
}));

jest
.mock("x-hooks/stores/user/user.store", () => ({
useUserStore: jest.fn().mockReturnValue({
currentUser: {
walletAddress: "0x000000000",
},
})
}))

jest
.mock("x-hooks/api/user/use-update-user-avatar", () => ({
useUpdateUserAvatar: jest.fn(),
}));

describe("AvatarForm", () => {
const avatarFile = new File(["avatar"], "avatar.png", { type: "image/png" });
window.URL.createObjectURL = jest.fn().mockReturnValue("url");

afterEach(() => {
jest.clearAllMocks();
});

it("Should change user avatar", async () => {
const result = render(<AvatarForm />);

const editButton = result.getByTestId("user-edit-icon-btn");
await fireEvent.click(editButton);

const avatarInput = result.getByTestId("Avatar");

await waitFor(() => {
fireEvent.change(avatarInput, {
target: { files: [avatarFile] },
});
});

const saveButton = result.getByTestId("update-avatar-button");
await fireEvent.click(saveButton);

expect(useSession().update).toHaveBeenCalled();
expect(useUpdateUserAvatar)
.toHaveBeenCalledWith({
address: "0x000000000",
avatar: avatarFile
});
});
});
2 changes: 1 addition & 1 deletion __tests__/server/common/user/change-user-handle.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ describe('changeUserHandle', () => {
(UserRoleUtils.hasAdminRole as jest.Mock).mockReturnValue(false);

mockRequest.query = {handle: 'newHandle'};
console.log(mockRequest)

await expect(changeUserHandle(mockRequest as NextApiRequest)).rejects.toThrow(HttpForbiddenError);
});

Expand Down
78 changes: 78 additions & 0 deletions __tests__/server/common/user/update-user-avatar.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import { NextApiRequest } from "next";

import IpfsStorage from "services/ipfs-service";

import { updateUserAvatar } from "server/common/user/update-user-avatar";
import { HttpBadRequestError } from "server/errors/http-errors";

jest
.mock("services/ipfs-service", () => ({
add: jest.fn().mockResolvedValue({ hash: "hash" }),
}));

jest
.mock("services/logging", () => ({
Logger: {
error: jest.fn()
}
}));

jest
.mock('server/utils/points-system/add-point-entry', () => ({
addPointEntry: jest.fn().mockResolvedValue("")
}));

describe("UpdateUserAvatar", () => {
let mockRequest: NextApiRequest;

beforeEach(() => {
mockRequest = {
body: {
files: [
{
fileName: "avatar.png",
fileData: "data:image/png,sadF#2fasdFQfqefasdf",
}
],
context: {
user: {
avatar: null,
save: jest.fn(),
}
}
},
} as unknown as NextApiRequest;
});

it("Should update user avatar successfully", async () => {
await updateUserAvatar(mockRequest);

expect(IpfsStorage.add).toHaveBeenCalled();
expect(mockRequest.body.context.user.avatar).toBe("hash");
expect(mockRequest.body.context.user.save).toHaveBeenCalled();
});

it("Should throw because no files were provided", async () => {
mockRequest.body.files = null;
await expect(() => updateUserAvatar(mockRequest))
.rejects
.toBeInstanceOf(HttpBadRequestError);

mockRequest.body.files = [];
await expect(() => updateUserAvatar(mockRequest))
.rejects
.toBeInstanceOf(HttpBadRequestError);
});

it("Should throw because file type is invalid", async () => {
mockRequest.body.files = [
{
fileName: "avatar.svg",
fileData: "data:image/svg,sadF#2fasdFQfqefasdf",
}
];
await expect(() => updateUserAvatar(mockRequest))
.rejects
.toBeInstanceOf(HttpBadRequestError);
});
});
9 changes: 9 additions & 0 deletions assets/icons/lightning-icon.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { SVGProps } from "react";

export default function LightningIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg width="18" height="24" viewBox="0 0 18 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M17.2303 11.0785C17.2019 10.9583 17.1443 10.8469 17.0625 10.7544C16.9807 10.6618 16.8774 10.5908 16.7616 10.5478L11.3607 8.5219L12.735 1.64721C12.7662 1.48748 12.7445 1.32197 12.6733 1.17564C12.6021 1.0293 12.4852 0.910102 12.3403 0.836016C12.1954 0.76193 12.0304 0.73698 11.8701 0.764931C11.7097 0.792882 11.5629 0.872217 11.4516 0.990965L0.951594 12.241C0.866314 12.3308 0.804621 12.4404 0.772028 12.5599C0.739435 12.6795 0.736955 12.8052 0.764812 12.9259C0.792669 13.0466 0.849993 13.1585 0.931665 13.2517C1.01334 13.3448 1.11681 13.4163 1.23284 13.4597L6.63566 15.4857L5.26503 22.3528C5.23391 22.5126 5.25558 22.6781 5.32679 22.8244C5.39799 22.9708 5.51485 23.09 5.65974 23.164C5.80464 23.2381 5.96969 23.2631 6.13001 23.2351C6.29032 23.2072 6.4372 23.1278 6.54847 23.0091L17.0485 11.7591C17.1322 11.6692 17.1926 11.5601 17.2243 11.4415C17.256 11.3228 17.2581 11.1981 17.2303 11.0785ZM7.25347 20.0625L8.23503 15.1519C8.27016 14.9777 8.24232 14.7968 8.15648 14.6412C8.07063 14.4857 7.93236 14.3656 7.76628 14.3025L2.81253 12.4416L10.7457 3.94221L9.76503 8.85284C9.7299 9.027 9.75774 9.20797 9.84358 9.36352C9.92943 9.51907 10.0677 9.6391 10.2338 9.70222L15.1838 11.5585L7.25347 20.0625Z" fill="white" />
</svg>
);
}
38 changes: 3 additions & 35 deletions assets/icons/mega-phone-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,8 @@ import { SVGProps } from "react";

export default function MegaPhoneIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg
width="110"
height="86"
viewBox="0 0 110 86"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g style={{mixBlendMode: "soft-light"}} clipPath="url(#clip0_4207_7392)">
<path
d="M65.3125 10.375V62.2254C65.3128 62.7907 65.4526 63.3473 65.7194 63.8457C65.9863 64.3441 66.3719 64.769 66.8422 65.0828L71.5687 68.2324C72.0272 68.5381 72.5524 68.7291 73.1002 68.7893C73.6479 68.8494 74.2021 68.7771 74.716 68.5782C75.2299 68.3794 75.6884 68.06 76.053 67.6468C76.4176 67.2337 76.6776 66.7389 76.8109 66.2043L82.5 44.75"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M13.75 61.9375C13.7502 62.5922 13.9372 63.2332 14.2893 63.7851C14.6413 64.3371 15.1436 64.777 15.7371 65.0532C16.3306 65.3295 16.9906 65.4305 17.6396 65.3444C18.2886 65.2583 18.8994 64.9886 19.4004 64.5672C41.916 45.6781 65.3125 44.75 65.3125 44.75H82.5C87.0584 44.75 91.4301 42.9392 94.6534 39.7159C97.8767 36.4926 99.6875 32.1209 99.6875 27.5625C99.6875 23.0041 97.8767 18.6324 94.6534 15.4091C91.4301 12.1858 87.0584 10.375 82.5 10.375H65.3125C65.3125 10.375 41.916 9.4469 19.4004 -9.43787C18.8997 -9.85906 18.2892 -10.1286 17.6407 -10.2149C16.9921 -10.3011 16.3324 -10.2005 15.739 -9.92479C15.1457 -9.6491 14.6433 -9.20979 14.291 -8.65848C13.9386 -8.10717 13.751 -7.46675 13.75 -6.81248V61.9375Z"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</g>
<defs>
<clipPath id="clip0_4207_7392">
<rect
width="110"
height="110"
fill="white"
transform="translate(0 -24)"
/>
</clipPath>
</defs>
</svg>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M22.5 11.25C22.4988 10.0569 22.0243 8.91305 21.1806 8.06941C20.337 7.22576 19.1931 6.75126 18 6.75002H14.2687C13.9959 6.73408 9.24188 6.39939 4.71469 2.60252C4.49607 2.41891 4.22959 2.30151 3.94656 2.2641C3.66353 2.22668 3.37571 2.27082 3.11689 2.39132C2.85807 2.51182 2.63902 2.70367 2.48546 2.94435C2.3319 3.18503 2.25022 3.46453 2.25 3.75002V18.75C2.25004 19.0356 2.3316 19.3152 2.48508 19.556C2.63857 19.7968 2.85761 19.9888 3.11646 20.1095C3.37532 20.2301 3.66322 20.2743 3.94633 20.2369C4.22945 20.1995 4.49601 20.0821 4.71469 19.8985C8.25563 16.9285 11.9334 16.0772 13.5 15.8391V18.8128C13.4997 19.06 13.5605 19.3034 13.6769 19.5215C13.7934 19.7395 13.9619 19.9253 14.1675 20.0625L15.1987 20.7497C15.3981 20.8827 15.6264 20.9661 15.8645 20.9928C16.1027 21.0194 16.3438 20.9887 16.5676 20.903C16.7914 20.8173 16.9914 20.6793 17.151 20.5005C17.3105 20.3216 17.4248 20.1071 17.4844 19.875L18.5878 15.7163C19.6704 15.5722 20.6638 15.04 21.3834 14.2185C22.103 13.397 22.4998 12.3421 22.5 11.25ZM3.75 18.7435V3.75002C7.76344 7.11658 11.8716 7.96877 13.5 8.17877V14.3175C11.8734 14.5313 7.76625 15.3816 3.75 18.7435ZM16.0312 19.4935V19.5038L15 18.8166V15.75H17.025L16.0312 19.4935ZM18 14.25H15V8.25002H18C18.7956 8.25002 19.5587 8.56609 20.1213 9.1287C20.6839 9.69131 21 10.4544 21 11.25C21 12.0457 20.6839 12.8087 20.1213 13.3713C19.5587 13.9339 18.7956 14.25 18 14.25Z" fill="white"/>
</svg>
);
}
48 changes: 2 additions & 46 deletions assets/icons/palette-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,8 @@ import { SVGProps } from "react";

export default function PaletteIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg
width="110"
height="86"
viewBox="0 0 110 86"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g
style={{ mixBlendMode: "soft-light" }}
clipPath="url(#clip0_4207_7408)"
>
<path
d="M55 58.5C55 55.765 56.0865 53.1419 58.0205 51.208C59.9544 49.274 62.5775 48.1875 65.3125 48.1875H85.1684C87.5042 48.1879 89.7709 47.3953 91.5975 45.9395C93.4241 44.4837 94.7024 42.4509 95.223 40.1738C95.9327 37.0474 96.2773 33.8492 96.25 30.6434C96.0566 7.94728 77.275 -10.4777 54.5703 -10.25C43.7048 -10.1368 33.3227 -5.74091 25.6795 1.98273C18.0363 9.70637 13.7494 20.1339 13.75 31C13.75 48.9652 25.2355 62.5563 41.25 68.2153C42.8048 68.765 44.4689 68.9338 46.1024 68.7075C47.736 68.4812 49.2915 67.8665 50.6384 66.9148C51.9853 65.9632 53.0843 64.7024 53.8432 63.2382C54.6021 61.774 54.9988 60.1492 55 58.5Z"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M55 13.8125C57.8477 13.8125 60.1562 11.504 60.1562 8.65625C60.1562 5.80853 57.8477 3.5 55 3.5C52.1523 3.5 49.8438 5.80853 49.8438 8.65625C49.8438 11.504 52.1523 13.8125 55 13.8125Z"
fill="white"
/>
<path
d="M36.0938 24.125C38.9415 24.125 41.25 21.8165 41.25 18.9688C41.25 16.121 38.9415 13.8125 36.0938 13.8125C33.246 13.8125 30.9375 16.121 30.9375 18.9688C30.9375 21.8165 33.246 24.125 36.0938 24.125Z"
fill="white"
/>
<path
d="M36.0938 48.1875C38.9415 48.1875 41.25 45.879 41.25 43.0312C41.25 40.1835 38.9415 37.875 36.0938 37.875C33.246 37.875 30.9375 40.1835 30.9375 43.0312C30.9375 45.879 33.246 48.1875 36.0938 48.1875Z"
fill="white"
/>
<path
d="M73.9062 24.125C76.754 24.125 79.0625 21.8165 79.0625 18.9688C79.0625 16.121 76.754 13.8125 73.9062 13.8125C71.0585 13.8125 68.75 16.121 68.75 18.9688C68.75 21.8165 71.0585 24.125 73.9062 24.125Z"
fill="white"
/>
</g>
<defs>
<clipPath id="clip0_4207_7408">
<rect
width="110"
height="110"
fill="white"
transform="translate(0 -24)"
/>
</clipPath>
</defs>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M22.5 9.43873C22.5006 9.24167 22.462 9.04646 22.3866 8.86443C22.3111 8.68241 22.2002 8.5172 22.0603 8.37842L15.6215 1.93873C15.4822 1.7994 15.3169 1.68888 15.1349 1.61348C14.9528 1.53808 14.7578 1.49927 14.5607 1.49927C14.3637 1.49927 14.1687 1.53808 13.9866 1.61348C13.8046 1.68888 13.6393 1.7994 13.5 1.93873L10.8347 4.60404L5.39715 6.64498C5.15003 6.73714 4.93146 6.8926 4.76331 7.09579C4.59516 7.29899 4.48333 7.54279 4.43903 7.80279L2.26028 20.8762C2.2423 20.9837 2.24795 21.0938 2.27685 21.1988C2.30574 21.3039 2.35717 21.4014 2.42758 21.4846C2.49798 21.5677 2.58566 21.6346 2.68451 21.6804C2.78336 21.7262 2.89101 21.75 2.99997 21.75C3.04142 21.7498 3.0828 21.7464 3.12372 21.7397L16.1962 19.5609C16.4559 19.5176 16.6996 19.4067 16.9028 19.2393C17.1061 19.0719 17.2617 18.854 17.354 18.6075L19.395 13.17L22.0603 10.5C22.2002 10.3611 22.3112 10.1957 22.3867 10.0135C22.4622 9.83131 22.5007 9.63593 22.5 9.43873ZM15.9497 18.0815L5.18622 19.875L9.62715 15.434C10.1818 15.7338 10.8259 15.8239 11.4415 15.6879C12.0572 15.5519 12.6033 15.1988 12.98 14.6933C13.3568 14.1877 13.539 13.5635 13.4933 12.9346C13.4477 12.3058 13.1772 11.7144 12.7314 11.2686C12.2856 10.8227 11.6942 10.5523 11.0653 10.5066C10.4365 10.461 9.81221 10.6432 9.30666 11.0199C8.80111 11.3967 8.44805 11.9428 8.31203 12.5584C8.17602 13.1741 8.26613 13.8181 8.5659 14.3728L4.12497 18.8156L5.91841 8.04935L11.0625 6.12092L17.8781 12.9375L15.9497 18.0815ZM9.74997 13.125C9.74997 12.9025 9.81595 12.685 9.93956 12.5C10.0632 12.315 10.2389 12.1708 10.4444 12.0856C10.65 12.0005 10.8762 11.9782 11.0944 12.0216C11.3127 12.065 11.5131 12.1721 11.6705 12.3295C11.8278 12.4868 11.9349 12.6873 11.9784 12.9055C12.0218 13.1237 11.9995 13.3499 11.9143 13.5555C11.8292 13.7611 11.685 13.9368 11.5 14.0604C11.315 14.184 11.0975 14.25 10.875 14.25C10.5766 14.25 10.2905 14.1315 10.0795 13.9205C9.86849 13.7095 9.74997 13.4233 9.74997 13.125ZM18.75 11.6887L12.3103 5.24998L14.5603 2.99998L21 9.43873L18.75 11.6887Z" fill="white"/>
</svg>
);
}
53 changes: 2 additions & 51 deletions assets/icons/pencil-line-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,8 @@ import { SVGProps } from "react";

export default function PencilLineIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg
width="110"
height="86"
viewBox="0 0 110 86"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g
style={{ mixBlendMode: "soft-light" }}
clipPath="url(#clip0_4207_7382)"
>
<path
d="M92.8111 68.8124H41.2486L17.4053 44.9691"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M70.4688 15.5312L29.2188 56.7812"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M41.25 68.8124H20.625C19.7133 68.8124 18.839 68.4502 18.1943 67.8056C17.5497 67.1609 17.1875 66.2866 17.1875 65.3749V46.1722C17.1879 45.2617 17.5495 44.3886 18.193 43.7444L71.182 -9.24465C71.8266 -9.88882 72.7006 -10.2507 73.6119 -10.2507C74.5232 -10.2507 75.3972 -9.88882 76.0418 -9.24465L95.2445 9.9452C95.8887 10.5898 96.2506 11.4638 96.2506 12.3751C96.2506 13.2864 95.8887 14.1604 95.2445 14.805L41.25 68.8124Z"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M58.4375 3.5L82.5 27.5625"
stroke="white"
strokeWidth="5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</g>
<defs>
<clipPath id="clip0_4207_7382">
<rect
width="110"
height="110"
fill="white"
transform="translate(0 -24)"
/>
</clipPath>
</defs>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
<path d="M21.3113 6.87845L17.1216 2.68971C16.9823 2.55038 16.8169 2.43986 16.6349 2.36446C16.4529 2.28905 16.2578 2.25024 16.0608 2.25024C15.8638 2.25024 15.6687 2.28905 15.4867 2.36446C15.3047 2.43986 15.1393 2.55038 15 2.68971L3.4397 14.25C3.2998 14.3888 3.18889 14.554 3.11341 14.736C3.03792 14.9181 2.99938 15.1133 3.00001 15.3103V19.5C3.00001 19.8978 3.15804 20.2794 3.43935 20.5607C3.72065 20.842 4.10218 21 4.50001 21H20.25C20.4489 21 20.6397 20.921 20.7803 20.7803C20.921 20.6397 21 20.4489 21 20.25C21 20.0511 20.921 19.8603 20.7803 19.7197C20.6397 19.579 20.4489 19.5 20.25 19.5H10.8113L21.3113 9.00002C21.4506 8.86072 21.5611 8.69535 21.6365 8.51334C21.7119 8.33133 21.7507 8.13625 21.7507 7.93924C21.7507 7.74222 21.7119 7.54714 21.6365 7.36513C21.5611 7.18312 21.4506 7.01775 21.3113 6.87845ZM12.75 7.06033L14.3147 8.62502L6.37501 16.5647L4.81032 15L12.75 7.06033ZM4.50001 19.5V16.8103L7.1897 19.5H4.50001ZM9.00001 19.1897L7.43626 17.625L15.375 9.68533L16.9397 11.25L9.00001 19.1897ZM18 10.1897L13.8113 6.00002L16.0613 3.75002L20.25 7.9397L18 10.1897Z" fill="white"/>
</svg>
);
}
10 changes: 5 additions & 5 deletions assets/linkedin-mark.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ export default function LinkedinMark(props: SVGProps<SVGSVGElement>) {
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g clip-path="url(#clip0_707_1553)">
<g clipPath="url(#clip0_707_1553)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
fillRule="evenodd"
clipRule="evenodd"
d="M5.55588 44H39.7781C42.4782 44 44.667 41.8112 44.667 39.1111V4.88889C44.667 2.18883 42.4782 0 39.7781 0H5.55588C2.85582 0 0.666992 2.18883 0.666992 4.88889V39.1111C0.666992 41.8112 2.85582 44 5.55588 44Z"
fill="#007EBB"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
fillRule="evenodd"
clipRule="evenodd"
d="M38.5561 37.8889H32.0268V26.7679C32.0268 23.7189 30.8682 22.015 28.4549 22.015C25.8295 22.015 24.4578 23.7882 24.4578 26.7679V37.8889H18.1654V16.7037H24.4578V19.5573C24.4578 19.5573 26.3498 16.0564 30.8454 16.0564C35.339 16.0564 38.5561 18.8005 38.5561 24.4757V37.8889ZM10.6585 13.9296C8.51513 13.9296 6.77832 12.1792 6.77832 10.0204C6.77832 7.86152 8.51513 6.11108 10.6585 6.11108C12.8018 6.11108 14.5376 7.86152 14.5376 10.0204C14.5376 12.1792 12.8018 13.9296 10.6585 13.9296ZM7.40932 37.8889H13.9707V16.7037H7.40932V37.8889Z"
fill="white"
/>
Expand Down
Loading

0 comments on commit a4fcbf3

Please sign in to comment.