Compare commits

..

1 Commits

Author SHA1 Message Date
Fatimah Alshammari ff942465be fix categories design 4 years ago

1
.gitignore vendored

@ -31,7 +31,6 @@ pubspec.lock
.pub-cache/ .pub-cache/
.pub/ .pub/
/build/ /build/
/ios/Frameworks/
# Web related # Web related
lib/generated_plugin_registrant.dart lib/generated_plugin_registrant.dart

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICajCCAVICAQAwJTEjMCEGCSqGSIb3DQEJARYUSGFyb29uNjEzOEBnbWFpbC5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4E8y9zluekbsXX6+i
HLa0GrZE+r8rJsmcNyhiONDkpCTQuuidRb4PH+DWPpxwtndKpgzPemCXavaAPY8I
vSf5/aLTzClLvuX4OqNsb9Y8v8jlt7uYud6hPYK+VKZmIyynqeHldur0+RQScVY7
Z4MbgxWYAXd0K49o1Vj8KcYP1G37XIaUwOf+Ib3az4abnrsou7w9PSHnKREPU1A8
syBR56/Zcm3I9e+4nLyk2kjhkp6zR8KKW3s0teqHkW+V2nqd6eU+ZwOOmP3FVuwl
X+kfVabTc42Nb7toDaIvxEI+LlrNCUTCptE5uvY+vId0bwjcL88Ti9zshPETgLd8
F7mHAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAMTsBtXA79BL7aJoe87iHwCaR
lyOoeG5vUVJhQxhkb7pXD6TT00H3DEn43MCD+Nu9KNq3ZAARTsbnoB1MzYQ+Qs0w
uIx3K+sKKqzo3tKY78cjpKYW68qSY8QHPH8z0PJ/a18Mz1VGjhV9sanRc57fkf8Y
SfzG+jKB+y9AeC4R5PAVkv/EScZKVyb8+hFNZRMBOfnME7QRWm51MlnzfgavB/Sr
SSb9KrKzA65UKM9fv0JhNftiFVwsMDA42RuwSE7rVqzoejb47sFNnEBprt4Jel+5
FJt/C//NKspMlW2cdRbPek7adaBuZCvEO+b0TDnvMQXnJTO5K0LCzGb5MRuGUg==
-----END CERTIFICATE REQUEST-----

@ -1,8 +0,0 @@
-----BEGIN CERTIFICATE REQUEST-----
MIH6MIGfAgEAMD0xIzAhBgkqhkiG9w0BCQEWFEhhcm9vbjYxMzhAZ21haWwuY29t
MQkwBwYDVQQDDAAxCzAJBgNVBAYTAkFFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEiHGgNfm6LyD0k41YUNxGibQT5t2T9+QTVb6v5YrfCYslJIurcpeia8pzl/HJ
p1f4qxCR04cEYE3tcunyzkJd26AAMAwGCCqGSM49BAMCBQADSAAwRQIhAJWZqbmD
e9jyqPHW578V6xsf5Axgf64GBBFMpZ8+ZukDAiAYu0BbgeiU4RwCrezA71iH95yZ
ge9MoPuNHejpDKGeQQ==
-----END CERTIFICATE REQUEST-----

@ -1,8 +0,0 @@
{\rtf1\ansi\ansicpg1252\cocoartf2758
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs24 \cf0 HMG@54321}

@ -1,74 +0,0 @@
MIIQaQYJKoZIhvcNAQcCoIIQWjCCEFYCAQExCzAJBgUrDgMCGgUAMHgGCSqGSIb3DQEHAaBrBGl7
InRlYW1JZCI6IjNBMzU5RTg2WkYiLCJkb21haW4iOiJ1YXQuaG1nd2Vic2VydmljZXMuY29tIiwi
ZGF0ZUNyZWF0ZWQiOiIyMDI1LTA0LTA5LDA4OjUzOjAzIiwidmVyc2lvbiI6MX2ggg0_MIIENDCC
AxygAwIBAgIIPVn4N-rR2J8wDQYJKoZIhvcNAQELBQAwczEtMCsGA1UEAwwkQXBwbGUgaVBob25l
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMjQxMjE2MTkyMTAxWhcNMjkx
MjExMTgxMzU5WjBZMTUwMwYDVQQDDCxBcHBsZSBpUGhvbmUgT1MgUHJvdmlzaW9uaW5nIFByb2Zp
bGUgU2lnbmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDQkzGr-FMe360eL2T3yU3Xlr5fSz15ZFxD7inDQNL6LxygtrwR
c-_wIrDf3vn5zlXj9UIBtSNlQRI793xGfYkTRZVE7JaVYmaXkAMA2eCuxdmxnCAtluCF7W9r01LT
gzzUASMl6eXG1BHYeaoIwt0VWPXvipNLDUvuDbaHk3UREFXLDHgH2zdwRjuX-sTreCng9Ox442Ha
QFeAB7uInKXHSW3IJtOVH00hoo1oc4Me5llahZZVVLCVLiXcdw1hh4GNiaQDezwAdyyJalnTZETZ
dKVbirFSYV9uBDDU8-IQNAyVjEvhe9YrhYPyJzmNcAgj4hSI_5P0LW1MJuKLN4YtAgMBAAGjgeUw
geIwDAYDVR0TAQH_BAIwADAfBgNVHSMEGDAWgBRv8ZUYYlzgyPHF7WwYyeDTZFKYIDBABggrBgEF
BQcBAQQ0MDIwMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWlwY2Ew
NzAvBgNVHR8EKDAmMCSgIqAghh5odHRwOi8vY3JsLmFwcGxlLmNvbS9haXBjYS5jcmwwHQYDVR0O
BBYEFLy1xem9_MvQntyUsB74IZRc_wkuMA4GA1UdDwEB_wQEAwIHgDAPBgkqhkiG92NkBjoEAgUA
MA0GCSqGSIb3DQEBCwUAA4IBAQAyNMLpd6pf4MbKovN3WeeKZ7jxUfP7sPaXv7ERo-GhPLsjkukS
k6JxHbzxmnFvpDxvNpK24EeCopPj57iPu98lRGICz8289_uNiglweGXCGU0ly3JiIeSpaPkQmi56
Dyi-pgMG0VVhH698-JTUcQ7i0yVUi86t1WgHW70te8diRXm5qYdM-Bg7gK4QS3HYeCvmCq-a59lN
zOpbt6OXVWvsDaB4x8Cwz8vcEEwwkhNxlNav4OzJ6cmbziUy7hENIRcki_GVLiJiRkV_4NvXFlTB
uT7T2oq5Zfa0tCN_eF3ZcnZkY6cIVcfZt5TbI7_zk6fUBERDDcriVrIrlCikPXKHMIIERDCCAyyg
AwIBAgIIXGPK5Eo3U8kwDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFw
cGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQD
Ew1BcHBsZSBSb290IENBMB4XDTE3MDUxMDIxMjczMFoXDTMwMTIzMTAwMDAwMFowczEtMCsGA1UE
AwwkQXBwbGUgaVBob25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJRWoBDz6DBIbH_L_cXvAege4XMHNjJi7ePXokzZM-
TzlHunW-88DS8Vmiqx_-CoY82S2aB_IOa7kpkRpfIgqL8XJYBa5MS0TFeaeAPLCI4IwMJ4RdGeWH
GTbL48V2t7D0QXJR9AVcg0uibaZRuPEm33terWUMxrKYUYy7fRtMwU7ICMfS7WQLtN0bjU9AfRuP
SJaSW_PQmH7ZvKQZDplhu0FdAcxbd3p9JNDc01P_w9zFlCy2Wk2OGCM5vdnGUj7R8vQliqEqh_3Y
DEYpUf_tF2yJJWuHv4ppFJ93n8MVt2iziEW9hOYGAkFkD60qKLgVyeCsp4q6cgQ0sniM-LKFAgMB
AAGjgewwgekwDwYDVR0TAQH_BAUwAwEB_zAfBgNVHSMEGDAWgBQr0GlHlHYJ_vRrjS5ApvdHTX8I
XjBEBggrBgEFBQcBAQQ4MDYwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3Nw
MDMtYXBwbGVyb290Y2EwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2NybC5hcHBsZS5jb20vcm9v
dC5jcmwwHQYDVR0OBBYEFG_xlRhiXODI8cXtbBjJ4NNkUpggMA4GA1UdDwEB_wQEAwIBBjAQBgoq
hkiG92NkBgISBAIFADANBgkqhkiG9w0BAQsFAAOCAQEAOs-smI2-kiAhCa2V87FcIfo2LVcgRHRz
ZJIIs5as922X-ls0OCfPEkbTPBHwB8mZkLHR6BEJpeOla2xjCD-eJfrVmZxM5uXOjrJNaOyLq6Oi
T4oRFT7cFCscxkS2b2fFW0-VKS2HXD_cgx53T-3aVKct5xOBwWPEVAsbSwpqKCII1DeSfH9nKF-v
PT-3rFkdODRkWu4zShlCRCnEyhhr4cFTLS30TcIV9jMyGHjxJm-KTeuUTKPo_w-zA4tl2usu2GVQ
n9yfit8xqIRU3FJSQdKyEx0xRkeIXz7uw_KMIwSV66yKPoJsBp8u44tDmmJbNA30mc8s7rpyhhkj
pfyOtTCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNV
BAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYw
FAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjEL
MAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmlj
YXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA5JGpCR-R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQ
CdN_QaiY-dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm_IlA7pV
j01dDfFkNSMVSxVZHbOU9_acns9QusFYUGePCLQg98usLCBvcLY_ATCMt0PPD5098ytJKBrI_s61
uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs_j743DN5qNMRX4fTGtQlkGJ
xHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP_Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCCAXYw
DgYDVR0PAQH_BAQDAgEGMA8GA1UdEwEB_wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn-9GuNLkCm
90dNfwheMB8GA1UdIwQYMBaAFCvQaUeUdgn-9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQw
ggEABgkqhkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBs
ZWNhLzCBwwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFu
eSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2Vy
dGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14
t-2Mm9zzd5vydtJ3ME_BH4WDhRuZPUc38qmbQI4s1LGQEti-9HOb7tJkD8t5TzTYoj75eP9ryAfs
fTmDi1Mg0zjEsb-aTwpr_yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UX
F6jcfiI1yiXV2Q_Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy_5
U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU-12TZ_wYdV2aeZuTJC-9jVcZ5-oVK3G72TQiQSKscPHbZN
nF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAoUwggKBAgEBMH8wczEtMCsGA1UEAwwkQXBwbGUgaVBo
b25lIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhv
cml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMCCD1Z-Dfq0difMAkGBSsOAwIa
BQCggdwwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjUwNDA5MDg1
MzAzWjAjBgkqhkiG9w0BCQQxFgQUAFaGI1aIk0pvFl6XU5VvRpeio9QwKQYJKoZIhvcNAQk0MRww
GjAJBgUrDgMCGgUAoQ0GCSqGSIb3DQEBAQUAMFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcw
DgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0G
CSqGSIb3DQEBAQUABIIBAHdhBvowTL1e7Q-KFo3GAoa_c3I5iQH79ks6sZ9U4zu3xhpjrReRlA5d
ORAcMvUnUT0sjDj2ISsLKzUnDXNlcPE8fqfkMI_7LYlWvnNalVtrJmL6CUheBuTKMQ_Z_lZLLI4o
J46YUzCU9M4vpcgO6EpOQTNrqLx2sOs-V_my1p-Hig7UqdHNviX4gL4xjg7yUXNoevZ9ixPLXI4C
aPmg5q2NCECPxS7g36hJ_gHtRC6awR8qvK3-mSZPPfMzh0sHih76h2RWcv13UHSNygn3SF0MLhsS
5m9tf6r1sJOCAr2_ri-65d2GN1vhGXfoXQ0KFy9N2Cao3IsRs5unBb6pk5c

Binary file not shown.

@ -1,16 +0,0 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICgjCCAWoCAQAwPTEjMCEGCSqGSIb3DQEJARYUSGFyb29uNjEzOEBnbWFpbC5j
b20xCTAHBgNVBAMMADELMAkGA1UEBhMCQUUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDHadAER62mSf+wOxPu9rF1EvifDxbAEv6znZIHvwimgShdPLLS
rkFdN4VpSHMzrASqpHnlSL3wxO6eym9pATH3WfLvKIQxnn9OkO5fScjQi0RkFbe0
JqTqN2LaFxrSFrhqQ/1p/izr690HqjrfquRI8t8evatyTku67/xcCj6uSIVLfJoS
8YCDVn0Y+w9n2Vw/+kHiNY6P96qp/CfXZgMLFpUu0mqcmZl97htfmB9AH2tC45yh
mKxDJiKEnk69zVCh/bkc9tFE1tUDkkKblJTCEyWfdDUUYM4ET3t3fBqWB78F4J3m
XglByGZmHgY2+7nsSQBiq7k9tFN2c7FZ9BD3AgMBAAGgADANBgkqhkiG9w0BAQsF
AAOCAQEAJxqoyfEJ7V83ffCAqkYNNEcCQMIRi1Y4cTTm/5KZGA/UPeDeX48/bm4K
XIf2zbv88OGASInBrvMDp0x0zs13Dx2yXxofGN+iQSBwN6jPV/upmm0DjgTmgUGh
BJste70LaU228ADzWDw8UJm/GKjK8WvE0XOGpPKYq9cuVW3M+6QRoRHXy0eJc2PX
VgopsuhHUyA5trxM7k4yc6GgYVx+fAwMaplovTwn5U8XK6bDEIvCjImfat/u4Wp8
R31p0BQzQaeyWfpp9Ucn/fvQSeB+wtjhHuA1ukcyWY1kBYOyCMIHymFrJLaTpUj7
aQFYZDV28HYv0yWhWIAD9Pu+aDHWpA==
-----END CERTIFICATE REQUEST-----

@ -1,74 +0,0 @@
Bag Attributes
friendlyName: VoIP Services: com.HMG.HMG-Smartphone
localKeyID: 70 4A 99 03 F8 D7 92 FA F7 2F DD 3B D8 BF 2C F0 BD CE 21 C8
subject=/UID=com.HMG.HMG-Smartphone.voip/CN=VoIP Services: com.HMG.HMG-Smartphone/OU=3A359E86ZF/O=Dr Sulaiman Al Habib Medical Center/C=SA
issuer=/CN=Apple Worldwide Developer Relations Certification Authority/OU=G4/O=Apple Inc./C=US
-----BEGIN CERTIFICATE-----
MIIGkTCCBXmgAwIBAgIQFB+/PYFlrZ6SCzSX9cqOBDANBgkqhkiG9w0BAQsFADB1
MUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTELMAkGA1UECwwCRzQxEzARBgNVBAoMCkFw
cGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTI0MDYwOTEyMDc1MVoXDTI1MDcwOTEy
MDc1MFowga0xKzApBgoJkiaJk/IsZAEBDBtjb20uSE1HLkhNRy1TbWFydHBob25l
LnZvaXAxLjAsBgNVBAMMJVZvSVAgU2VydmljZXM6IGNvbS5ITUcuSE1HLVNtYXJ0
cGhvbmUxEzARBgNVBAsMCjNBMzU5RTg2WkYxLDAqBgNVBAoMI0RyIFN1bGFpbWFu
IEFsIEhhYmliIE1lZGljYWwgQ2VudGVyMQswCQYDVQQGEwJTQTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMdp0ARHraZJ/7A7E+72sXUS+J8PFsAS/rOd
kge/CKaBKF08stKuQV03hWlIczOsBKqkeeVIvfDE7p7Kb2kBMfdZ8u8ohDGef06Q
7l9JyNCLRGQVt7QmpOo3YtoXGtIWuGpD/Wn+LOvr3QeqOt+q5Ejy3x69q3JOS7rv
/FwKPq5IhUt8mhLxgINWfRj7D2fZXD/6QeI1jo/3qqn8J9dmAwsWlS7SapyZmX3u
G1+YH0Afa0LjnKGYrEMmIoSeTr3NUKH9uRz20UTW1QOSQpuUlMITJZ90NRRgzgRP
e3d8GpYHvwXgneZeCUHIZmYeBjb7uexJAGKruT20U3ZzsVn0EPcCAwEAAaOCAuIw
ggLeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUW9n6HeeaGgujmXYiUIY+kchb
d6gwcAYIKwYBBQUHAQEEZDBiMC0GCCsGAQUFBzAChiFodHRwOi8vY2VydHMuYXBw
bGUuY29tL3d3ZHJnNC5kZXIwMQYIKwYBBQUHMAGGJWh0dHA6Ly9vY3NwLmFwcGxl
LmNvbS9vY3NwMDMtd3dkcmc0MDUwggEeBgNVHSAEggEVMIIBETCCAQ0GCSqGSIb3
Y2QFATCB/zCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRp
ZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRo
ZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1
c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGlj
ZSBzdGF0ZW1lbnRzLjA3BggrBgEFBQcCARYraHR0cHM6Ly93d3cuYXBwbGUuY29t
L2NlcnRpZmljYXRlYXV0aG9yaXR5LzATBgNVHSUEDDAKBggrBgEFBQcDAjAyBgNV
HR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmFwcGxlLmNvbS93d2RyZzQtNi5jcmww
HQYDVR0OBBYEFHBKmQP415L69y/dO9i/LPC9ziHIMA4GA1UdDwEB/wQEAwIHgDAQ
BgoqhkiG92NkBgMBBAIFADAQBgoqhkiG92NkBgMCBAIFADBDBgoqhkiG92NkBgME
BDUMM2NvbS5ITUcuSE1HLVNtYXJ0cGhvbmUsIGNvbS5ITUcuSE1HLVNtYXJ0cGhv
bmUudm9pcDAQBgoqhkiG92NkBgMFBAIFADAmBgoqhkiG92NkBgMDBBgMFmNvbS5I
TUcuSE1HLVNtYXJ0cGhvbmUwDQYJKoZIhvcNAQELBQADggEBAJAcIzSskk8/GbxQ
7nGUPPEWFswL66xTt3GusHmeXkKDXG3ac+4jLk8yU7gunos77CNDm+9TkShdJ2Rg
tTRopK4ockqwoPrCeEVrooHR4e42YvmkB6AfYKJRnQZQVJIpW0OES7vrtoWVGoNj
ktHOV+wFIuAQPI9P4z0RFyRw85MHr+jFqxeLU/1500PwCxIiNHkIcUtzZgrnr22R
7rgkxav+RrjLjXVQvC4VJispKCU7yR69Xv1rsC5zc7OTCuCkbQ9FvnfsiUz5ZDzp
3D0gGojU9wmJ1yVk9HiZsuiVwmg/LbDHI3pSYbxz3n1UHB6Pu0jX3c3Uxkx674HD
/0uvHzg=
-----END CERTIFICATE-----
Bag Attributes
localKeyID: 70 4A 99 03 F8 D7 92 FA F7 2F DD 3B D8 BF 2C F0 BD CE 21 C8
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHadAER62mSf+w
OxPu9rF1EvifDxbAEv6znZIHvwimgShdPLLSrkFdN4VpSHMzrASqpHnlSL3wxO6e
ym9pATH3WfLvKIQxnn9OkO5fScjQi0RkFbe0JqTqN2LaFxrSFrhqQ/1p/izr690H
qjrfquRI8t8evatyTku67/xcCj6uSIVLfJoS8YCDVn0Y+w9n2Vw/+kHiNY6P96qp
/CfXZgMLFpUu0mqcmZl97htfmB9AH2tC45yhmKxDJiKEnk69zVCh/bkc9tFE1tUD
kkKblJTCEyWfdDUUYM4ET3t3fBqWB78F4J3mXglByGZmHgY2+7nsSQBiq7k9tFN2
c7FZ9BD3AgMBAAECggEBALTXH58SBcd86hS+rsgSDkJ2ruNIQsBzOWpYJjtCIi0l
ih5r0lu/TWWk2SbuXhLpF95MhILLIf18Ck4UlU5rmA2SE/6RBrkc3KS6SII/no6J
Db+Z9lu4g+wnyEyxkVAe7KTp/aGmsMROxMaTuQpnptkE8BSnuxhRKtpfksNBQzC2
19OkEy4JAO7xWbm9w/ASiCtYf0Vj26DQo982Fe44cpG08iB2v1uUJINQkGzmg+85
vvn5A1ECpSpgd/eOa68ojxeNSU7iFGZPbpjuincLPBFlC5zp9KD1Bt6p2KwIizBl
GPYTp6a1DnWly6n0PuLN0fl/nRmI6ar48Ja1Qzk8NvECgYEA5iQo9lnjNOHjT6bk
hj5QXMz3MDMCPdJo6jQyADtmsC/F4RjufujfXPhMv2v8JLAjQjNMgfhTSF68zYHf
i1qW8e/CgWu7mGQEIhWtxiTkLou8zW3VjxwpgfeUsGI5L+PxoN53ZUVcetLz4Y58
8ATEhlxh02uGmG2k3HbvFu9NBT8CgYEA3dHJfFX2xv53ZD1E2IE1rM3j7a32s7VB
k/YX8ODrAJxwNmy/vm4gd5h6ofqVS1/IV4NHFbmQ5c1tzB44YGOEZH5Ta9hhHgHU
xoa3q6t+kjR9KrQvxjTSe9mW5x/jAgU0Wp/XrAfMZxc2eukb4/sJAGKG0kyFeX5O
5abVixWj7kkCgYAafd8ZPI+i7r2z1YpIybOGezGZIsYHR8k77HY1AKF5doZYuv35
LeVIVmy/PDbyIjRs0mrkKymrEvy4y1JoQC1P/EFvlG8rw5eWNNikDmsV0JATNal3
p84/X7iF9UiP8rVFx1YHGkzi9pWMSVKobmQQ82FvbNk5gqWPm0E6aqF7EQKBgQDB
mE0PlT9SIdk1xTuG8g5UiUV6tS/xXCql5kyy0LqJx/8voO4gV6FCf/PX1wnhxPDn
YA30agaKaiZ/1YhCp9hulMpd/3WTaOm5cu5uh7hqBiGP2b8wb/2cViWcBnpr0vsE
dSkYXZ4KA3pq/3R2HyyWB2e/t0Vu6cwWJuuM/hAa8QKBgGNRStNVSMPvzx2X7mB6
EqdlWqVbfSTHJiZKyNPWHlSuZgdQ14BRwq7KZ0ysZy+kOX4rh1rIfqzrKc62xEXB
E+fmIpu+DUOM5ojEPCf9Om87r3fMJ54SjM7z1dtVc+Muy4TnFZ4UQcN9txWbnkAo
++H5gC9DBedOEXkwoCYjoeuM
-----END PRIVATE KEY-----

Binary file not shown.

@ -1,6 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgJ5XRSnefd1apSG/z
YJTQ55ffLMlPgKlGM9edg88mUZagCgYIKoZIzj0DAQehRANCAATSA2MbS+J0cQsc
uBU0xaoxOUgGvnHCQSEK4t22i8eeKPPhH6RHJhK1ugPvj+Eyadf7j6pn3QRonEJu
mIL+qvqC
-----END PRIVATE KEY-----

@ -1,114 +0,0 @@
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.firebase.messaging;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import java.util.Timer;
import java.util.TimerTask;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.firebase.messaging.RemoteMessage;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
public class FlutterFirebaseMessagingReceiver extends BroadcastReceiver {
private static final String TAG = "FLTFireMsgReceiver";
static HashMap<String, RemoteMessage> notifications = new HashMap<>();
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "broadcast received for message");
if (ContextHolder.getApplicationContext() == null) {
ContextHolder.setApplicationContext(context.getApplicationContext());
}
if (intent.getExtras() == null) {
Log.d(
TAG,
"broadcast received but intent contained no extras to process RemoteMessage. Operation cancelled.");
return;
}
RemoteMessage remoteMessage = new RemoteMessage(intent.getExtras());
// Store the RemoteMessage if the message contains a notification payload.
if (remoteMessage.getNotification() != null) {
notifications.put(remoteMessage.getMessageId(), remoteMessage);
FlutterFirebaseMessagingStore.getInstance().storeFirebaseMessage(remoteMessage);
}
// |-> ---------------------
// App in Foreground
// ------------------------
if (FlutterFirebaseMessagingUtils.isApplicationForeground(context)) {
Intent onMessageIntent = new Intent(FlutterFirebaseMessagingUtils.ACTION_REMOTE_MESSAGE);
onMessageIntent.putExtra(FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
LocalBroadcastManager.getInstance(context).sendBroadcast(onMessageIntent);
return;
}
// |-> ---------------------
// App in Background/Quit
// ------------------------
if (remoteMessage.getData().containsKey("is_call")) {
Intent intent12 = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(intent12);
try {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Intent onMessageIntent = new Intent(FlutterFirebaseMessagingUtils.ACTION_REMOTE_MESSAGE);
onMessageIntent.putExtra(FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
LocalBroadcastManager.getInstance(context).sendBroadcast(onMessageIntent);
}
}, 5000);
} catch (Exception e) {
Log.e("AppCallingException", e.getMessage());
}
// super.onMessageReceived(remoteMessage);
} //else
// super.onMessageReceived(remoteMessage);
//
// if (remoteMessage.getData().containsKey("is_call")) {
// Log.e("AppCalling", "started...");
// Intent intent12 = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// context.startActivity(intent12);
// try {
// Log.e("AppCalling", "going to sleep...");
// TimeUnit.SECONDS.sleep(10);
// Log.e("AppCalling", "sendig to broadcast receiver...");
// Log.e("AppCalling:DAta", remoteMessage.getData().containsKey("is_call") + "");
// Intent onBackgroundMessageIntent =
// new Intent(context, FlutterFirebaseMessagingBackgroundService.class);
// onBackgroundMessageIntent.putExtra(
// FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
// FlutterFirebaseMessagingBackgroundService.enqueueMessageProcessing(
// context, onBackgroundMessageIntent);
// //return;
// } catch (Exception e) {
// Log.e("AppCallingException", e.getMessage());
// }
//
// }
Intent onBackgroundMessageIntent =
new Intent(context, FlutterFirebaseMessagingBackgroundService.class);
onBackgroundMessageIntent.putExtra(
FlutterFirebaseMessagingUtils.EXTRA_REMOTE_MESSAGE, remoteMessage);
FlutterFirebaseMessagingBackgroundService.enqueueMessageProcessing(
context, onBackgroundMessageIntent);
}
}

@ -21,45 +21,14 @@ if (flutterVersionName == null) {
flutterVersionName = '1.0' flutterVersionName = '1.0'
} }
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect' apply plugin: 'com.huawei.agconnect'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'
//apply plugin: 'com.google.firebase.crashlytics'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
configurations.all {
c ->
c.resolutionStrategy.eachDependency {
DependencyResolveDetails dependency ->
println dependency.requested.group
if (dependency.requested.group == 'org.bouncycastle') {
dependency.useTarget 'org.bouncycastle:bcprov-jdk15to18:1.68'
}
}
}
//configurations.all {
// resolutionStrategy {
// force 'androidx.core:core-ktx:1.6.0'
// }
//}
android { android {
compileSdkVersion 34 compileSdkVersion 31
// ndkVersion "24.0.8215888"
buildFeatures {
viewBinding true
dataBinding true
}
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
@ -68,48 +37,36 @@ android {
lintOptions { lintOptions {
disable 'MissingTranslation' disable 'MissingTranslation'
checkReleaseBuilds false checkReleaseBuilds false
} }
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.ejada.hmg" applicationId "com.ejada.hmg"
minSdkVersion 26 minSdkVersion 21
targetSdkVersion 34 targetSdkVersion 30
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
multiDexEnabled true multiDexEnabled true
}
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
} }
signingConfigs { signingConfigs {
release { config{
keyAlias keystoreProperties['keyAlias'] storeFile file('key')
keyPassword keystoreProperties['keyPassword'] keyAlias 'HMG'
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword 'HmGsa123'
storePassword keystoreProperties['storePassword'] keyPassword 'HmGsa123'
} }
} }
buildTypes { buildTypes {
debug { debug {
debuggable true signingConfig signingConfigs.config
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources false
// ndk {
// abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
// }
} }
release { release {
debuggable false signingConfig signingConfigs.config
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
staging { staging {
@ -124,22 +81,12 @@ android {
packagingOptions { packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro' exclude 'META-INF/proguard/androidx-annotations.pro'
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst '**/*.so'
} }
compileOptions { compileOptions {
// coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
kotlinOptions {
jvmTarget = '1.8'
}
} }
flutter { flutter {
@ -147,17 +94,15 @@ flutter {
} }
dependencies { dependencies {
// coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.google.firebase:firebase-messaging:21.0.0" implementation "com.google.firebase:firebase-messaging:21.0.0"
// implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{ // implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{
// exclude group: 'com.google.protobuf',module: 'protobuf-javalite' // exclude group: 'com.google.protobuf',module: 'protobuf-javalite'
// exclude group: 'com.google.protobuf',module: 'protobuf-lite' // exclude group: 'com.google.protobuf',module: 'protobuf-lite'
// }) // })
implementation 'pub.devrel:easypermissions:3.0.0' implementation 'pub.devrel:easypermissions:0.4.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0' // implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.guava:guava:27.0.1-android'
// Dependency on local binaries // Dependency on local binaries
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
@ -167,65 +112,18 @@ dependencies {
// implementation 'com.example.android:app-magic:12.3' // implementation 'com.example.android:app-magic:12.3'
implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1"
implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
// Native Dependency // Native Dependency
implementation "org.jetbrains.anko:anko-commons:0.10.4"
// implementation "us.zoom.videosdk:ZoomVideoSDK:1.10.11"
// implementation group: 'us.zoom.videosdk', name: 'zoomvideosdk-core', version: '1.10.11'
// implementation "us.zoom.videosdk:zoomvideosdk-core:1.10.1"
// implementation "us.zoom.videosdk:zoomvideosdk-annotation:1.10.1"
// implementation "us.zoom.videosdk:zoomvideosdk-videoeffects:1.10.1"
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-java8:2.4.0'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'com.google.android.gms:play-services-location:21.3.0'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'androidx.test.ext:junit:1.1.5'
implementation 'com.android.volley:volley:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.8.5'
implementation 'androidx.navigation:navigation-ui-ktx:2.8.5'
implementation 'androidx.activity:activity:1.9.3'
def room_version = "2.4.0-alpha04"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation 'net.zetetic:android-database-sqlcipher:4.5.2'
implementation 'com.intuit.ssp:ssp-android:1.1.0'
implementation 'com.intuit.sdp:sdp-android:1.1.0'
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
// implementation "com.mapbox.maps:android:10.16.6"
implementation 'com.mapbox.maps:android:11.3.1'
implementation files('libs/PenNavUI.aar')
implementation files('libs/Penguin.aar')
implementation files('libs/PenguinRenderer.aar')
// implementation "org.jetbrains.anko:anko-commons:0.10.4"
implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM
implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0' implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android implementation 'com.google.android.gms:play-services-location:17.1.0'//for Android
implementation 'com.google.android.gms:play-services-basement:17.5.0' implementation 'com.google.android.gms:play-services-basement:17.5.0'
implementation "com.opentok.android:opentok-android-sdk:2.21.4"
// implementation "com.opentok.android:opentok-android-sdk:2.19.1"
implementation 'com.facebook.stetho:stetho:1.5.1' implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1' implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
androidTestImplementation "androidx.test:core:1.4.0"
// implementation 'com.airbnb.android:lottie:5.2.0'
// implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.22'
implementation 'com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0'
implementation 'com.whatsapp.otp:whatsapp-otp-android-sdk:0.1.0'
} }

@ -21,24 +21,19 @@
], ],
"api_key": [ "api_key": [
{ {
"current_key": "AIzaSyDZDeWcBlRE3YfJWYt_DCiToVnANfaj8qg" "current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw"
} }
], ],
"services": { "services": {
"analytics_service": {
"status": 1
},
"appinvite_service": { "appinvite_service": {
"other_platform_oauth_client": [ "status": 1,
{ "other_platform_oauth_client": []
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com", },
"client_type": 3 "ads_service": {
}, "status": 2
{
"client_id": "815750722565-0cq9366orvsk5ipivq6lijcj56u03fr7.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.void.demo"
}
}
]
} }
} }
} }

Binary file not shown.

Binary file not shown.

@ -6,8 +6,6 @@
-keep class com.ejada.** { *; } -keep class com.ejada.** { *; }
-keep class org.webrtc.** { *; } -keep class org.webrtc.** { *; }
-keep class com.builttoroam.devicecalendar.** { *; }
-ignorewarnings -ignorewarnings
-keepattributes *Annotation* -keepattributes *Annotation*
-keepattributes Exceptions -keepattributes Exceptions
@ -26,47 +24,4 @@
-keep class io.flutter.plugins.** { *; } -keep class io.flutter.plugins.** { *; }
-dontwarn io.flutter.embedding.** -dontwarn io.flutter.embedding.**
-keep class com.huawei.hms.flutter.** { *; } -keep class com.huawei.hms.flutter.** { *; }
-repackageclasses -repackageclasses
## Flutter WebRTC
-keep class com.cloudwebrtc.webrtc.** { *; }
-keep class org.webrtc.** { *; }
## Flutter OpenTok
-keep class com.opentok.android.** { *; }
-keep class com.opentok.otc.** { *; }
-keep class org.otwebrtc.** { *; }
##Flutter Zoom
-keep class us.zoom**{
*;
}
-keep interface us.zoom**{
*;
}
-keep class org.webrtc**{
*;
}
-keep class com.zipow**{
*;
}
-dontwarn com.opentok.android.**
-dontwarn com.opentok.otc.**
-dontwarn penguin.com.pennav.Model.Navigation.NearLandmark
-keep,includedescriptorclasses class net.sqlcipher.** { *; }
-keep,includedescriptorclasses interface net.sqlcipher.** { *; }
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-dontwarn retrofit2.**
-keep class com.google.gson.** { *; }
-dontwarn com.google.gson.**
# Penguin classes
-keep class com.peng.pennavmap.models.** { *; }
-keep class com.peng.pennavmap.db.** { *; }

@ -4,4 +4,4 @@
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
--> -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
</manifest> </manifest>

@ -1,247 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.ejada.hmg"> package="com.ejada.hmg">
<!-- <!-- io.flutter.app.FlutterApplication is an android.app.Application that
io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method. calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. FlutterApplication and put your custom class here. -->
-->
<uses-permission
android:name="android.permission.ACTIVITY_RECOGNITION"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" tools:node="remove"/> -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" tools:node="remove"/> -->
<uses-permission
android:name="android.permission.BROADCAST_STICKY"
tools:node="remove" />
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> -->
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"
tools:node="remove" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"
tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_BACKGROUND_LOCATION"
tools:node="remove" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> -->
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
<uses-feature <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
android:name="android.hardware.sensor.stepcounter" <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
android:required="false" <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
tools:node="replace" />
<uses-feature
android:name="android.hardware.sensor.stepdetector"
android:required="false"
tools:node="replace" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature <uses-feature android:name="android.hardware.location.gps" android:required="false" />
android:name="android.hardware.location.network" <uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/>
android:required="false" />
<uses-feature
android:name="android.hardware.location.gps" <!-- Wifi Permissions-->
android:required="false" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA" /> <!-- <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" /> --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!-- Wifi Permissions --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- Detect Reboot Permission -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> -->
<!-- Detect Reboot Permission -->
<!-- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> -->
<queries> <queries>
<intent> <intent>
<action android:name="android.speech.RecognitionService" /> <action android:name="android.speech.RecognitionService" />
</intent> </intent>
<package android:name="com.whatsapp" />
<package android:name="com.whatsapp.w4b" />
</queries> </queries>
<application <application
android:name=".Application" android:name=".Application"
android:allowBackup="false" android:icon="@mipmap/ic_launcher"
android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher_local"
android:label="Dr. Alhabib"
android:screenOrientation="sensorPortrait"
android:showOnLockScreen="true"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
tools:replace="android:extractNativeLibs,android:label"> android:showOnLockScreen="true"
<activity android:screenOrientation="sensorPortrait"
android:name="com.cloud.diplomaticquarterapp.whatsapp.WhatsAppCodeActivity" android:label="Dr. Alhabib">
android:exported="true"
android:enabled="true"
android:launchMode="standard"
>
<intent-filter>
<action android:name="com.whatsapp.otp.OTP_RETRIEVED" />
</intent-filter>
</activity>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
<meta-data android:name="push_kit_auto_init_enabled" android:value="true" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:enabled="true"
android:exported="true"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:showOnLockScreen="true"
android:theme="@style/LaunchTheme" android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize" android:windowSoftInputMode="adjustResize">
tools:node="merge"> <!-- Specifies an Android theme to apply to this Activity as soon as
<meta-data
android:name="flutter_deeplinking_enabled"
android:value="true" />
<!--
Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. to determine the Window background behind the Flutter UI. -->
-->
<meta-data <meta-data
android:name="io.flutter.embedding.android.NormalTheme" android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" /> android:resource="@style/NormalTheme" />
<!-- <!-- Displays an Android View that continues showing the launch screen
Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of gap between the end of Android's launch screen and the painting of
Flutter's first frame. Flutter's first frame. -->
-->
<meta-data <meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable" android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" /> android:resource="@drawable/launch_background" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<!-- <intent-filter android:autoVerify="true">-->
<!-- <action android:name="android.intent.action.VIEW" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <category android:name="android.intent.category.BROWSABLE" />-->
<!-- <data-->
<!-- android:host="hmg.com"-->
<!-- android:scheme="http" />-->
<!-- <data-->
<!-- android:host="www.hmg.com"-->
<!-- android:scheme="http" />-->
<!-- <data android:scheme="https" />-->
<!-- </intent-filter>-->
<intent-filter> <intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" /> <action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity>
</activity> <!-- <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver" android:exported="true"> --> <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<!-- <intent-filter> --> <intent-filter>
<!-- <action android:name="android.intent.action.BOOT_COMPLETED"/> --> <action android:name="android.intent.action.BOOT_COMPLETED"/>
<!-- <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> --> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
<!-- </intent-filter> --> </intent-filter>
<!-- </receiver> --> </receiver>
<!-- Geofencing --> <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
<service
android:name=".geofence.intent_receivers.GeofenceTransitionsJobIntentService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver <!-- Geofencing -->
android:name=".geofence.intent_receivers.GeofenceBroadcastReceiver" <service android:name=".geofence.intent_receivers.GeofenceTransitionsJobIntentService" android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" />
android:enabled="true" <receiver android:name=".geofence.intent_receivers.GeofenceBroadcastReceiver" android:enabled="true" android:exported="true" />
android:exported="false" /> <receiver android:name=".geofence.intent_receivers.GeofencingRebootBroadcastReceiver" android:enabled="true">
<receiver
android:name=".geofence.intent_receivers.GeofencingRebootBroadcastReceiver"
android:enabled="true"
android:exported="false">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver <receiver android:name=".geofence.intent_receivers.LocationProviderChangeReceiver">
android:name=".geofence.intent_receivers.LocationProviderChangeReceiver"
android:exported="false">
<intent-filter> <intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" /> <action android:name="android.location.PROVIDERS_CHANGED"/>
</intent-filter> </intent-filter>
</receiver> </receiver>
<service android:name=".geofence.intent_receivers.ReregisterGeofenceJobService" android:permission="android.permission.BIND_JOB_SERVICE" />
<!-- Geofencing -->
<service
android:name=".geofence.intent_receivers.ReregisterGeofenceJobService"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" /> <!-- Geofencing -->
<!-- <!--
Huawei Push Notifications Huawei Push Notifications
Set push kit auto enable to true (for obtaining the token on initialize) Set push kit auto enable to true (for obtaining the token on initialize)
--> -->
<!-- <meta-data --> <meta-data
<!-- android:name="push_kit_auto_init_enabled" --> android:name="push_kit_auto_init_enabled"
<!-- android:value="true" /> --> android:value="true" />
<!-- These receivers are for sending scheduled local notifications --> <!-- These receivers are for sending scheduled local notifications -->
<receiver <receiver android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationBootEventReceiver">
android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationBootEventReceiver"
android:exported="false">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter> </intent-filter>
@ -249,7 +122,8 @@
<receiver <receiver
android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationScheduledPublisher" android:name="com.huawei.hms.flutter.push.receiver.local.HmsLocalNotificationScheduledPublisher"
android:enabled="true" android:enabled="true"
android:exported="false" /> android:exported="true" />
<receiver <receiver
android:name="com.huawei.hms.flutter.push.receiver.BackgroundMessageBroadcastReceiver" android:name="com.huawei.hms.flutter.push.receiver.BackgroundMessageBroadcastReceiver"
android:enabled="true" android:enabled="true"
@ -257,17 +131,26 @@
<intent-filter> <intent-filter>
<action android:name="com.huawei.hms.flutter.push.receiver.BACKGROUND_REMOTE_MESSAGE" /> <action android:name="com.huawei.hms.flutter.push.receiver.BACKGROUND_REMOTE_MESSAGE" />
</intent-filter> </intent-filter>
</receiver> <!-- Huawei Push Notifications --> </receiver>
<meta-data <!-- Huawei Push Notifications -->
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8" /> <meta-data android:name="com.google.android.geo.API_KEY"
<!-- android:value="AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8"/>
Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java
--> <!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data <meta-data
android:name="flutterEmbedding" android:name="flutterEmbedding"
android:value="2" /> android:value="2" />
</application> </application>
</manifest> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
</manifest>

@ -14,12 +14,10 @@ object FirebaseCloudMessagingPluginRegistrant {
private fun alreadyRegisteredWith(registry: PluginRegistry?): Boolean { private fun alreadyRegisteredWith(registry: PluginRegistry?): Boolean {
val key: String? = FirebaseCloudMessagingPluginRegistrant::class.java.canonicalName val key: String? = FirebaseCloudMessagingPluginRegistrant::class.java.canonicalName
if (key?.let { registry?.hasPlugin(it) }!!) { if (registry?.hasPlugin(key)!!) {
return true return true
} }
if (registry != null) { registry.registrarFor(key)
registry.registrarFor(key)
}
return false return false
} }
} }

@ -1,71 +1,34 @@
package com.ejada.hmg package com.ejada.hmg
import android.app.PendingIntent import android.os.Bundle
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log import android.util.Log
import android.os.Build
import android.view.WindowManager import android.view.WindowManager
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.PenguinInPlatformBridge
import com.cloud.diplomaticquarterapp.whatsapp.AppSignatureRetriever
import com.ejada.hmg.utils.* import com.ejada.hmg.utils.*
import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugins.GeneratedPluginRegistrant
import com.cloud.diplomaticquarterapp.whatsapp.WhatsApp
import com.cloud.diplomaticquarterapp.whatsapp.WhatsAppOtpPlatformBridge
class MainActivity: FlutterFragmentActivity() { class MainActivity: FlutterFragmentActivity() {
@RequiresApi(Build.VERSION_CODES.O)
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine); GeneratedPluginRegistrant.registerWith(flutterEngine);
// Create Flutter Platform Bridge // Create Flutter Platform Bridge
this.window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON) this.window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
PlatformBridge(flutterEngine, this).create() PlatformBridge(flutterEngine, this).create()
OpenTokPlatformBridge(flutterEngine, this).create() // OpenTokPlatformBridge(flutterEngine, this).create()
PenguinInPlatformBridge(flutterEngine, this).create()
WhatsAppOtpPlatformBridge(flutterEngine, this).invoke()
AppSignatureRetriever().logSignatures(this)
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {x
// val mChannel = NotificationChannel("video_call_noti", "video call", NotificationManager.IMPORTANCE_HIGH)
// val soundUri = Uri.parse("android.resource://" + getApplicationContext()
// .getPackageName() + "/" + R.raw.alert)
// System.out.println("soundUri");
// System.out.println("soundUri: $soundUri");
// System.out.println("soundUri : ${soundUri.path}");
// val att = AudioAttributes.Builder()
// .setUsage(AudioAttributes.USAGE_NOTIFICATION)
// .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
// .build();
// mChannel.setSound(soundUri , att)
// mChannel.description = "Video Call Notifications"
// val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
// notificationManager.createNotificationChannel(mChannel)
// }
// val time = timeToMillis("04:00:00", "HH:mm:ss") val time = timeToMillis("04:00:00", "HH:mm:ss")
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
val granted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
val intent = Intent("PERMISSION_RESULT_ACTION").apply {
putExtra("PERMISSION_GRANTED", granted)
}
sendBroadcast(intent)
// Log the request code and permission results // val d1 = Logs.list(this)
Log.d("PermissionsResult", "Request Code: $requestCode") // val d2 = Logs.raw(this)
Log.d("PermissionsResult", "Permissions: ${permissions.joinToString()}") // val d3 = Logs.RegisterGeofence.list(this)
Log.d("PermissionsResult", "Grant Results: ${grantResults.joinToString()}") // val d4 = Logs.RegisterGeofence.raw(this)
// val d5 = Logs.GeofenceEvent.list(this)
// val d6 = Logs.GeofenceEvent.raw(this)
} }

@ -1,53 +0,0 @@
package com.cloud.diplomaticquarterapp
import com.ejada.hmg.MainActivity
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.penguin.PenguinView
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
class PenguinInPlatformBridge(
private var flutterEngine: FlutterEngine,
private var mainActivity: MainActivity
) {
private lateinit var channel: MethodChannel
companion object {
private const val CHANNEL = "launch_penguin_ui"
}
@RequiresApi(Build.VERSION_CODES.O)
fun create() {
// openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) {
"launchPenguin" -> {
print("the platform channel is being called")
val args = call.arguments as Map<String, Any>?
Log.d("TAG", "configureFlutterEngine: $args")
println("args")
args?.let {
PenguinView(
mainActivity,
100,
args,
flutterEngine.dartExecutor.binaryMessenger,
activity = mainActivity,
channel
)
}
}
else -> {
result.notImplemented()
}
}
}
}
}

@ -1,28 +0,0 @@
package com.cloud.diplomaticquarterapp.PermissionManager
import android.Manifest
import android.os.Build
object PermissionHelper {
fun getRequiredPermissions(): Array<String> {
val permissions = mutableListOf(
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
// Manifest.permission.ACTIVITY_RECOGNITION
)
// For Android 12 (API level 31) and above, add specific permissions
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // Android 12 (API 31) and above
permissions.add(Manifest.permission.BLUETOOTH_SCAN)
permissions.add(Manifest.permission.BLUETOOTH_CONNECT)
permissions.add(Manifest.permission.HIGH_SAMPLING_RATE_SENSORS)
}
return permissions.toTypedArray()
}
}

@ -1,50 +0,0 @@
package com.cloud.diplomaticquarterapp.PermissionManager
import android.app.Activity
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class PermissionManager(
private val context: Context,
val listener: PermissionListener,
private val requestCode: Int,
vararg permissions: String
) {
private val permissionsArray = permissions
interface PermissionListener {
fun onPermissionGranted()
fun onPermissionDenied()
}
fun arePermissionsGranted(): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permissionsArray.all {
ContextCompat.checkSelfPermission(context, it) == PackageManager.PERMISSION_GRANTED
}
} else {
true
}
}
fun requestPermissions(activity: Activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ActivityCompat.requestPermissions(activity, permissionsArray, requestCode)
}
}
fun handlePermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if (this.requestCode == requestCode) {
val allGranted = grantResults.all { it == PackageManager.PERMISSION_GRANTED }
if (allGranted) {
listener.onPermissionGranted()
} else {
listener.onPermissionDenied()
}
}
}
}

@ -1,15 +0,0 @@
package com.cloud.diplomaticquarterapp.PermissionManager
// PermissionResultReceiver.kt
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
class PermissionResultReceiver(
private val callback: (Boolean) -> Unit
) : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val granted = intent?.getBooleanExtra("PERMISSION_GRANTED", false) ?: false
callback(granted)
}
}

@ -30,12 +30,12 @@ enum class GeofenceTransition(val value: Int) {
fun fromInt(value: Int) = GeofenceTransition.values().first { it.value == value } fun fromInt(value: Int) = GeofenceTransition.values().first { it.value == value }
} }
fun named(): String { fun named():String{
if (value == 1) return "Enter" if (value == 1)return "Enter"
if (value == 2) return "Exit" if (value == 2)return "Exit"
if (value == 4) return "dWell" if (value == 4)return "dWell"
if (value == (ENTER.value or EXIT.value)) return "Enter or Exit" if (value == (ENTER.value or EXIT.value))return "Enter or Exit"
if (value == (DWELL.value or EXIT.value)) return "DWell or Exit" if (value == (DWELL.value or EXIT.value))return "DWell or Exit"
return "unknown" return "unknown"
} }
} }
@ -44,65 +44,63 @@ class HMG_Geofence {
// https://developer.android.com/training/location/geofencing#java // https://developer.android.com/training/location/geofencing#java
private lateinit var context: Context private lateinit var context: Context
private lateinit var preferences: SharedPreferences private lateinit var preferences:SharedPreferences
private val gson = Gson() private val gson = Gson()
private lateinit var geofencingClient: GeofencingClient private lateinit var geofencingClient:GeofencingClient
private val geofencePendingIntent: PendingIntent by lazy { private val geofencePendingIntent: PendingIntent by lazy {
val intent = Intent(context, GeofenceBroadcastReceiver::class.java) val intent = Intent(context, GeofenceBroadcastReceiver::class.java)
PendingIntent.getBroadcast( PendingIntent.getBroadcast(
context, context,
0, 0,
intent, intent,
PendingIntent.FLAG_IMMUTABLE PendingIntent.FLAG_UPDATE_CURRENT)
)
} }
companion object { companion object{
var instance: HMG_Geofence? = null var instance: HMG_Geofence? = null
fun shared(context: Context): HMG_Geofence { fun shared(context: Context) : HMG_Geofence {
if (instance == null) { if (instance == null) {
instance = HMG_Geofence() instance = HMG_Geofence()
instance?.context = context instance?.context = context
instance?.geofencingClient = LocationServices.getGeofencingClient(context) instance?.geofencingClient = LocationServices.getGeofencingClient(context)
instance?.preferences = instance?.preferences = context.getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE)
context.getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE)
} }
return instance!! return instance!!
} }
} }
private fun limitize(zones: List<GeoZoneModel>): List<GeoZoneModel> { fun limitize(zones: List<GeoZoneModel>):List<GeoZoneModel>{
var geoZones_ = zones var geoZones_ = zones
if (zones.size > 100) if(zones.size > 100)
geoZones_ = zones.subList(0, 99) geoZones_ = zones.subList(0, 99)
return geoZones_ return geoZones_
} }
fun register(completion: ((Boolean, java.lang.Exception?) -> Unit)) { fun register(completion:((Boolean, java.lang.Exception?)->Unit)){
unRegisterAll { status, exception -> unRegisterAll { status, exception ->
val geoZones = getGeoZonesFromPreference(context) val geoZones = getGeoZonesFromPreference(context)
doRegister(geoZones) { status_, error -> doRegister(geoZones){ status_, error ->
completion.let { it(status_, error) } completion.let { it(status_, error) }
} }
} }
} }
fun unRegisterAll(completion: (status: Boolean, exception: Exception?) -> Unit) { fun unRegisterAll(completion: (status: Boolean, exception: Exception?) -> Unit){
getActiveGeofences({ success -> getActiveGeofences({ success ->
removeActiveGeofences() removeActiveGeofences()
if (success.isNotEmpty()) if(success.isNotEmpty())
geofencingClient geofencingClient
.removeGeofences(success) .removeGeofences(success)
.addOnSuccessListener { .addOnSuccessListener {
completion(true, null) completion(true, null)
} }
.addOnFailureListener { .addOnFailureListener {
completion(false, it) completion(false, it)
saveLog(context, "error:REMOVE_GEOFENCES", it.localizedMessage) saveLog(context, "error:REMOVE_GEOFENCES", it.localizedMessage)
} }
else else
completion(true, null) completion(true, null)
@ -111,10 +109,7 @@ class HMG_Geofence {
}) })
} }
private fun doRegister( private fun doRegister(geoZones: List<GeoZoneModel>, completion:((Boolean, java.lang.Exception?)->Unit)? = null){
geoZones: List<GeoZoneModel>,
completion: ((Boolean, java.lang.Exception?) -> Unit)? = null
) {
if (geoZones.isEmpty()) if (geoZones.isEmpty())
return return
@ -122,9 +117,9 @@ class HMG_Geofence {
fun buildGeofencingRequest(geofences: List<Geofence>): GeofencingRequest { fun buildGeofencingRequest(geofences: List<Geofence>): GeofencingRequest {
return GeofencingRequest.Builder() return GeofencingRequest.Builder()
.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_DWELL) .setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_DWELL)
.addGeofences(geofences) .addGeofences(geofences)
.build() .build()
} }
getActiveGeofences({ active -> getActiveGeofences({ active ->
@ -140,41 +135,26 @@ class HMG_Geofence {
if (checkPermission() && geofences.isNotEmpty()) { if (checkPermission() && geofences.isNotEmpty()) {
geofencingClient geofencingClient
.addGeofences(buildGeofencingRequest(geofences), geofencePendingIntent) .addGeofences(buildGeofencingRequest(geofences), geofencePendingIntent)
.addOnSuccessListener { .addOnSuccessListener {
Logs.RegisterGeofence.save( Logs.RegisterGeofence.save(context,"SUCCESS", "Successfuly registered the geofences", Logs.STATUS.SUCCESS)
context, saveActiveGeofence(geofences.map { it.requestId }, listOf())
"SUCCESS", completion?.let { it(true,null) }
"Successfuly registered the geofences", }
Logs.STATUS.SUCCESS .addOnFailureListener { exc ->
) Logs.RegisterGeofence.save(context,"FAILED_TO_REGISTER", "Failed to register geofence",Logs.STATUS.ERROR)
saveActiveGeofence(geofences.map { it.requestId }, listOf()) completion?.let { it(false,exc) }
completion?.let { it(true, null) } }
}
.addOnFailureListener { exc ->
Logs.RegisterGeofence.save(
context,
"FAILED_TO_REGISTER",
"Failed to register geofence",
Logs.STATUS.ERROR
)
completion?.let { it(false, exc) }
}
// Schedule the job to register after specified duration (due to: events not calling after long period.. days or days [Needs to register fences again]) // Schedule the job to register after specified duration (due to: events not calling after long period.. days or days [Needs to register fences again])
HMGUtils.scheduleJob( HMGUtils.scheduleJob(context, ReregisterGeofenceJobService::class.java,ReregisterGeofenceJobService.JobID, ReregisterGeofenceJobService.TriggerIntervalDuration)
context,
ReregisterGeofenceJobService::class.java,
ReregisterGeofenceJobService.JobID,
ReregisterGeofenceJobService.TriggerIntervalDuration
)
} }
}, null) }, null)
} }
fun getGeoZonesFromPreference(context: Context): List<GeoZoneModel> { fun getGeoZonesFromPreference(context: Context):List<GeoZoneModel>{
val pref = context.getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE) val pref = context.getSharedPreferences(PREFS_STORAGE, Context.MODE_PRIVATE)
val json = pref.getString(PREF_KEY_HMG_ZONES, "[]") val json = pref.getString(PREF_KEY_HMG_ZONES, "[]")
@ -182,29 +162,26 @@ class HMG_Geofence {
return geoZones return geoZones
} }
fun saveActiveGeofence(success: List<String>, failed: List<String>) { fun saveActiveGeofence(success: List<String>, failed: List<String>){
val jsonSuccess = gson.toJson(success) val jsonSuccess = gson.toJson(success)
val jsonFailure = gson.toJson(failed) val jsonFailure = gson.toJson(failed)
preferences.edit().putString(PREF_KEY_SUCCESS, jsonSuccess).apply() preferences.edit().putString(PREF_KEY_SUCCESS, jsonSuccess).apply()
preferences.edit().putString(PREF_KEY_FAILED, jsonFailure).apply() preferences.edit().putString(PREF_KEY_FAILED, jsonFailure).apply()
} }
fun removeActiveGeofences() { fun removeActiveGeofences(){
preferences.edit().putString(PREF_KEY_SUCCESS, "[]").apply() preferences.edit().putString(PREF_KEY_SUCCESS, "[]").apply()
preferences.edit().putString(PREF_KEY_FAILED, "[]").apply() preferences.edit().putString(PREF_KEY_FAILED, "[]").apply()
} }
fun getActiveGeofences( fun getActiveGeofences(success: (success: List<String>) -> Unit, failure: ((failed: List<String>) -> Unit)?){
success: (success: List<String>) -> Unit, val type = object : TypeToken<List<String?>?>() {}.type
failure: ((failed: List<String>) -> Unit)?
) {
val type = object : TypeToken<List<String?>?>() {}.type
val jsonSuccess = preferences.getString(PREF_KEY_SUCCESS, "[]") val jsonSuccess = preferences.getString(PREF_KEY_SUCCESS, "[]")
val success = gson.fromJson<List<String>>(jsonSuccess, type) val success = gson.fromJson<List<String>>(jsonSuccess, type)
success(success) success(success)
if (failure != null) { if(failure != null){
val jsonFailure = preferences.getString(PREF_KEY_FAILED, "[]") val jsonFailure = preferences.getString(PREF_KEY_FAILED, "[]")
val failed = gson.fromJson<List<String>>(jsonFailure, type) val failed = gson.fromJson<List<String>>(jsonFailure, type)
failure(failed) failure(failed)
@ -212,74 +189,47 @@ class HMG_Geofence {
} }
private fun checkPermission(): Boolean { private fun checkPermission() : Boolean{
return ContextCompat.checkSelfPermission( return ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
context,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
} }
fun getPatientID(): Int? { fun getPatientID():Int?{
var profileJson = preferences.getString("flutter.imei-user-data", null) var profileJson = preferences.getString("flutter.imei-user-data", null)
if (profileJson == null) if (profileJson == null)
profileJson = preferences.getString("flutter.user-profile", null) profileJson = preferences.getString("flutter.user-profile", null)
val type = object : TypeToken<Map<String?, Any?>?>() {}.type val type = object : TypeToken<Map<String?, Any?>?>() {}.type
return gson.fromJson<Map<String?, Any?>?>(profileJson, type) return gson.fromJson<Map<String?, Any?>?>(profileJson, type)
?.get("PatientID") ?.get("PatientID")
.toString() .toString()
.toDoubleOrNull() .toDoubleOrNull()
?.toInt() ?.toInt()
} }
fun handleEvent( fun handleEvent(triggerGeofences: List<Geofence>, location: Location, transition: GeofenceTransition) {
triggerGeofences: List<Geofence>,
location: Location,
transition: GeofenceTransition
) {
getPatientID()?.let { patientId -> getPatientID()?.let { patientId ->
getActiveGeofences({ activeGeofences -> getActiveGeofences({ activeGeofences ->
triggerGeofences.forEach { geofence -> triggerGeofences.forEach { geofence ->
// Extract PointID from 'geofence.requestId' and find from active geofences // Extract PointID from 'geofence.requestId' and find from active geofences
val pointID = val pointID = activeGeofences.firstOrNull { it == geofence.requestId }?.split('_')?.first()
activeGeofences.firstOrNull { it == geofence.requestId }?.split('_')
?.first()
if (!pointID.isNullOrEmpty() && pointID.toIntOrNull() != null) { if (!pointID.isNullOrEmpty() && pointID.toIntOrNull() != null) {
val body = mutableMapOf<String, Any?>( val body = mutableMapOf<String, Any?>(
"PointsID" to pointID.toIntOrNull(), "PointsID" to pointID.toIntOrNull(),
"GeoType" to transition.value, "GeoType" to transition.value,
"PatientID" to patientId "PatientID" to patientId
) )
body.putAll(HMGUtils.defaultHTTPParams(context)) body.putAll(HMGUtils.defaultHTTPParams(context))
httpPost<Map<String, Any>>(API.LOG_GEOFENCE, body, { response -> httpPost<Map<String, Any>>(API.LOG_GEOFENCE, body, { response ->
saveLog( saveLog(context, "HMG_GEOFENCE_NOTIFY", "Success: Notified to server\uD83D\uDE0E.")
context, sendNotification(context, transition.named(), geofence.requestId, "Notified to server.😎")
"HMG_GEOFENCE_NOTIFY",
"Success: Notified to server\uD83D\uDE0E."
)
sendNotification(
context,
transition.named(),
geofence.requestId,
"Notified to server.😎"
)
}, { exception -> }, { exception ->
val errorMessage = "${transition.named()}, ${geofence.requestId}" val errorMessage = "${transition.named()}, ${geofence.requestId}"
saveLog( saveLog(context, "HMG_GEOFENCE_NOTIFY", "failed: $errorMessage | error: ${exception.localizedMessage}")
context, sendNotification(context, transition.named(), geofence.requestId, "Failed to notify server😔 -> ${exception.localizedMessage}")
"HMG_GEOFENCE_NOTIFY",
"failed: $errorMessage | error: ${exception.localizedMessage}"
)
sendNotification(
context,
transition.named(),
geofence.requestId,
"Failed to notify server😔 -> ${exception.localizedMessage}"
)
}) })
} }

@ -1,6 +1,7 @@
package com.ejada.hmg.geofence.intent_receivers package com.ejada.hmg.geofence.intent_receivers
import android.annotation.SuppressLint
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
@ -12,60 +13,37 @@ import com.google.android.gms.location.GeofenceStatusCodes
import com.google.android.gms.location.GeofencingEvent import com.google.android.gms.location.GeofencingEvent
class GeofenceBroadcastReceiver : BroadcastReceiver() { class GeofenceBroadcastReceiver : BroadcastReceiver() {
private val LOG_TAG = "GeofenceBroadcastReceiver" private val LOG_TAG = "GeofenceBroadcastReceiver"
override fun onReceive(context: Context, intent: Intent) {
@SuppressLint("LongLogTag")
override fun onReceive(context: Context, intent: Intent) { val geofencingEvent = GeofencingEvent.fromIntent(intent)
if (geofencingEvent.hasError()) {
val geofencingEvent = GeofencingEvent.fromIntent(intent) val errorMessage = GeofenceErrorMessages.getErrorString(context, geofencingEvent.errorCode)
if (geofencingEvent != null) { Log.e(LOG_TAG, errorMessage)
if (geofencingEvent.hasError()) {
val errorMessage = Logs.GeofenceEvent.save(context,LOG_TAG,"Error while triggering geofence event",Logs.STATUS.ERROR)
GeofenceErrorMessages.getErrorString(context, geofencingEvent.errorCode) doReRegisterIfRequired(context,geofencingEvent.errorCode)
Log.e(LOG_TAG, errorMessage)
return
Logs.GeofenceEvent.save(
context,
LOG_TAG,
"Error while triggering geofence event",
Logs.STATUS.ERROR
)
doReRegisterIfRequired(context, geofencingEvent.errorCode)
return
}
}
if (geofencingEvent != null) {
Logs.GeofenceEvent.save(
context,
LOG_TAG,
"Geofence event triggered: ${GeofenceTransition.fromInt(geofencingEvent.geofenceTransition).value} for ${geofencingEvent.triggeringGeofences?.map { it.requestId }}",
Logs.STATUS.SUCCESS
)
geofencingEvent.triggeringLocation?.let {
geofencingEvent.triggeringGeofences?.let { it1 ->
HMG_Geofence.shared(context).handleEvent(
it1,
it, GeofenceTransition.fromInt(geofencingEvent.geofenceTransition)
)
}
}
};
} }
fun doReRegisterIfRequired(context: Context, errorCode: Int) { Logs.GeofenceEvent.save(context,LOG_TAG,"Geofence event triggered: ${GeofenceTransition.fromInt(geofencingEvent.geofenceTransition).value} for ${geofencingEvent.triggeringGeofences.map {it.requestId}}",Logs.STATUS.SUCCESS)
val errorRequiredReregister = listOf( HMG_Geofence.shared(context).handleEvent(geofencingEvent.triggeringGeofences,geofencingEvent.triggeringLocation, GeofenceTransition.fromInt(geofencingEvent.geofenceTransition));
}
fun doReRegisterIfRequired(context: Context, errorCode: Int){
val errorRequiredReregister = listOf(
GeofenceStatusCodes.GEOFENCE_NOT_AVAILABLE, GeofenceStatusCodes.GEOFENCE_NOT_AVAILABLE,
GeofenceStatusCodes.GEOFENCE_TOO_MANY_GEOFENCES, GeofenceStatusCodes.GEOFENCE_TOO_MANY_GEOFENCES,
GeofenceStatusCodes.GEOFENCE_TOO_MANY_PENDING_INTENTS, GeofenceStatusCodes.GEOFENCE_TOO_MANY_PENDING_INTENTS,
GeofenceStatusCodes.GEOFENCE_REQUEST_TOO_FREQUENT GeofenceStatusCodes.GEOFENCE_REQUEST_TOO_FREQUENT
) )
if (errorRequiredReregister.contains(errorCode)) if(errorRequiredReregister.contains(errorCode))
HMG_Geofence.shared(context).register() { status, error -> HMG_Geofence.shared(context).register(){ status, error ->
} }
} }
} }

@ -59,25 +59,18 @@ class GeofenceTransitionsJobIntentService : JobIntentService() {
override fun onHandleWork(intent: Intent) { override fun onHandleWork(intent: Intent) {
val geofencingEvent = GeofencingEvent.fromIntent(intent) val geofencingEvent = GeofencingEvent.fromIntent(intent)
if (geofencingEvent != null) { if (geofencingEvent.hasError()) {
if (geofencingEvent.hasError()) { val errorMessage = GeofenceErrorMessages.getErrorString(context_!!, geofencingEvent.errorCode)
val errorMessage = GeofenceErrorMessages.getErrorString(context_!!, geofencingEvent.errorCode) Log.e(LOG_TAG, errorMessage)
Log.e(LOG_TAG, errorMessage)
saveLog(context_!!,LOG_TAG,errorMessage) saveLog(context_!!,LOG_TAG,errorMessage)
doReRegisterIfRequired(context_!!, geofencingEvent.errorCode) doReRegisterIfRequired(context_!!, geofencingEvent.errorCode)
return return
} }
}
if (geofencingEvent != null) { HMG_Geofence.shared(context_!!).handleEvent(geofencingEvent.triggeringGeofences,geofencingEvent.triggeringLocation, GeofenceTransition.fromInt(geofencingEvent.geofenceTransition));
geofencingEvent.triggeringGeofences?.let { geofencingEvent.triggeringLocation?.let { it1 ->
HMG_Geofence.shared(context_!!).handleEvent(it,
it1, GeofenceTransition.fromInt(geofencingEvent.geofenceTransition))
} }
};
} }

@ -1,29 +1,26 @@
package com.ejada.hmg.hmgwifi package com.ejada.hmg.hmgwifi
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.Intent import android.net.ConnectivityManager
import android.net.* import android.net.wifi.WifiConfiguration
import android.net.wifi.* import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.os.Build import android.os.Build
import android.os.PatternMatcher
import android.provider.Settings
import android.util.Log import android.util.Log
import androidx.annotation.RequiresApi import android.widget.Toast
import com.ejada.hmg.MainActivity import com.ejada.hmg.MainActivity
import com.ejada.hmg.utils.FlutterText
import com.ejada.hmg.utils.HMGUtils import com.ejada.hmg.utils.HMGUtils
class HMG_Guest(context: MainActivity) {
private var wifiManager: WifiManager? = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager?
private var connectivityManager: ConnectivityManager? = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
private var context = context
class HMG_Guest(private var context: MainActivity, ssid: String) {
private val TAG = "HMG_Guest" private val TAG = "HMG_Guest"
private val TEST = false private val TEST = false
private var SSID = ssid private var SSID = """"HMG-MobileApp""""
// private var SSID = "HMG-MOHEMM"
val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager?
private lateinit var completionListener: ((status: Boolean, message: String) -> Unit) private lateinit var completionListener: ((status: Boolean, message: String) -> Unit)
@ -31,189 +28,126 @@ class HMG_Guest(private var context: MainActivity, ssid: String) {
completionListener(status, message) completionListener(status, message)
} }
fun enableWifi(){
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q){
wifiManager?.setWifiEnabled(true)
HMGUtils.popFlutterText(context,"enablingWifi");
HMGUtils.timer(2000,false){
connectApiLessThen29()
}
}else {
val panelIntent = Intent(Settings.Panel.ACTION_WIFI)
context.startActivityForResult(panelIntent, 1)
}
}
/* /*
* Helpful: * Helpful:
* http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically
*/ */
fun connectToHMGGuestNetwork(completion: (status: Boolean, message: String) -> Unit) { fun connectToHMGGuestNetwork(completion: (status: Boolean, message: String) -> Unit) {
completionListener = completion
wifiManager?.let { wm -> wifiManager?.let { wm ->
if (!wm.isWifiEnabled){ completionListener = completion
enableWifi()
}else{
connectWifi()
}
}
}
private fun errorConnecting(){
completionOnUiThread(false, "errorConnectingHmgNetwork")
}
fun connectWifi(){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
connectApiGreaterThen28()
}else {
connectApiLessThen29()
}
}
// I }else{f CompileSDK is greater and equals to APILevel 29
@RequiresApi(Build.VERSION_CODES.Q)
private fun connectApiGreaterThen28(){
Log.e(TAG, "connection wifi with Android Q+")
val networkRequest: NetworkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //removeCapability added for hotspots without internet
.setNetworkSpecifier(
WifiNetworkSpecifier.Builder()
.setSsid(SSID)
.build()
).build() if (!wm.isWifiEnabled){
wm.isWifiEnabled = true
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager HMGUtils.popFlutterText(context,"enablingWifi");
val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
connectivityManager.bindProcessToNetwork(network)
HMGUtils.timer(2000,false){ HMGUtils.timer(2000,false){
completionListener(true, "Success") connect()
} }
Log.e(TAG, "onAvailable") }else{
} connect()
override fun onLosing(network: Network, maxMsToLive: Int) {
super.onLosing(network, maxMsToLive)
Log.e(TAG, "onLosing")
completionListener(false, "fail")
}
override fun onLost(network: Network) {
super.onLost(network)
Log.e(TAG, "onLosing")
Log.e(TAG, "losing active connection")
completionListener(false, "fail")
}
override fun onUnavailable() {
super.onUnavailable()
Log.e(TAG, "onUnavailable")
completionListener(false, "fail")
} }
} }
//timeout add because "No devices found" wasn't handled correct and doesn't throw Unavailable
connectivityManager.requestNetwork(networkRequest, networkCallback, 30000)
} }
private fun connect(){
val security = "OPEN"
val networkPass = ""
Log.d(TAG, "Connecting to SSID \"$SSID\" with password \"$networkPass\" and with security \"$security\" ...")
fun connectApiLessThen29(){ // You need to create WifiConfiguration instance like this:
val wifi = WifiConfiguration() val conf = WifiConfiguration()
wifi.SSID = """"$SSID"""" conf.SSID = SSID
wifi.status = WifiConfiguration.Status.ENABLED conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE)
wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) conf.networkId = ssidToNetworkId(SSID)
wifi.networkId = ssidToNetworkId(wifi.SSID) val wm = wifiManager!!
if (wifi.networkId == -1) {
wifiManager?.addNetwork(wifi) if (conf.networkId == -1) {
wm.addNetwork(conf)
} else { } else {
Log.v(TAG, "WiFi found - updating it.\n") Log.v(TAG, "WiFi found - updating it.\n")
wifiManager?.updateNetwork(wifi) wm.updateNetwork(conf)
} }
Log.v(TAG, "saving config.\n") conf.networkId = ssidToNetworkId(SSID)
wifiManager?.saveConfiguration() Log.d(TAG, "Network ID: ${conf.networkId}")
wifi.networkId = ssidToNetworkId(wifi.SSID)
Log.v(TAG, "wifi ID in device = " + wifi.networkId) val networkIdToConnect = conf.networkId
var supState: SupplicantState
val networkIdToConnect = wifi.networkId
if (networkIdToConnect >= 0) { if (networkIdToConnect >= 0) {
Log.v(TAG, "Start connecting...\n") Log.v(TAG, "Start connecting to $SSID Wifi...")
// We disable the network before connecting, because if this was the last connection before // We disable the network before connecting, because if this was the last connection before
// a disconnect(), this will not reconnect. // a disconnect(), this will not reconnect.
wifiManager?.disableNetwork(networkIdToConnect) wm.disableNetwork(networkIdToConnect)
wifiManager?.enableNetwork(networkIdToConnect, true) val result = wm.enableNetwork(networkIdToConnect, true)
if(result){
val wifiInfo: WifiInfo = wifiManager!!.connectionInfo HMGUtils.timer(8000,false){
if(wm.getConnectionInfo().getSSID() == SSID){
completionOnUiThread(true, "successConnectingHmgNetwork")
}else{
errorConnecting()
}
}
HMGUtils.timer(5000,false){ }else{
supState = wifiInfo.supplicantState errorConnecting()
Log.i(TAG, "Done connect to network : status = $supState")
val successStates = listOf(SupplicantState.COMPLETED, SupplicantState.ASSOCIATED)
if (successStates.contains(supState))
completionListener(true,"Connected to internet Wifi")
else
completionListener(false,"errorConnectingHmgNetwork")
} }
} else {
Log.v(TAG, "WifiWizard: cannot connect to network")
completionListener(false,"errorConnectingHmgNetwork") }else{
Log.v(TAG, "Cannot connect to $SSID network")
errorConnecting()
} }
}
// val wifi = WifiConfiguration() private fun errorConnecting(){
// wifi.SSID = SSID completionOnUiThread(false, "errorConnectingHmgNetwork")
// wifi.status = WifiConfiguration.Status.ENABLED }
// wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
// // If CompileSDK is greater and equals to APILevel 29
// wifi.networkId = ssidToNetworkId(SSID) private fun connectNewer(wm:WifiManager){
//
// // Set network to highest priority (deprecated in API >= 26) // Log.e(TAG, "connection wifi Q")
// if(Build.VERSION.SDK_INT < 26) {
// wifi.priority = getMaxWifiPriority(wifiManager!!) + 1;
// }
// //
// // After processing authentication types, add or update network // val wifiNetworkSpecifier: WifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
// if(wifi.networkId == -1) { // -1 means SSID configuration does not exist yet // .setSsid(ssid)
// .setWpa2Passphrase(password)
// .build()
// //
// val newNetId = wifiManager?.addNetwork(wifi)!! // val networkRequest: NetworkRequest = NetworkRequest.Builder()
// if( newNetId > -1 ){ // .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
// completionListener(true,"Success") // .setNetworkSpecifier(wifiNetworkSpecifier)
// } else { // .build()
// completionListener(false, "ERROR_ADDING_NETWORK" )
// }
// //
// } else { // var connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
// var networkCallback = object : ConnectivityManager.NetworkCallback() {
// override fun onAvailable(network: Network) {
// super.onAvailable(network)
// connectivityManager.bindProcessToNetwork(network)
// Log.e(TAG, "onAvailable")
// }
// //
// var updatedNetID = wifiManager?.updateNetwork(wifi) // override fun onLosing(network: Network, maxMsToLive: Int) {
// super.onLosing(network, maxMsToLive)
// Log.e(TAG, "onLosing")
// }
// //
// if(updatedNetID == -1) // override fun onLost(network: Network) {
// updatedNetID = wifiManager?.addNetwork(wifi) // super.onLost(network)
// Log.e(TAG, "onLosing")
// Log.e(TAG, "losing active connection")
// }
// //
// if(updatedNetID > -1) { // override fun onUnavailable() {
// callbackContext.success( updatedNetID ) // super.onUnavailable()
// } else { // Log.e(TAG, "onUnavailable")
// callbackContext.error("ERROR_UPDATING_NETWORK") // }
// } // }
// // connectivityManager.requestNetwork(networkRequest, networkCallback)
// }
//
// // WifiManager configurations are presistent for API 26+
// if(Build.VERSION.SDK_INT < 26) {
// wifiManager?.saveConfiguration(); // Call saveConfiguration for older < 26 API
// }
} }
@ -222,7 +156,6 @@ class HMG_Guest(private var context: MainActivity, ssid: String) {
* networks, and returns the networkId for the network if the SSID matches. If not, * networks, and returns the networkId for the network if the SSID matches. If not,
* it returns -1. * it returns -1.
*/ */
@SuppressLint("MissingPermission")
private fun ssidToNetworkId(ssid: String): Int { private fun ssidToNetworkId(ssid: String): Int {
val currentNetworks = wifiManager!!.configuredNetworks val currentNetworks = wifiManager!!.configuredNetworks
var networkId = -1 var networkId = -1
@ -236,22 +169,4 @@ class HMG_Guest(private var context: MainActivity, ssid: String) {
} }
return networkId return networkId
} }
}
companion object{
/**
* Figure out what the highest priority network in the network list is and return that priority
*/
@RequiresApi(Build.VERSION_CODES.S)
fun getMaxWifiPriority(wifiManager:WifiManager) : Int {
val configurations = wifiManager.callerConfiguredNetworks
var maxPriority = 0
configurations.forEach {
if (it.priority > maxPriority) {
maxPriority = it.priority;
}
}
return maxPriority;
}
}
}

@ -3,6 +3,7 @@ package com.ejada.hmg.hmgwifi
import android.annotation.SuppressLint import android.annotation.SuppressLint
import com.ejada.hmg.utils.API import com.ejada.hmg.utils.API
import com.ejada.hmg.MainActivity import com.ejada.hmg.MainActivity
import com.ejada.hmg.utils.FlutterText
import com.github.kittinunf.fuel.core.extensions.jsonBody import com.github.kittinunf.fuel.core.extensions.jsonBody
import com.github.kittinunf.fuel.httpGet import com.github.kittinunf.fuel.httpGet
import com.github.kittinunf.fuel.httpPost import com.github.kittinunf.fuel.httpPost
@ -13,18 +14,21 @@ import java.util.*
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
class HMG_Internet(flutterMainActivity: MainActivity) { class HMG_Internet(flutterMainActivity: MainActivity) {
private val TAG = "HMG_Wifi" private val TAG = "HMG_Wifi"
private val TEST = true private val TEST = false
private var context = flutterMainActivity; private var context = flutterMainActivity;
private lateinit var completionListener: ((status: Boolean, message: String) -> Unit) private lateinit var completionListener: ((status: Boolean, message: String) -> Unit)
private var SSID = "GUEST-POC" private var SSID = "GUEST-POC"
private var USER_NAME = ""
private var PASSWORD = ""
fun completionOnUiThread(status: Boolean, message: String){ fun completionOnUiThread(status: Boolean, message: String){
completionListener(status, message) completionListener(status, message)
// context.runOnUiThread { // context.runOnUiThread {
// .with(message){localized -> //
// FlutterText.with(message){localized ->
// completionListener(status, localized) // completionListener(status, localized)
// } // }
// } // }
@ -34,10 +38,12 @@ class HMG_Internet(flutterMainActivity: MainActivity) {
* Helpful: * Helpful:
* http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically
*/ */
fun connectToHMGGuestNetwork(username: String, password: String, completion: (status: Boolean, message: String) -> Unit): HMG_Internet { fun connectToHMGGuestNetwork(patientId: String, completion: (status: Boolean, message: String) -> Unit): HMG_Internet {
completionListener = completion completionListener = completion
WpaEnterprise(context,SSID).connect(username,username) { status, message -> getWifiCredentials(patientId) {
completionOnUiThread(status,message) WPA(context,SSID).connect(USER_NAME,PASSWORD) { status, message ->
completionOnUiThread(status,message)
}
} }
return this return this
} }
@ -60,28 +66,16 @@ class HMG_Internet(flutterMainActivity: MainActivity) {
} }
} }
private fun getWifiCredentials(patientId:String, success: ((String?,String?) -> Unit)){ private fun getWifiCredentials(patientId:String, success: (() -> Unit)){
if (TEST){ if (TEST){
SSID = "GUEST-POC" SSID = "GUEST-POC"
success("2300", "0000") USER_NAME = "0696"
PASSWORD = "0000"
success()
return return
} }
val jsonBody = """{ val jsonBody = """{"PatientID":$patientId}"""
"PatientID":$patientId
"VersionID": 8.8,
"Channel": 3,
"LanguageID": 2,
"IPAdress": "10.20.10.20",
"generalid": "Cs2020@2016$2958",
"PatientOutSA": 0,
"SessionID": "@admin",
"isDentalAllowedBackend": false,
"DeviceTypeID": 2,
"TokenID": "@admin",
"PatientTypeID": 1,
"PatientType": 1
}""".trimMargin()
API.WIFI_CREDENTIALS. API.WIFI_CREDENTIALS.
httpPost() httpPost()
.jsonBody(jsonBody, Charsets.UTF_8) .jsonBody(jsonBody, Charsets.UTF_8)
@ -98,13 +92,9 @@ class HMG_Internet(flutterMainActivity: MainActivity) {
jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array -> jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array ->
array.getJSONObject(0).let { object_ -> array.getJSONObject(0).let { object_ ->
if (object_.has("UserName") && object_.has("UserName")){ if (object_.has("UserName") && object_.has("UserName")){
try { USER_NAME = object_.getString("UserName")
val userName = object_.getString("UserName") PASSWORD = object_.getString("Password")
val password = object_.getString("Password") success()
success(userName, password)
}catch (e:Exception){
success(null, null)
}
}else{ }else{
completionOnUiThread(false, "somethingWentWrong") completionOnUiThread(false, "somethingWentWrong")
} }

@ -1,166 +0,0 @@
package com.ejada.hmg.hmgwifi
import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.net.wifi.*
import android.net.wifi.SupplicantState.ASSOCIATED
import android.net.wifi.SupplicantState.COMPLETED
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import com.ejada.hmg.MainActivity
import com.ejada.hmg.utils.HMGUtils
import java.security.cert.X509Certificate
class WpaEnterprise(private val mainActivity: MainActivity, private var SSID: String) {
private var TAG = "WpaEnterprise"
private lateinit var identity:String
private lateinit var password:String
private lateinit var completion:((status: Boolean, message: String) -> Unit)
fun connect(identity:String, password:String, completion: (status: Boolean, message: String) -> Unit) {
this.password = password
this.identity = identity
this.completion = completion
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
apiGreaterThen28()
}else if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q){
apiLessThen29()
}
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
fun apiLessThen29(){
val wifiManager = mainActivity.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
val wifi = WifiConfiguration()
wifi.SSID = """"$SSID""""
wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP)
wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X)
wifi.enterpriseConfig = enterpriseConfig()
wifi.networkId = ssidToNetworkId(wifi.SSID, wifiManager)
if (wifi.networkId == -1) {
wifiManager.addNetwork(wifi)
} else {
Log.v(TAG, "WiFi found - updating it.\n")
wifiManager.updateNetwork(wifi)
}
Log.v(TAG, "saving config.\n")
wifiManager.saveConfiguration()
wifi.networkId = ssidToNetworkId(wifi.SSID, wifiManager)
Log.v(TAG, "wifi ID in device = " + wifi.networkId)
var supState: SupplicantState
val networkIdToConnect = wifi.networkId
if (networkIdToConnect >= 0) {
Log.v(TAG, "Start connecting...\n")
// We disable the network before connecting, because if this was the last connection before
// a disconnect(), this will not reconnect.
wifiManager.disableNetwork(networkIdToConnect)
wifiManager.enableNetwork(networkIdToConnect, true)
val wifiInfo: WifiInfo = wifiManager.connectionInfo
HMGUtils.timer(5000,false){
supState = wifiInfo.supplicantState
Log.i(TAG, "Done connect to network : status = $supState")
val successStates = listOf(COMPLETED, ASSOCIATED)
if (successStates.contains(supState))
completion(true,"Connected to internet Wifi")
else
completion(false,"errorConnectingHmgNetwork")
}
} else {
Log.v(TAG, "WifiWizard: cannot connect to network")
completion(false,"errorConnectingHmgNetwork")
}
}
/**
* This method takes a given String, searches the current list of configured WiFi
* networks, and returns the networkId for the network if the SSID matches. If not,
* it returns -1.
*/
@SuppressLint("MissingPermission")
private fun ssidToNetworkId(ssid: String, wifiManager: WifiManager): Int {
val currentNetworks = wifiManager.configuredNetworks
var networkId = -1
// For each network in the list, compare the SSID with the given one
for (test in currentNetworks) {
if (test.SSID == ssid) {
networkId = test.networkId
break
}
}
return networkId
}
@RequiresApi(Build.VERSION_CODES.Q)
fun apiGreaterThen28(){
val connectivityManager = mainActivity.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
Log.e(TAG, "connection wifi with Android Q+")
val wifiNetworkSpecifier: WifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
.setSsid(SSID)
.setWpa2EnterpriseConfig(enterpriseConfig())
.build()
val networkRequest: NetworkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(wifiNetworkSpecifier)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) //removeCapability added for hotspots without internet
.build()
val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
connectivityManager.bindProcessToNetwork(network)
completion(true, "200")
Log.e(TAG, "onAvailable")
}
override fun onLosing(network: Network, maxMsToLive: Int) {
super.onLosing(network, maxMsToLive)
Log.e(TAG, "onLosing")
}
override fun onLost(network: Network) {
super.onLost(network)
Log.e(TAG, "onLosing")
Log.e(TAG, "losing active connection")
}
override fun onUnavailable() {
super.onUnavailable()
completion(false, "401")
Log.e(TAG, "onUnavailable")
}
}
//timeout add because "No devices found" wasn't handled correct and doesn't throw Unavailable
connectivityManager.requestNetwork(networkRequest, networkCallback, 30000)
}
fun enterpriseConfig() : WifiEnterpriseConfig{
// Initialize the WifiConfiguration object
val enterpriseConfig = WifiEnterpriseConfig()
enterpriseConfig.eapMethod = WifiEnterpriseConfig.Eap.PEAP
enterpriseConfig.identity = identity
enterpriseConfig.password = password
enterpriseConfig.phase2Method = WifiEnterpriseConfig.Phase2.NONE
// enterpriseConfig.caCertificates = WifiEnterpriseConfig.Phase2.
return enterpriseConfig;
}
}

@ -1,58 +1,58 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.util.AttributeSet //import android.util.AttributeSet
import android.view.LayoutInflater //import android.view.LayoutInflater
import android.view.View //import android.view.View
import android.widget.FrameLayout //import android.widget.FrameLayout
import android.widget.LinearLayout //import android.widget.LinearLayout
import com.ejada.hmg.R //import com.ejada.hmg.R
import io.flutter.plugin.common.StandardMessageCodec //import io.flutter.plugin.common.StandardMessageCodec
import io.flutter.plugin.platform.PlatformView //import io.flutter.plugin.platform.PlatformView
import io.flutter.plugin.platform.PlatformViewFactory //import io.flutter.plugin.platform.PlatformViewFactory
//
class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) { //class LocalVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
//
companion object { // companion object {
private lateinit var view: LocalVideoPlatformView // private lateinit var view: LocalVideoPlatformView
//
fun getViewInstance(context: Context): LocalVideoPlatformView { // fun getViewInstance(context: Context): LocalVideoPlatformView {
if(!this::view.isInitialized) { // if(!this::view.isInitialized) {
view = LocalVideoPlatformView(context) // view = LocalVideoPlatformView(context)
} // }
//
return view // return view
} // }
} // }
//
override fun create(context: Context, viewId: Int, args: Any?): PlatformView { // override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
return getViewInstance(context) // return getViewInstance(context)
} // }
} //}
//
class LocalVideoPlatformView(context: Context) : PlatformView { //class LocalVideoPlatformView(context: Context) : PlatformView {
private val videoContainer: LocalVideoContainer = LocalVideoContainer(context) // private val videoContainer: LocalVideoContainer = LocalVideoContainer(context)
//
val container get() = videoContainer.publisherContainer // val container get() = videoContainer.publisherContainer
//
override fun getView(): View { // override fun getView(): View {
return videoContainer // return videoContainer
} // }
//
override fun dispose() {} // override fun dispose() {}
} //}
//
class LocalVideoContainer @JvmOverloads constructor( //class LocalVideoContainer @JvmOverloads constructor(
context: Context, // context: Context,
attrs: AttributeSet? = null, // attrs: AttributeSet? = null,
defStyle: Int = 0, // defStyle: Int = 0,
defStyleRes: Int = 0 // defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes) { //) : LinearLayout(context, attrs, defStyle, defStyleRes) {
//
var publisherContainer: FrameLayout private set // var publisherContainer: FrameLayout private set
//
init { // init {
val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true) // val view = LayoutInflater.from(context).inflate(R.layout.local_video, this, true)
publisherContainer = view.findViewById(R.id.publisher_container) // publisherContainer = view.findViewById(R.id.publisher_container)
} // }
} //}

@ -1,181 +1,170 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.os.Handler //import android.os.Handler
import android.os.Looper //import android.os.Looper
import android.util.Log //import android.util.Log
import android.view.ViewGroup //import android.view.ViewGroup
import com.facebook.stetho.urlconnection.StethoURLConnectionManager //import com.facebook.stetho.urlconnection.StethoURLConnectionManager
import com.opentok.android.* //import com.opentok.android.*
import io.flutter.embedding.engine.FlutterEngine //import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister //import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister
import io.flutter.plugin.common.MethodCall //import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel //import io.flutter.plugin.common.MethodChannel
//
//
enum class OpenTokSDKState { //enum class OpenTokSDKState {
LOGGED_OUT, // LOGGED_OUT,
LOGGED_IN, // LOGGED_IN,
WAIT, // WAIT,
ERROR // ERROR
} //}
//
class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){ //class OpenTok(private var context: Context, private var flutterEngine: FlutterEngine){
private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView // private lateinit var remoteVideoPlatformView: RemoteVideoPlatformView
private lateinit var localVideoPlatformView: LocalVideoPlatformView // private lateinit var localVideoPlatformView: LocalVideoPlatformView
//
init { // init {
remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context) // remoteVideoPlatformView = RemoteVideoFactory.getViewInstance(context)
flutterEngine // flutterEngine
.platformViewsController // .platformViewsController
.registry // .registry
.registerViewFactory("remote-video-container", RemoteVideoFactory()) // .registerViewFactory("remote-video-container", RemoteVideoFactory())
//
localVideoPlatformView = LocalVideoFactory.getViewInstance(context) // localVideoPlatformView = LocalVideoFactory.getViewInstance(context)
flutterEngine // flutterEngine
.platformViewsController // .platformViewsController
.registry // .registry
.registerViewFactory("local-video-container", LocalVideoFactory()) // .registerViewFactory("local-video-container", LocalVideoFactory())
} // }
//
private var session: Session? = null // private var session: Session? = null
private var publisher: Publisher? = null // private var publisher: Publisher? = null
private var subscriber: Subscriber? = null // private var subscriber: Subscriber? = null
//
//
//
private val sessionListener: Session.SessionListener = object: Session.SessionListener { // private val sessionListener: Session.SessionListener = object: Session.SessionListener {
override fun onConnected(session: Session) { // override fun onConnected(session: Session) {
// Connected to session // // Connected to session
Log.d("MainActivity", "Connected to session ${session.sessionId}") // Log.d("MainActivity", "Connected to session ${session.sessionId}")
//
publisher = Publisher.Builder(context).build().apply { // publisher = Publisher.Builder(context).build().apply {
setPublisherListener(publisherListener) // setPublisherListener(publisherListener)
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL) // renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
//
view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) // view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
localVideoPlatformView.container.addView(view) // localVideoPlatformView.container.addView(view)
} // }
//
notifyFlutter(OpenTokSDKState.LOGGED_IN) // notifyFlutter(OpenTokSDKState.LOGGED_IN)
session.publish(publisher) // session.publish(publisher)
} // }
//
override fun onDisconnected(session: Session) { // override fun onDisconnected(session: Session) {
notifyFlutter(OpenTokSDKState.LOGGED_OUT) // notifyFlutter(OpenTokSDKState.LOGGED_OUT)
} // }
//
override fun onStreamReceived(session: Session, stream: Stream) { // override fun onStreamReceived(session: Session, stream: Stream) {
Log.d( // Log.d(
"MainActivity", // "MainActivity",
"onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId // "onStreamReceived: New Stream Received " + stream.streamId + " in session: " + session.sessionId
) // )
if (subscriber == null) { // if (subscriber == null) {
subscriber = Subscriber.Builder(context, stream).build().apply { // subscriber = Subscriber.Builder(context, stream).build().apply {
renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL) // renderer?.setStyle(BaseVideoRenderer.STYLE_VIDEO_SCALE, BaseVideoRenderer.STYLE_VIDEO_FILL)
setSubscriberListener(subscriberListener) // setSubscriberListener(subscriberListener)
session.subscribe(this) // session.subscribe(this)
//
remoteVideoPlatformView.container.addView(view) // remoteVideoPlatformView.container.addView(view)
} // }
} // }
} // }
//
override fun onStreamDropped(session: Session, stream: Stream) { // override fun onStreamDropped(session: Session, stream: Stream) {
Log.d( // Log.d(
"MainActivity", // "MainActivity",
"onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId // "onStreamDropped: Stream Dropped: " + stream.streamId + " in session: " + session.sessionId
) // )
//
if (subscriber != null) { // if (subscriber != null) {
subscriber = null // subscriber = null
//
remoteVideoPlatformView.container.removeAllViews() // remoteVideoPlatformView.container.removeAllViews()
} // }
} // }
//
override fun onError(session: Session, opentokError: OpentokError) { // override fun onError(session: Session, opentokError: OpentokError) {
Log.d("MainActivity", "Session error: " + opentokError.message) // Log.d("MainActivity", "Session error: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener { // private val publisherListener: PublisherKit.PublisherListener = object : PublisherKit.PublisherListener {
override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) { // override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId) // Log.d("MainActivity", "onStreamCreated: Publisher Stream Created. Own stream " + stream.streamId)
} // }
//
override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) { // override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId) // Log.d("MainActivity", "onStreamDestroyed: Publisher Stream Destroyed. Own stream " + stream.streamId)
} // }
//
override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) { // override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
Log.d("MainActivity", "PublisherKit onError: " + opentokError.message) // Log.d("MainActivity", "PublisherKit onError: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener { // var subscriberListener: SubscriberKit.SubscriberListener = object : SubscriberKit.SubscriberListener {
override fun onConnected(subscriberKit: SubscriberKit) { // override fun onConnected(subscriberKit: SubscriberKit) {
Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId) // Log.d("MainActivity", "onConnected: Subscriber connected. Stream: " + subscriberKit.stream.streamId)
} // }
//
override fun onDisconnected(subscriberKit: SubscriberKit) { // override fun onDisconnected(subscriberKit: SubscriberKit) {
Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId) // Log.d("MainActivity", "onDisconnected: Subscriber disconnected. Stream: " + subscriberKit.stream.streamId)
notifyFlutter(OpenTokSDKState.LOGGED_OUT) // notifyFlutter(OpenTokSDKState.LOGGED_OUT)
} // }
//
override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) { // override fun onError(subscriberKit: SubscriberKit, opentokError: OpentokError) {
Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message) // Log.d("MainActivity", "SubscriberKit onError: " + opentokError.message)
notifyFlutter(OpenTokSDKState.ERROR) // notifyFlutter(OpenTokSDKState.ERROR)
} // }
} // }
//
fun initSession(call: MethodCall, result: MethodChannel.Result) { // fun initSession(call: MethodCall, result: MethodChannel.Result) {
//
val apiKey = requireNotNull(call.argument<String>("apiKey")) // val apiKey = requireNotNull(call.argument<String>("apiKey"))
val sessionId = requireNotNull(call.argument<String>("sessionId")) // val sessionId = requireNotNull(call.argument<String>("sessionId"))
val token = requireNotNull(call.argument<String>("token")) // val token = requireNotNull(call.argument<String>("token"))
//
notifyFlutter(OpenTokSDKState.WAIT) // notifyFlutter(OpenTokSDKState.WAIT)
session = Session.Builder(context, apiKey, sessionId).build() // session = Session.Builder(context, apiKey, sessionId).build()
session?.setSessionListener(sessionListener) // session?.setSessionListener(sessionListener)
session?.connect(token) // session?.connect(token)
result.success("") // result.success("")
} // }
//
fun swapCamera(call: MethodCall, result: MethodChannel.Result) { // fun swapCamera(call: MethodCall, result: MethodChannel.Result) {
publisher?.cycleCamera() // publisher?.cycleCamera()
result.success(true) // result.success("")
} // }
//
fun toggleAudio(call: MethodCall, result: MethodChannel.Result) { // fun toggleAudio(call: MethodCall, result: MethodChannel.Result) {
if (publisher != null) { // val publishAudio = requireNotNull(call.argument<Boolean>("publishAudio"))
publisher?.publishAudio = !(publisher!!.publishAudio) // publisher?.publishAudio = publishAudio
result.success(true) // result.success("")
}else{ // }
result.success(false) //
} // fun toggleVideo(call: MethodCall, result: MethodChannel.Result) {
} // val publishVideo = requireNotNull(call.argument<Boolean>("publishVideo"))
// publisher?.publishVideo = publishVideo
fun toggleVideo(call: MethodCall, result: MethodChannel.Result) { // result.success("")
if (publisher != null) { // }
publisher?.publishVideo = !(publisher!!.publishVideo) //
result.success(true) // private fun notifyFlutter(state: OpenTokSDKState) {
}else{ // Handler(Looper.getMainLooper()).post {
result.success(false) // MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge")
} // .invokeMethod("updateState", state.toString())
} // }
// }
fun hangupCall(call: MethodCall, result: MethodChannel.Result) { //}
session?.disconnect()
result.success(true)
}
private fun notifyFlutter(state: OpenTokSDKState) {
Handler(Looper.getMainLooper()).post {
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "OpenTok-Platform-Bridge")
.invokeMethod("updateState", state.toString())
}
}
}

@ -1,58 +1,58 @@
package com.ejada.hmg.opentok //package com.ejada.hmg.opentok
//
import android.content.Context //import android.content.Context
import android.util.AttributeSet //import android.util.AttributeSet
import android.view.LayoutInflater //import android.view.LayoutInflater
import android.view.View //import android.view.View
import android.widget.FrameLayout //import android.widget.FrameLayout
import android.widget.LinearLayout //import android.widget.LinearLayout
import com.ejada.hmg.R //import com.ejada.hmg.R
import io.flutter.plugin.common.StandardMessageCodec //import io.flutter.plugin.common.StandardMessageCodec
import io.flutter.plugin.platform.PlatformView //import io.flutter.plugin.platform.PlatformView
import io.flutter.plugin.platform.PlatformViewFactory //import io.flutter.plugin.platform.PlatformViewFactory
//
class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) { //class RemoteVideoFactory : PlatformViewFactory(StandardMessageCodec.INSTANCE) {
//
companion object { // companion object {
private lateinit var view: RemoteVideoPlatformView // private lateinit var view: RemoteVideoPlatformView
//
fun getViewInstance(context: Context): RemoteVideoPlatformView { // fun getViewInstance(context: Context): RemoteVideoPlatformView {
if(!this::view.isInitialized) { // if(!this::view.isInitialized) {
view = RemoteVideoPlatformView(context) // view = RemoteVideoPlatformView(context)
} // }
//
return view // return view
} // }
} // }
//
override fun create(context: Context, viewId: Int, args: Any?): PlatformView { // override fun create(context: Context, viewId: Int, args: Any?): PlatformView {
return getViewInstance(context) // return getViewInstance(context)
} // }
} //}
//
class RemoteVideoPlatformView(context: Context) : PlatformView { //class RemoteVideoPlatformView(context: Context) : PlatformView {
private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context) // private val videoContainer: RemoteVideoContainer = RemoteVideoContainer(context)
//
val container get() = videoContainer.subscriberContainer // val container get() = videoContainer.subscriberContainer
//
override fun getView(): View { // override fun getView(): View {
return videoContainer // return videoContainer
} // }
//
override fun dispose() {} // override fun dispose() {}
} //}
//
class RemoteVideoContainer @JvmOverloads constructor( //class RemoteVideoContainer @JvmOverloads constructor(
context: Context, // context: Context,
attrs: AttributeSet? = null, // attrs: AttributeSet? = null,
defStyle: Int = 0, // defStyle: Int = 0,
defStyleRes: Int = 0 // defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyle, defStyleRes) { //) : LinearLayout(context, attrs, defStyle, defStyleRes) {
//
var subscriberContainer: FrameLayout private set // var subscriberContainer: FrameLayout private set
//
init { // init {
val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true) // val view = LayoutInflater.from(context).inflate(R.layout.remote_video, this, true)
subscriberContainer = view.findViewById(R.id.subscriber_container) // subscriberContainer = view.findViewById(R.id.subscriber_container)
} // }
} //}

@ -1,13 +0,0 @@
package com.cloud.diplomaticquarterapp.penguin
enum class PenguinMethod {
// initializePenguin("initializePenguin"),
// configurePenguin("configurePenguin"),
// showPenguinUI("showPenguinUI"),
// onPenNavUIDismiss("onPenNavUIDismiss"),
// onReportIssue("onReportIssue"),
// onPenNavSuccess("onPenNavSuccess"),
onPenNavInitializationError // onLocationOffCampus("onLocationOffCampus"),
// navigateToPOI("navigateToPOI"),
// openSharedLocation("openSharedLocation");
}

@ -1,97 +0,0 @@
package com.cloud.diplomaticquarterapp.penguin
import android.content.Context
import com.google.gson.Gson
import com.peng.pennavmap.PlugAndPlaySDK
import com.peng.pennavmap.connections.ApiController
import com.peng.pennavmap.interfaces.RefIdDelegate
import com.peng.pennavmap.models.TokenModel
import com.peng.pennavmap.models.postmodels.PostToken
import com.peng.pennavmap.utils.AppSharedData
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import android.util.Log
class PenguinNavigator() {
fun navigateTo(mContext: Context, refID: String, delegate: RefIdDelegate,clientID : String,clientKey : String ) {
val postToken = PostToken(clientID, clientKey)
getToken(mContext, postToken, object : RefIdDelegate {
override fun onRefByIDSuccess(PoiId: String?) {
Log.e("navigateTo", "PoiId is+++++++ $PoiId")
PlugAndPlaySDK.navigateTo(mContext, refID, object : RefIdDelegate {
override fun onRefByIDSuccess(PoiId: String?) {
Log.e("navigateTo", "PoiId 2is+++++++ $PoiId")
delegate.onRefByIDSuccess(refID)
}
override fun onGetByRefIDError(error: String?) {
delegate.onRefByIDSuccess(error)
}
})
}
override fun onGetByRefIDError(error: String?) {
delegate.onRefByIDSuccess(error)
}
})
}
fun getToken(mContext: Context, postToken: PostToken?, apiTokenCallBack: RefIdDelegate) {
try {
// Create the API call
val purposesCall: Call<ResponseBody> = ApiController.getInstance(mContext)
.apiMethods
.getToken(postToken)
// Enqueue the call for asynchronous execution
purposesCall.enqueue(object : Callback<ResponseBody?> {
override fun onResponse(
call: Call<ResponseBody?>,
response: Response<ResponseBody?>
) {
if (response.isSuccessful() && response.body() != null) {
try {
response.body()?.use { responseBody ->
val responseBodyString: String = responseBody.string() // Use `string()` to get the actual response content
if (responseBodyString.isNotEmpty()) {
val tokenModel = Gson().fromJson(responseBodyString, TokenModel::class.java)
if (tokenModel != null && tokenModel.token != null) {
AppSharedData.apiToken = tokenModel.token
apiTokenCallBack.onRefByIDSuccess(tokenModel.token)
} else {
apiTokenCallBack.onGetByRefIDError("Failed to parse token model")
}
} else {
apiTokenCallBack.onGetByRefIDError("Response body is empty")
}
}
} catch (e: Exception) {
apiTokenCallBack.onGetByRefIDError("An error occurred: ${e.message}")
}
} else {
apiTokenCallBack.onGetByRefIDError("Unsuccessful response: " + response.code())
}
}
override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
apiTokenCallBack.onGetByRefIDError(t.message)
}
})
} catch (error: Exception) {
apiTokenCallBack.onGetByRefIDError("Exception during API call: $error")
}
}
}

@ -1,321 +0,0 @@
package com.cloud.diplomaticquarterapp.penguin
import android.app.Activity
import android.content.Context
import android.content.Context.RECEIVER_EXPORTED
import android.content.IntentFilter
import android.graphics.Color
import android.os.Build
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.Toast
import androidx.annotation.RequiresApi
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionHelper
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionManager
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionResultReceiver
import com.ejada.hmg.MainActivity
import com.peng.pennavmap.PlugAndPlayConfiguration
import com.peng.pennavmap.PlugAndPlaySDK
import com.peng.pennavmap.enums.InitializationErrorType
import com.peng.pennavmap.interfaces.PenNavUIDelegate
import com.peng.pennavmap.utils.Languages
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.platform.PlatformView
import com.cloud.diplomaticquarterapp.penguin.PenguinNavigator
import com.peng.pennavmap.interfaces.PIEventsDelegate
import com.peng.pennavmap.interfaces.PILocationDelegate
import com.peng.pennavmap.interfaces.RefIdDelegate
import com.peng.pennavmap.models.PIReportIssue
/**
* Custom PlatformView for displaying Penguin UI components within a Flutter app.
* Implements `PlatformView` for rendering the view, `MethodChannel.MethodCallHandler` for handling method calls,
* and `PenNavUIDelegate` for handling SDK events.
*/
@RequiresApi(Build.VERSION_CODES.O)
internal class PenguinView(
context: Context,
id: Int,
val creationParams: Map<String, Any>,
messenger: BinaryMessenger,
activity: MainActivity,
val channel: MethodChannel
) : PlatformView, MethodChannel.MethodCallHandler, PenNavUIDelegate {
// The layout for displaying the Penguin UI
private val mapLayout: RelativeLayout = RelativeLayout(context)
private val _context: Context = context
private val permissionResultReceiver: PermissionResultReceiver
private val permissionIntentFilter = IntentFilter("PERMISSION_RESULT_ACTION")
private companion object {
const val PERMISSIONS_REQUEST_CODE = 1
}
private lateinit var permissionManager: PermissionManager
// Reference to the main activity
private var _activity: Activity = activity
private lateinit var mContext: Context
lateinit var navigator: PenguinNavigator
init {
// Set layout parameters for the mapLayout
mapLayout.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
)
mContext = context
permissionResultReceiver = PermissionResultReceiver { granted ->
if (granted) {
onPermissionsGranted()
} else {
onPermissionsDenied()
}
}
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
mContext.registerReceiver(
permissionResultReceiver,
permissionIntentFilter,
RECEIVER_EXPORTED
)
} else {
mContext.registerReceiver(
permissionResultReceiver,
permissionIntentFilter,
)
}
// Set the background color of the layout
mapLayout.setBackgroundColor(Color.RED)
permissionManager = PermissionManager(
context = mContext,
listener = object : PermissionManager.PermissionListener {
override fun onPermissionGranted() {
// Handle permissions granted
onPermissionsGranted()
}
override fun onPermissionDenied() {
// Handle permissions denied
onPermissionsDenied()
}
},
requestCode = PERMISSIONS_REQUEST_CODE,
*PermissionHelper.getRequiredPermissions()
)
if (!permissionManager.arePermissionsGranted()) {
permissionManager.requestPermissions(_activity)
} else {
// Permissions already granted
permissionManager.listener.onPermissionGranted()
}
}
private fun onPermissionsGranted() {
// Handle the actions when permissions are granted
Log.d("PermissionsResult", "onPermissionsGranted")
// Register the platform view factory for creating custom views
// Initialize the Penguin SDK
initPenguin()
}
private fun onPermissionsDenied() {
// Handle the actions when permissions are denied
Log.d("PermissionsResult", "onPermissionsDenied")
}
/**
* Returns the view associated with this PlatformView.
*
* @return The main view for this PlatformView.
*/
override fun getView(): View {
return mapLayout
}
/**
* Cleans up resources associated with this PlatformView.
*/
override fun dispose() {
// Cleanup code if needed
}
/**
* Handles method calls from Dart code.
*
* @param call The method call from Dart.
* @param result The result callback to send responses back to Dart.
*/
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
// Handle method calls from Dart code here
}
/**
* Initializes the Penguin SDK with custom configuration and delegates.
*/
private fun initPenguin() {
navigator = PenguinNavigator()
// Configure the PlugAndPlaySDK
val language = when (creationParams["languageCode"] as String) {
"ar" -> Languages.ar
"en" -> Languages.en
else -> {
Languages.en
}
}
Log.d(
"TAG",
"initPenguin: ${Languages.getLanguageEnum(creationParams["languageCode"] as String)}"
)
PlugAndPlaySDK.configuration = PlugAndPlayConfiguration.Builder()
.setBaseUrl(
creationParams["dataURL"] as String,
creationParams["positionURL"] as String
)
.setServiceName(
creationParams["dataServiceName"] as String,
creationParams["positionServiceName"] as String
)
.setClientData(
creationParams["clientID"] as String,
creationParams["clientKey"] as String
)
.setUserName(creationParams["username"] as String)
// .setLanguageID(Languages.en)
.setLanguageID(language)
.setSimulationModeEnabled(creationParams["isSimulationModeEnabled"] as Boolean)
.setEnableBackButton(true)
// .setDeepLinkData("deeplink")
.setCustomizeColor("#2CA0AF")
.setDeepLinkSchema("")
.setIsEnableReportIssue(true)
.build()
// Set location delegate to handle location updates
// PlugAndPlaySDK.setPiLocationDelegate {
// Example code to handle location updates
// Uncomment and modify as needed
// if (location.size() > 0)
// Toast.makeText(_context, "Location Info Latitude: ${location[0]}, Longitude: ${location[1]}", Toast.LENGTH_SHORT).show()
// }
// Set events delegate for reporting issues
// PlugAndPlaySDK.setPiEventsDelegate(new PIEventsDelegate() {
// @Override
// public void onReportIssue(PIReportIssue issue) {
// Log.e("Issue Reported: ", issue.getReportType());
// }
// // Implement issue reporting logic here }
// @Override
// public void onSharedLocation(String link) {
// // Implement Shared location logic here
// }
// })
// Start the Penguin SDK
PlugAndPlaySDK.start(mContext, this)
}
/**
* Navigates to the specified reference ID.
*
* @param refID The reference ID to navigate to.
*/
fun navigateTo(refID: String) {
try {
if (refID.isBlank()) {
Log.e("navigateTo", "Invalid refID: The reference ID is blank.")
}
// referenceId = refID
navigator.navigateTo(mContext, refID,object : RefIdDelegate {
override fun onRefByIDSuccess(PoiId: String?) {
Log.e("navigateTo", "PoiId is penguin view+++++++ $PoiId")
// channelFlutter.invokeMethod(
// PenguinMethod.navigateToPOI.name,
// "navigateTo Success"
// )
}
override fun onGetByRefIDError(error: String?) {
Log.e("navigateTo", "error is penguin view+++++++ $error")
// channelFlutter.invokeMethod(
// PenguinMethod.navigateToPOI.name,
// "navigateTo Failed: Invalid refID"
// )
}
} , creationParams["clientID"] as String, creationParams["clientKey"] as String )
} catch (e: Exception) {
Log.e("navigateTo", "Exception occurred during navigation: ${e.message}", e)
// channelFlutter.invokeMethod(
// PenguinMethod.navigateToPOI.name,
// "Failed: Exception - ${e.message}"
// )
}
}
/**
* Called when Penguin UI setup is successful.
*
* @param warningCode Optional warning code received from the SDK.
*/
override fun onPenNavSuccess(warningCode: String?) {
val clinicId = creationParams["clinicID"] as String
if(clinicId.isEmpty()) return
navigateTo(clinicId)
}
/**
* Called when there is an initialization error with Penguin UI.
*
* @param description Description of the error.
* @param errorType Type of initialization error.
*/
override fun onPenNavInitializationError(
description: String?,
errorType: InitializationErrorType?
) {
val arguments: Map<String, Any?> = mapOf(
"description" to description,
"type" to errorType?.name
)
channel.invokeMethod(PenguinMethod.onPenNavInitializationError.name, arguments)
Toast.makeText(mContext, "Navigation Error: $description", Toast.LENGTH_SHORT).show()
}
/**
* Called when Penguin UI is dismissed.
*/
override fun onPenNavUIDismiss() {
// Handle UI dismissal if needed
try {
mContext.unregisterReceiver(permissionResultReceiver)
dispose();
} catch (e: IllegalArgumentException) {
Log.e("PenguinView", "Receiver not registered: $e")
}
}
}

@ -17,7 +17,7 @@ class FlutterText{
} }
} }
override fun error(errorCode: String, errorMessage: String?, errorDetails: Any?) { override fun error(errorCode: String?, errorMessage: String?, errorDetails: Any?) {
completion(key) completion(key)
require(false){ require(false){
"'localizedValue' $errorMessage" "'localizedValue' $errorMessage"

@ -22,7 +22,7 @@ import com.github.kittinunf.fuel.httpPost
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
//import org.jetbrains.anko.doAsyncResult import org.jetbrains.anko.doAsyncResult
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONException import org.json.JSONException
import org.json.JSONObject import org.json.JSONObject
@ -149,7 +149,7 @@ fun sendNotification(context: Context, title: String, @Nullable subtitle: String
val notificationPendingIntent = stackBuilder.getPendingIntent(getUniqueId(), PendingIntent.FLAG_UPDATE_CURRENT) val notificationPendingIntent = stackBuilder.getPendingIntent(getUniqueId(), PendingIntent.FLAG_UPDATE_CURRENT)
val notification = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) val notification = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher_local) .setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(notificationPendingIntent) .setContentIntent(notificationPendingIntent)
.setAutoCancel(true) .setAutoCancel(true)
.setContentTitle(title) .setContentTitle(title)
@ -208,6 +208,7 @@ fun <T>httpPost(url: String, body: Map<String, Any?>, onSuccess: (response: HTTP
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.header("Allow", "*/*") .header("Allow", "*/*")
.response { request, response, result -> .response { request, response, result ->
result.doAsyncResult { }
result.fold({ data -> result.fold({ data ->
val dataString = String(data) val dataString = String(data)
if (isJSONValid(dataString)) { if (isJSONValid(dataString)) {

@ -1,45 +1,42 @@
package com.ejada.hmg.utils //package com.ejada.hmg.utils
//
import com.ejada.hmg.MainActivity //import com.ejada.hmg.MainActivity
import com.ejada.hmg.opentok.OpenTok //import com.ejada.hmg.opentok.OpenTok
import io.flutter.embedding.engine.FlutterEngine //import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall //import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel //import io.flutter.plugin.common.MethodChannel
//
class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) { //class OpenTokPlatformBridge(private var flutterEngine: FlutterEngine, private var mainActivity: MainActivity) {
//
private lateinit var channel: MethodChannel // private lateinit var channel: MethodChannel
private lateinit var openTok: OpenTok // private lateinit var openTok: OpenTok
//
companion object { // companion object {
private const val CHANNEL = "OpenTok-Platform-Bridge" // private const val CHANNEL = "OpenTok-Platform-Bridge"
} // }
//
fun create(){ // fun create(){
openTok = OpenTok(mainActivity, flutterEngine) // openTok = OpenTok(mainActivity, flutterEngine)
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) // channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result -> // channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) { // when (call.method) {
"initSession" -> { // "initSession" -> {
openTok.initSession(call, result) // openTok.initSession(call, result)
} // }
"swapCamera" -> { // "swapCamera" -> {
openTok.swapCamera(call, result) // openTok.swapCamera(call, result)
} // }
"toggleAudio" -> { // "toggleAudio" -> {
openTok.toggleAudio(call, result) // openTok.toggleAudio(call, result)
} // }
"toggleVideo" -> { // "toggleVideo" -> {
openTok.toggleVideo(call, result) // openTok.toggleVideo(call, result)
} // }
"hangupCall" -> { // else -> {
openTok.hangupCall(call, result) // result.notImplemented()
} // }
else -> { // }
result.notImplemented() // }
} // }
} //
} //}
}
}

@ -13,10 +13,11 @@ import android.net.wifi.WifiManager
import android.util.Log import android.util.Log
import com.ejada.hmg.MainActivity import com.ejada.hmg.MainActivity
import com.ejada.hmg.hmgwifi.HMG_Guest import com.ejada.hmg.hmgwifi.HMG_Guest
import com.ejada.hmg.hmgwifi.HMG_Internet
import com.ejada.hmg.geofence.GeoZoneModel import com.ejada.hmg.geofence.GeoZoneModel
import com.ejada.hmg.geofence.HMG_Geofence import com.ejada.hmg.geofence.HMG_Geofence
import com.ejada.hmg.hmgwifi.WpaEnterprise
import io.flutter.embedding.engine.FlutterEngine import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
@ -71,53 +72,33 @@ class PlatformBridge(private var flutterEngine: FlutterEngine, private var mainA
private fun connectHMGInternetWifi(methodCall: MethodCall, result: MethodChannel.Result) { private fun connectHMGInternetWifi(methodCall: MethodCall, result: MethodChannel.Result) {
(methodCall.arguments as ArrayList<*>).let { (methodCall.arguments as ArrayList<*>).let {
require(it.size == 3 && (it[0] is String) && (it[1] is String), lazyMessage = { require(it.size > 0 && (it[0] is String), lazyMessage = {
"Missing or invalid arguments (Must have three argument of 'String'" "Missing or invalid arguments (Must have one argument 'String at 0'"
}) })
val ssid = it[0].toString() val patientId = it[0].toString()
val username = it[1].toString() HMG_Internet(mainActivity)
val password = it[2].toString() .connectToHMGGuestNetwork(patientId) { status, message ->
WpaEnterprise(mainActivity,ssid).connect(username,password) { status, message -> mainActivity.runOnUiThread {
HMGUtils.timer(2000,false){
mainActivity.runOnUiThread {
if(status)
result.success(if (status) 1 else 0) result.success(if (status) 1 else 0)
else
result.error(message, null, null)
}
}
}
// HMG_Internet(mainActivity) HMGUtils.popFlutterText(mainActivity, message)
// .connectToHMGGuestNetwork(username, password) { status, message -> Log.v(this.javaClass.simpleName, "$status | $message")
// mainActivity.runOnUiThread { }
// result.success(if (status) 1 else 0)
// }
// HMGUtils.popFlutterText(mainActivity, message)
// Log.v(this.javaClass.simpleName, "$status | $message")
// }
//
// }
} }
} }
private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result) { private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result) {
(methodCall.arguments as ArrayList<*>).let { HMG_Guest(mainActivity).connectToHMGGuestNetwork { status, message ->
require(it.size == 1 && (it[0] is String), lazyMessage = { mainActivity.runOnUiThread {
"Missing or invalid arguments (Must have one argument 'String at 0'" result.success(if (status) 1 else 0)
})
val ssid = it[0].toString() HMGUtils.popFlutterText(mainActivity, message)
HMG_Guest(mainActivity, ssid).connectToHMGGuestNetwork { status, message -> Log.v(this.javaClass.simpleName, "$status | $message")
mainActivity.runOnUiThread {
result.success(if (status) 1 else 0)
HMGUtils.popFlutterText(mainActivity, message)
Log.v(this.javaClass.simpleName, "$status | $message")
}
} }
} }
} }
@ -143,7 +124,7 @@ class PlatformBridge(private var flutterEngine: FlutterEngine, private var mainA
} }
} }
override fun error(errorCode: String, errorMessage: String?, errorDetails: Any?) {} override fun error(errorCode: String?, errorMessage: String?, errorDetails: Any?) {}
override fun notImplemented() {} override fun notImplemented() {}
}) })

@ -1,81 +0,0 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.cloud.diplomaticquarterapp.whatsapp;
import static java.sql.DriverManager.println;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.util.Base64;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Collection;
import java.util.stream.Collectors;
public class AppSignatureRetriever {
private static final String HASH_TYPE = "SHA-256";
public static final int NUM_HASHED_BYTES = 9;
public static final int NUM_BASE64_CHAR = 11;
public void logSignatures(Context context) {
Collection<String> appSignatures = getAppSignatures(context);
appSignatures.forEach(signature -> println("Signature: " + signature));
}
/**
* Get all the app signatures for the current package.
*
* @return signatures for current app
*/
public Collection<String> getAppSignatures(Context context) {
try {
// Get all package signatures for the current package
String packageName = context.getPackageName();
println("Package name: " + packageName);
PackageManager packageManager = context.getPackageManager();
Signature[] signatures = packageManager.getPackageInfo(packageName,
PackageManager.GET_SIGNATURES).signatures;
// For each signature create a compatible hash
Collection<String> appCodes = Arrays.stream(signatures)
.map(signature -> hash(packageName, signature.toCharsString()))
.collect(Collectors.toList());
return appCodes;
} catch (PackageManager.NameNotFoundException e) {
println("Unable to find package to obtain hash.");
throw new RuntimeException("Unable to find package to obtain hash.", e);
}
}
private String hash(String packageName, String signature) {
String appInfo = packageName + " " + signature;
try {
MessageDigest messageDigest = MessageDigest.getInstance(HASH_TYPE);
messageDigest.update(appInfo.getBytes(StandardCharsets.UTF_8));
byte[] hashSignature = messageDigest.digest();
// truncated into NUM_HASHED_BYTES
hashSignature = Arrays.copyOfRange(hashSignature, 0, NUM_HASHED_BYTES);
// encode into Base64
String base64Hash = Base64.encodeToString(hashSignature, Base64.NO_PADDING | Base64.NO_WRAP);
base64Hash = base64Hash.substring(0, NUM_BASE64_CHAR);
println(String.format("pkg: %s -- hash: %s", packageName, base64Hash));
return base64Hash;
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Unable to generate hash for application", e);
}
}
}

@ -1,31 +0,0 @@
package com.cloud.diplomaticquarterapp.whatsapp
import android.content.Context
import android.content.Intent
import com.whatsapp.otp.android.sdk.WhatsAppOtpHandler
import com.whatsapp.otp.android.sdk.WhatsAppOtpIncomingIntentHandler
import java.lang.ref.WeakReference
object WhatsApp {
val whatsAppOtpHandler = WhatsAppOtpHandler()
inline fun handleOTP ( intent: Intent, crossinline validateOTP:(code: String )-> Unit) =
WhatsAppOtpIncomingIntentHandler().processOtpCode(
intent,
// call your function to validate
{code -> validateOTP(code) },
{error,exception->
println("the error is ${error.name}")
println("the exception stacktrace is ${exception.message}")
println("the exception is cause ${exception.cause}")
})
fun performHandShake(context : WeakReference<Context>) = whatsAppOtpHandler.sendOtpIntentToWhatsApp(context.get()!!)
fun isWhatsAppInstalled(context : WeakReference<Context>) : Boolean = whatsAppOtpHandler.isWhatsAppInstalled(context.get()!!)
}

@ -1,17 +0,0 @@
package com.cloud.diplomaticquarterapp.whatsapp
import android.app.PendingIntent
import android.content.Intent
import android.os.Bundle
import com.cloud.diplomaticquarterapp.whatsapp.WhatsApp
import com.cloud.diplomaticquarterapp.whatsapp.WhatsAppOtpPlatformBridge
import io.flutter.embedding.android.FlutterFragmentActivity
class WhatsAppCodeActivity : FlutterFragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WhatsApp.handleOTP(intent){code ->
WhatsAppOtpPlatformBridge.result?.success(code);
finish()
}
}
}

@ -1,48 +0,0 @@
package com.cloud.diplomaticquarterapp.whatsapp
import com.ejada.hmg.MainActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import java.lang.ref.WeakReference
class WhatsAppOtpPlatformBridge(
private var flutterEngine: FlutterEngine,
private var mainActivity: MainActivity
) {
private lateinit var channel: MethodChannel
companion object {
private const val CHANNEL = "whats_app_otp"
var result: MethodChannel.Result? = null
}
fun invoke() {
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
when (call.method) {
"isWhatsAppInstalled" -> {
val isAppInstalled =
WhatsApp.isWhatsAppInstalled(WeakReference(mainActivity))
result.success(isAppInstalled)
}
"performHandShake" -> {
WhatsApp.performHandShake(WeakReference(mainActivity))
}
"startListening" -> {
WhatsAppOtpPlatformBridge.result = result
}
else -> {
result.notImplemented()
}
}
}
}
}

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.cloud.diplomaticquarterapp.whatsapp.WhatsAppCodeActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

@ -1,23 +1,22 @@
<resources> <resources>
<string name="app_name">HMG Patient App</string> <string name="app_name">HMG Patient App</string>
<string name="geofence_unknown_error"> <string name="geofence_unknown_error">
Unknown error: the Geofence service is not available now. Unknown error: the Geofence service is not available now.
</string> </string>
<string name="geofence_not_available"> <string name="geofence_not_available">
Geofence service is not available now. Go to Settings>Location>Mode and choose High accuracy. Geofence service is not available now. Go to Settings>Location>Mode and choose High accuracy.
</string> </string>
<string name="geofence_too_many_geofences"> <string name="geofence_too_many_geofences">
Your app has registered too many geofences. Your app has registered too many geofences.
</string> </string>
<string name="geofence_too_many_pending_intents"> <string name="geofence_too_many_pending_intents">
You have provided too many PendingIntents to the addGeofences() call. You have provided too many PendingIntents to the addGeofences() call.
</string> </string>
<string name="GEOFENCE_INSUFFICIENT_LOCATION_PERMISSION"> <string name="GEOFENCE_INSUFFICIENT_LOCATION_PERMISSION">
App do not have permission to access location service. App do not have permission to access location service.
</string> </string>
<string name="GEOFENCE_REQUEST_TOO_FREQUENT"> <string name="GEOFENCE_REQUEST_TOO_FREQUENT">
Geofence requests happened too frequently. Geofence requests happened too frequently.
</string> </string>
<string name="mapbox_access_token" translatable="false">sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg</string>
</resources> </resources>

@ -1,34 +1,9 @@
buildscript { buildscript {
ext.kotlin_version = '1.8.0' ext.kotlin_version = '1.6.0'
// if (System.properties['os.arch'] == "aarch64") {
// // For M1 Users we need to use the NDK 24 which added support for aarch64
// ndkVersion = "24.0.8215888"
// } else {
// // Otherwise we default to the side-by-side NDK version from AGP.
// ndkVersion = "21.4.7075529"
// }
repositories { repositories {
google() google()
jcenter() jcenter()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' } maven { url 'https://developer.huawei.com/repo/' }
maven {
url 'https://api.mapbox.com/downloads/v2/releases/maven'
credentials {
username = 'mapbox'
password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
// password = "pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"
if (password == null || password == "") {
throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
}
}
authentication {
basic(BasicAuthentication)
}
}
// maven { // maven {
// url "https://dl.bintray.com/kotlin/kotlin-eap/" // url "https://dl.bintray.com/kotlin/kotlin-eap/"
@ -36,15 +11,11 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.1.3' classpath 'com.android.tools.build:gradle:7.0.3'
// classpath 'com.android.tools.build:gradle:8.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8' classpath 'com.google.gms:google-services:4.3.8'
// classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
classpath 'com.huawei.agconnect:agcp:1.5.2.300' classpath 'com.huawei.agconnect:agcp:1.5.2.300'
classpath("com.android.tools:r8:8.2.42")
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
classpath "com.mapbox.gradle.plugins:access-token:0.4.0"
} }
} }
@ -53,29 +24,12 @@ allprojects {
google() google()
// jcenter() // jcenter()
mavenCentral() mavenCentral()
flatDir {
dirs 'libs'
}
maven { maven {
url 'https://developer.huawei.com/repo/' url 'https://developer.huawei.com/repo/'
} }
maven { maven {
url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local" url "https://artifactory.ess-dev.com/artifactory/gradle-dev-local"
} }
maven {
url 'https://api.mapbox.com/downloads/v2/releases/maven'
credentials {
username = 'mapbox'
password = "sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
if (password == null || password == "") {
throw new GradleException("MAPBOX_DOWNLOADS_TOKEN isn't set. Set it to the project properties or to the enviroment variables.")
}
}
authentication {
basic(BasicAuthentication)
}
}
} }
} }
@ -87,7 +41,7 @@ subprojects {
project.evaluationDependsOn(':app') project.evaluationDependsOn(':app')
} }
tasks.register("clean", Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }

@ -21,24 +21,19 @@
], ],
"api_key": [ "api_key": [
{ {
"current_key": "AIzaSyDZDeWcBlRE3YfJWYt_DCiToVnANfaj8qg" "current_key": "AIzaSyDUfg6AKM1-00WyzpvLImUBC46wFrq9-qw"
} }
], ],
"services": { "services": {
"analytics_service": {
"status": 1
},
"appinvite_service": { "appinvite_service": {
"other_platform_oauth_client": [ "status": 1,
{ "other_platform_oauth_client": []
"client_id": "815750722565-3a0gc7neins0eoahdrimrfksk0sqice8.apps.googleusercontent.com", },
"client_type": 3 "ads_service": {
}, "status": 2
{
"client_id": "815750722565-0cq9366orvsk5ipivq6lijcj56u03fr7.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.void.demo"
}
}
]
} }
} }
} }

@ -1,8 +1,4 @@
org.gradle.jvmargs=-Xmx4096m org.gradle.jvmargs=-Xmx2048m
#android.enableR8=true android.enableR8=true
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
android.suppressUnsupportedCompileSdk=33
MAPBOX_USER_NAME = "mapbox"
MAPBOX_DOWNLOADS_TOKEN="sk.eyJ1IjoicndhaWQiLCJhIjoiY2x6NWo0bTMzMWZodzJrcGZpemYzc3Z4dSJ9.uSSZuwNSGCcCdPAiORECmg"
#MAPBOX_DOWNLOADS_TOKEN="pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ"

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip

@ -1,6 +1,4 @@
include ':app' include ':app'
include ':vital-sign-engine'
project(':vital-sign-engine').projectDir = new File('/Users/mohamedmekawy/Documents/Work/DiplomaticQuarter_3.16/packages/vital_sign_camera/android/libs')
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

@ -1,22 +0,0 @@
{
"provider": "apple_pay",
"data": {
"merchantIdentifier": "merchant.com.hmgwebservices",
"displayName": "Sulaiman Al Habib",
"merchantCapabilities": [
"3DS",
"debit",
"credit"
],
"supportedNetworks": [
"amex",
"visa",
"discover",
"masterCard"
],
"countryCode": "SA",
"currencyCode": "SAR",
"requiredBillingContactFields": null,
"requiredShippingContactFields": null
}
}

@ -1,4 +1,3 @@
{ {
"name": "DQIcons", "name": "DQIcons",
"css_prefix_text": "", "css_prefix_text": "",

@ -1,21 +0,0 @@
{
"provider": "apple_pay",
"data": {
"merchantIdentifier": "merchant.com.hmgwebservices",
"displayName": "Sulaiman Al Habib",
"merchantCapabilities": [
"3DS",
"debit",
"credit"
],
"supportedNetworks": [
"visa",
"masterCard",
"mada"
],
"countryCode": "SA",
"currencyCode": "SAR",
"requiredBillingContactFields": null,
"requiredShippingContactFields": null
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20.516" height="23.447" viewBox="0 0 20.516 23.447">
<path id="doctor_information_icon" d="M10.258,11.724A5.862,5.862,0,1,0,4.4,5.862,5.861,5.861,0,0,0,10.258,11.724Zm-5.5,7.694a1.1,1.1,0,1,0,1.1-1.1A1.1,1.1,0,0,0,4.763,19.417Zm9.892-6.2V15.46a3.669,3.669,0,0,1,2.931,3.59v1.91a.735.735,0,0,1-.591.719l-1.475.293a.365.365,0,0,1-.43-.289l-.142-.719a.362.362,0,0,1,.289-.43l.884-.179V19.051a2.2,2.2,0,1,0-4.4.087V20.36l.884.179a.372.372,0,0,1,.289.43l-.142.719a.372.372,0,0,1-.43.289l-1.429-.192a.732.732,0,0,1-.632-.728V19.051a3.673,3.673,0,0,1,2.931-3.59V13.39c-.1.032-.2.05-.3.087a7.923,7.923,0,0,1-5.257,0A5.061,5.061,0,0,0,6.6,13.239v3.737a2.565,2.565,0,1,1-1.465,0V13.294A6.139,6.139,0,0,0,0,19.344V21.4a2.054,2.054,0,0,0,2.052,2.052H18.465A2.054,2.054,0,0,0,20.516,21.4V19.344A6.146,6.146,0,0,0,14.654,13.216Z" fill="#40acc9"/>
</svg>

Before

Width:  |  Height:  |  Size: 889 B

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="21.503" height="21.503" viewBox="0 0 21.503 21.503">
<path id="doctor_qualification_icon" d="M9.4,5.491,6.494.653A1.344,1.344,0,0,0,5.341,0H.673A.672.672,0,0,0,.123,1.058L4.8,7.733A8.692,8.692,0,0,1,9.4,5.491ZM20.83,0H16.162a1.344,1.344,0,0,0-1.152.653l-2.9,4.839a8.694,8.694,0,0,1,4.6,2.242L21.38,1.058A.672.672,0,0,0,20.83,0ZM10.751,6.72a7.392,7.392,0,1,0,7.392,7.392A7.392,7.392,0,0,0,10.751,6.72Zm3.886,6.6-1.593,1.552.377,2.193a.482.482,0,0,1-.7.508l-1.97-1.035-1.97,1.035a.482.482,0,0,1-.7-.508l.377-2.193L6.866,13.324a.482.482,0,0,1,.267-.823l2.2-.321.984-2a.483.483,0,0,1,.866,0l.984,2,2.2.321a.482.482,0,0,1,.267.823Z" transform="translate(0)" fill="#40acc9"/>
</svg>

Before

Width:  |  Height:  |  Size: 726 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 76 KiB

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36.081" height="36.091" viewBox="0 0 36.081 36.091">
<g id="call_down" transform="matrix(-0.719, 0.695, -0.695, -0.719, 111.538, -60.904)">
<g id="Group_916" data-name="Group 916" transform="translate(109.442 -4.706)">
<path id="Path_1199" data-name="Path 1199" d="M25.19,18.88l-3.54-3.59a2.341,2.341,0,0,0-3.92.9,2.4,2.4,0,0,1-2.782,1.539c-2.529-.641-5.943-3.975-6.575-6.667A2.33,2.33,0,0,1,9.892,8.238a2.4,2.4,0,0,0,.885-3.975L7.236.673a2.5,2.5,0,0,0-3.414,0L1.42,3.109c-2.4,2.564.253,9.36,6.2,15.386s12.644,8.847,15.172,6.283l2.4-2.436A2.587,2.587,0,0,0,25.19,18.88Z" transform="translate(-0.539 0)" fill="#fff"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 699 B

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="25.315" height="25.726" viewBox="0 0 25.315 25.726">
<g id="call_down" transform="translate(-109.442 4.706)">
<g id="Group_916" data-name="Group 916" transform="translate(109.442 -4.706)">
<path id="Path_1199" data-name="Path 1199" d="M25.19,18.88l-3.54-3.59a2.341,2.341,0,0,0-3.92.9,2.4,2.4,0,0,1-2.782,1.539c-2.529-.641-5.943-3.975-6.575-6.667A2.33,2.33,0,0,1,9.892,8.238a2.4,2.4,0,0,0,.885-3.975L7.236.673a2.5,2.5,0,0,0-3.414,0L1.42,3.109c-2.4,2.564.253,9.36,6.2,15.386s12.644,8.847,15.172,6.283l2.4-2.436A2.587,2.587,0,0,0,25.19,18.88Z" transform="translate(-0.539 0)" fill="#fff"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 669 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="204.4" height="41.203" viewBox="0 0 204.4 41.203">
<g id="Group_417" data-name="Group 417" transform="translate(-2052 119)">
<g id="Group_22" data-name="Group 22" transform="translate(2052 -119)">
<path id="Path_19" data-name="Path 19" d="M500.8,34.444s1.442-.01,2.454-.01l7.69.036c.917,0,1.682-.976,1.725-2.385l.007-6.426c0-1.369.614-2.441,1.564-2.5l2.359-.02c.95.059,1.6,1.141,1.6,2.5L518.2,32.1c.043,1.409.683,2.329,1.607,2.329l10.352.026.02-7.944c0-1.366-.656-2.428-1.61-2.487l-4.16-.02c-.92,0-1.643-.973-1.686-2.382l-.016-2.148c.046-1.409.772-2.379,1.7-2.379l4.183.013c.95-.063,1.57-1.184,1.57-2.547l.01-9.913a4.218,4.218,0,0,1-3.2,2l-7.03,0c-.917,0-1.682,1-1.725,2.408v6.367c-.043,1.409-.762,2.4-1.682,2.4l-2.128-.016c-.924,0-1.659-.963-1.7-2.365l.007-6.436c-.043-1.409-.772-2.359-1.692-2.359l-10.21,0,0,7.917c0,1.369.64,2.461,1.593,2.527l4.183-.016c.947.063,1.616,1.191,1.616,2.55l-.013,1.834c0,1.366-.647,2.461-1.6,2.524l-4.19-.01c-.953.066-1.593,1.148-1.593,2.51Zm35.16-30.35V37.208a4.212,4.212,0,0,1-4.256,4H499.026a4.192,4.192,0,0,1-4.236-4.008l0-33.174A4.213,4.213,0,0,1,499.032.01l32.652.013A4.284,4.284,0,0,1,535.964,4.094Z" transform="translate(-331.564 -0.01)" fill="#ed1c2b"/>
<path id="Path_20" data-name="Path 20" d="M111.074,102.986h-.426v-.792a1.911,1.911,0,0,1-1.739.93c-1.923,0-1.927-1.3-1.927-1.834V98.569h.429v2.705c0,.871.3,1.455,1.511,1.455a1.559,1.559,0,0,0,1.725-1.583V98.572h.426Zm-7.221-4.552a2.347,2.347,0,1,1-2.365,2.349A2.273,2.273,0,0,1,103.852,98.433Zm0,4.292a1.948,1.948,0,1,0-1.94-1.946A1.859,1.859,0,0,0,103.852,102.725Zm-5.13-4.157h.429v.924a1.762,1.762,0,0,1,1.7-1.059.9.9,0,0,1,.313.056l.02.459a1.066,1.066,0,0,0-.455-.063,1.581,1.581,0,0,0-1.58,1.715v2.388h-.429Zm-1.415.871c-.023-.122-.023-.868-.023-.868h.429v4.176c0,1.009-.346,2.115-2.3,2.115-1.287,0-2.029-.406-2.167-1.491l.426-.033c.092.7.544,1.128,1.745,1.128,1.59,0,1.867-.9,1.867-1.7v-.8a2.287,2.287,0,1,1-1.917-3.533A2.011,2.011,0,0,1,97.307,99.44Zm-3.8,1.2a1.712,1.712,0,0,0,1.9,1.9,1.737,1.737,0,0,0,1.877-1.907,1.889,1.889,0,0,0-3.774.01ZM89.9,96.85h.422v6.139H89.9Zm-5.044,3.124c.142-1.151.7-1.541,1.956-1.541,1.207,0,1.923.3,1.923,1.306v2.444c0,.333.007.488.251.488a1.06,1.06,0,0,0,.356-.066l.033.389a1.3,1.3,0,0,1-.482.076.431.431,0,0,1-.468-.277,1.126,1.126,0,0,1-.059-.31c0-.089-.007-.185-.007-.294a2.191,2.191,0,0,1-1.96.934,3.059,3.059,0,0,1-.416-.023,1.824,1.824,0,0,1-.574-.148,1.186,1.186,0,0,1-.736-1.188c0-.92.746-1.23,1.587-1.283l1.445-.1c.422-.033.607-.079.607-.59,0-.564-.294-.96-1.511-.96-1.079,0-1.405.35-1.514,1.118Zm3.454.61a1.248,1.248,0,0,1-.65.195l-1.4.1c-.693.053-1.161.254-1.161.884,0,.854.815.957,1.32.957.828,0,1.89-.393,1.89-1.4v-.736ZM83.663,100a1.623,1.623,0,0,0-1.732-1.165,1.946,1.946,0,0,0,0,3.893,1.692,1.692,0,0,0,1.785-1.3l.432-.023a2.077,2.077,0,0,1-2.217,1.719,2.346,2.346,0,1,1,0-4.691,1.964,1.964,0,0,1,2.154,1.537Zm-5.321-1.428h.426v4.417h-.426Zm-1.422,2.253a1.794,1.794,0,0,0-1.861-1.989,1.949,1.949,0,1,0,1.861,1.989Zm-.053,1.313a1.918,1.918,0,0,1-1.821.993,2.348,2.348,0,0,1,0-4.691,2.033,2.033,0,0,1,1.811.986l.013-2.567H77.3V103h-.429v-.861Zm-4.988-1.64a1.77,1.77,0,0,0-1.87-1.663,1.808,1.808,0,0,0-1.864,1.663Zm-3.738.4a1.8,1.8,0,0,0,1.946,1.834,1.663,1.663,0,0,0,1.735-1.224l.432-.02a2.1,2.1,0,0,1-2.21,1.643,2.192,2.192,0,0,1-2.332-2.379,2.324,2.324,0,1,1,4.645.119ZM60,98.569h.426v.676a1.89,1.89,0,0,1,1.583-.812,1.466,1.466,0,0,1,1.59.97,1.659,1.659,0,0,1,1.593-.97c1.2,0,1.748.574,1.748,1.57v2.986h-.426v-2.857a1.191,1.191,0,0,0-1.313-1.3,1.342,1.342,0,0,0-1.517,1.445v2.712h-.426v-2.933c0-.749-.376-1.224-1.316-1.224a1.414,1.414,0,0,0-1.517,1.527v2.626H60Zm52.086,0h.429v.858a1.914,1.914,0,0,1,1.821-.993,2.35,2.35,0,0,1,0,4.694,2.019,2.019,0,0,1-1.808-.986l-.016,2.57h-.429V98.569Zm.379,2.167a1.791,1.791,0,0,0,1.861,1.989,1.949,1.949,0,1,0-1.861-1.989ZM78.25,97.266a.307.307,0,1,1,.307.323A.317.317,0,0,1,78.25,97.266Z" transform="translate(-40.207 -64.904)" fill="#5f6765"/>
<path id="Path_21" data-name="Path 21" d="M248.783,104.229a.309.309,0,1,1,.307.323A.316.316,0,0,1,248.783,104.229Zm-.841,0a.319.319,0,0,1,.31-.323.324.324,0,0,1,0,.647A.319.319,0,0,1,247.941,104.229Zm45.921-.01a.314.314,0,0,1,.3-.323.323.323,0,0,1,0,.647A.308.308,0,0,1,293.862,104.219Zm-24.356-7.007a.3.3,0,1,1,.307.323A.31.31,0,0,1,269.506,97.212Zm-.841,0a.307.307,0,1,1,.31.323A.313.313,0,0,1,268.665,97.212Zm-25.451.013a.307.307,0,1,1,.307.323A.317.317,0,0,1,243.214,97.225Zm-.838,0a.309.309,0,1,1,.307.323A.317.317,0,0,1,242.376,97.225Zm66.173-.383h.429v6.136h-.429Zm-44.631.056h.426v6.139h-.426Zm-1.725,4.289v-4.3h.429V101.2c0,.531-.016,1.834-1.94,1.834h-6.9a1.8,1.8,0,0,1-1.706-.739c-.224.442-.716.821-1.755.821s-1.524-.376-1.748-.821a1.793,1.793,0,0,1-1.706.739h-1.28c-.492,0-.558-.373-.551-.887a2.3,2.3,0,0,1-1.989.967,2.346,2.346,0,1,1,2.375-2.3l.007,1.31c0,.333.007.515.251.515l1.2,0c1.214,0,1.5-.584,1.5-1.455V98.565h.426v2.705c0,.871.327,1.452,1.531,1.452s1.5-.581,1.5-1.452V98.565h.426v2.689c.013.835.32,1.389,1.508,1.389h1.353V96.889h.426v2.527a1.911,1.911,0,0,1,1.739-.93c1.923,0,1.923,1.3,1.923,1.837v2.322h1.471C261.9,102.642,262.193,102.058,262.193,101.187Zm-21.021-.369a1.915,1.915,0,1,0,1.867-1.989A1.878,1.878,0,0,0,241.172,100.818Zm17.616-.482c0-.874-.3-1.455-1.5-1.455a1.561,1.561,0,0,0-1.732,1.583v2.177h3.236Zm12.948.442,0,1.346c0,.336.007.515.251.515h2.454v-2.448c0-.534.016-1.834,1.943-1.834a3.592,3.592,0,0,1,.706.066l-.221.366a3.064,3.064,0,0,0-.468-.036c-1.2,0-1.531.584-1.531,1.455v2.431h3.207v.4H271.9a.436.436,0,0,1-.462-.264,1.8,1.8,0,0,1-.086-.591,2.393,2.393,0,0,1-1.986.937,2.344,2.344,0,1,1,2.372-2.339Zm-4.252.036a1.916,1.916,0,1,0,1.87-1.989A1.889,1.889,0,0,0,267.484,100.815Zm36.482.541c.046.779.376,1.287,1.5,1.287,1.178-.01,1.494-.59,1.494-1.455v-4.4h.426V101.2c0,.528-.017,1.824-1.923,1.834a1.851,1.851,0,0,1-1.656-.666,2.4,2.4,0,0,1-4.414-.007,1.864,1.864,0,0,1-1.666.67h-5.094a1.849,1.849,0,0,1-1.663-.673,2.4,2.4,0,0,1-4.417.01,1.849,1.849,0,0,1-1.659.663h-1.465c-.073.92-.528,1.821-2.283,1.821-1.29,0-2.026-.4-2.167-1.488l.422-.036c.092.693.541,1.125,1.745,1.125,1.4,0,1.758-.716,1.851-1.422h-1.758a2.217,2.217,0,0,1-2.392-2.329,2.3,2.3,0,0,1,4.592.033v1.9H284.9c1.066,0,1.415-.439,1.484-1.128.013-.132.02-.247.03-.34a2.237,2.237,0,0,1,2.345-2.032,2.265,2.265,0,0,1,2.359,2.273c.043.739.393,1.227,1.5,1.227h3.269v-2.454c0-.871-.284-1.452-1.5-1.452a1.4,1.4,0,0,0-1.257.475l-.373-.264a1.928,1.928,0,0,1,1.613-.607c1.923,0,1.943,1.3,1.943,1.834v2.468h1.419c1.125,0,1.438-.5,1.5-1.257a2.367,2.367,0,0,1,4.721-.092Zm-20.948-.673a1.7,1.7,0,0,0-1.884-1.828,1.736,1.736,0,0,0-1.857,1.834,1.825,1.825,0,0,0,2.019,1.946h1.722Zm3.81.884a1.937,1.937,0,0,0,3.873-.082c0-.059,0-.112,0-.162a1.938,1.938,0,0,0-3.853-.1A1.689,1.689,0,0,0,286.829,101.567Zm16.712-.059c0-.063,0-.106-.007-.148a1.935,1.935,0,0,0-3.866.076,1.937,1.937,0,1,0,3.873.073Zm-51.733,2.722a.307.307,0,1,1,.307.323A.316.316,0,0,1,251.808,104.229Z" transform="translate(-161.322 -64.863)" fill="#5f6765"/>
<path id="Path_22" data-name="Path 22" d="M29.1,16.1a.705.705,0,0,1-.709.7.717.717,0,0,1-.722-.7.7.7,0,0,1,.722-.666A.683.683,0,0,1,29.1,16.1ZM70.27,12.105V7.817a.576.576,0,0,1,.64-.528.568.568,0,0,1,.64.548v4.077c0,1.7.059,2.887-.871,3.761a3.722,3.722,0,0,1-2.652.9,3.919,3.919,0,0,1-2.689-.93,3.387,3.387,0,0,1-.845-2.758V7.843a.577.577,0,0,1,.653-.558.583.583,0,0,1,.66.587l0,.878,0,4.269a2.346,2.346,0,0,0,.551,1.927,2.482,2.482,0,0,0,1.712.574,2.319,2.319,0,0,0,1.6-.558C70.326,14.345,70.27,13.649,70.27,12.105ZM5.892,16.1a.708.708,0,0,1-.713.7.72.72,0,0,1-.726-.7.7.7,0,0,1,.726-.666A.686.686,0,0,1,5.892,16.1Zm12.711,0a.708.708,0,0,1-.713.7.72.72,0,0,1-.726-.7.7.7,0,0,1,.726-.666A.686.686,0,0,1,18.6,16.1Zm1.953,0a.708.708,0,0,1-.709.7.715.715,0,0,1-.722-.7.7.7,0,0,1,.722-.666A.685.685,0,0,1,20.555,16.1ZM35.8,7.78l.267-.132a4.573,4.573,0,0,1,1.194-.333,6.041,6.041,0,0,1,.815-.056c2.468,0,4.463,1.772,4.463,4.816a6.088,6.088,0,0,1-.115,1.2h7.67a2.488,2.488,0,0,0,1.719-.574,2.349,2.349,0,0,0,.554-1.927V4.508a.661.661,0,0,1,1.31-.026V10.64a3.385,3.385,0,0,1-.848,2.764,3.884,3.884,0,0,1-2.689.927H42.905l-11.843-.007a3.613,3.613,0,0,1-2.4-.894,3.078,3.078,0,0,1-.228-.244,3.177,3.177,0,0,1-.231.244,3.722,3.722,0,0,1-2.649.9H21.647a3.891,3.891,0,0,1-2.6-.927c-.271-.129-.343-.049-.429.026a3.707,3.707,0,0,1-2.642.9h-3.8a3.845,3.845,0,0,1-2.56-.93c-.267-.129-.343-.049-.426.026a3.583,3.583,0,0,1-2.4.9l-3.256.007A3.9,3.9,0,0,1,.844,13.4,3.4,3.4,0,0,1,0,10.644V7.833a.586.586,0,0,1,.656-.561.578.578,0,0,1,.653.587v2.92a2.341,2.341,0,0,0,.554,1.927,2.488,2.488,0,0,0,1.719.574l3.21-.007a2.2,2.2,0,0,0,1.4-.554,2.056,2.056,0,0,0,.587-1.6l0-.485V7.827a.583.583,0,0,1,.653-.561.578.578,0,0,1,.653.587l0,.878,0,2.042a2.35,2.35,0,0,0,.551,1.927,2.372,2.372,0,0,0,1.547.567l3.843.007a2.268,2.268,0,0,0,1.6-.561,2.1,2.1,0,0,0,.594-1.673V7.83a.659.659,0,0,1,1.306.026v2.923a2.341,2.341,0,0,0,.554,1.927,2.436,2.436,0,0,0,1.61.571l3.919,0a2.282,2.282,0,0,0,1.6-.558,2.252,2.252,0,0,0,.59-1.87c-.01-.363,0-.755,0-1.181V7.823A.648.648,0,0,1,29.066,7.8V9.865c0,1.544-.059,2.24.6,2.857a2.222,2.222,0,0,0,1.392.554l10.075,0a5.085,5.085,0,0,0,.162-1.31A3.313,3.313,0,0,0,38,8.341l-.211,0a5.337,5.337,0,0,0-.815.086c-.475.086-.4.073-.851.181C35.661,8.76,35.483,8.057,35.8,7.78ZM68.739,4.33a.7.7,0,0,1-.713.689A.719.719,0,0,1,67.3,4.33a.7.7,0,0,1,.726-.67A.687.687,0,0,1,68.739,4.33ZM101.725,16.1a.7.7,0,0,1-.706.7.721.721,0,0,1-.729-.7.7.7,0,0,1,.729-.666A.682.682,0,0,1,101.725,16.1Zm1.95,0a.708.708,0,0,1-.709.7.718.718,0,0,1-.726-.7.7.7,0,0,1,.726-.666A.685.685,0,0,1,103.674,16.1Zm35.447-1.775.023-1.069,5.209,0c2.029-.059,2.563-.9,2.6-2.359-.076-1.468-.571-2.448-2.6-2.51a5.939,5.939,0,0,0-.874.1,7.663,7.663,0,0,0-.848.181c-.468.145-.65-.554-.336-.831l.264-.129a4.575,4.575,0,0,1,1.2-.336,6.162,6.162,0,0,1,.818-.053c2.5.069,3.513,1.372,3.593,3.533-.056,2.131-1.092,3.4-3.593,3.467Zm-.911-.6a.708.708,0,0,1-.713.693.717.717,0,0,1-.722-.693.7.7,0,0,1,.722-.67A.685.685,0,0,1,138.21,13.725Zm-4.5-4.054c0,1.7.056,2.887-.878,3.764a3.71,3.71,0,0,1-2.642.9,3.894,3.894,0,0,1-2.689-.927l-.4.026a3.725,3.725,0,0,1-2.646.9,4.228,4.228,0,0,1-2.217-.571v.564l-7.126.01a3.891,3.891,0,0,1-2.685-.927c-.267-.129-.34-.049-.419.026a3.734,3.734,0,0,1-2.649.9l-4.628-.01a3.8,3.8,0,0,1-2.461-.924h-.383a3.9,3.9,0,0,1-2.689.927l-6.3-.007a3.679,3.679,0,0,1-.848,1.343,3.707,3.707,0,0,1-2.642.9,3.91,3.91,0,0,1-2.692-.93,2.479,2.479,0,0,1-.742-1.329l-7.686.02a3.9,3.9,0,0,1-2.689-.927,3.393,3.393,0,0,1-.845-2.764V4.478a.661.661,0,0,1,1.31.026v6.275a2.35,2.35,0,0,0,.551,1.927,2.494,2.494,0,0,0,1.719.574l7.479-.007.066-.389v-1.8a3.514,3.514,0,0,1,.841-2.863,3.91,3.91,0,0,1,2.692-.93,3.71,3.71,0,0,1,2.642.9c.825.775.874,1.791.874,3.19v1c0,.313,0,.614-.013.894l6.245,0a2.485,2.485,0,0,0,1.715-.574,2.015,2.015,0,0,0,.551-1.6v-.323l0-2.049,0-.881a.583.583,0,0,1,.653-.591.591.591,0,0,1,.66.561l-.007.91.007,1.91c0,.851-.02,1.527.554,2.065a2.344,2.344,0,0,0,1.445.564l4.668.007a2.3,2.3,0,0,0,1.6-.558c.653-.617.6-1.313.6-2.857L111.568,7.7V4.478a.661.661,0,0,1,1.31.026V9.667c0,.422,0,.812-.007,1.174a2.286,2.286,0,0,0,.571,1.864,2.482,2.482,0,0,0,1.712.574l5.776,0V7.817A.561.561,0,0,1,121.5,7.3c.508.026.709.231.732.525V8.6l0,2.685a1.891,1.891,0,0,0,.548,1.425,2.494,2.494,0,0,0,1.719.574,2.3,2.3,0,0,0,1.6-.558c.653-.617.594-1.313.594-2.857V7.817a.648.648,0,0,1,1.277.023v2.943a2.341,2.341,0,0,0,.551,1.923,2.485,2.485,0,0,0,1.715.574,2.294,2.294,0,0,0,1.6-.558c.653-.617.594-1.313.594-2.857V7.817a.581.581,0,0,1,.643-.528.573.573,0,0,1,.64.551V9.671ZM91.043,14.962c.6-.564.6-1.191.594-2.474V11.459c0-1.405-.016-2.019-.594-2.563a2.3,2.3,0,0,0-1.6-.561,2.47,2.47,0,0,0-1.712.574,2.332,2.332,0,0,0-.551,1.927v2.181a2.335,2.335,0,0,0,.551,1.927,2.47,2.47,0,0,0,1.712.574A2.278,2.278,0,0,0,91.043,14.962Zm-34.177-.637,0-8.943,0-.878a.661.661,0,0,1,1.31-.026v9.847Z" transform="translate(0 -2.456)" fill="#3d4543"/>
<path id="Path_23" data-name="Path 23" d="M34.919,58.788V54.5a.649.649,0,0,1,1.28.023V58.6c0,1.7.053,2.883-.871,3.757a3.728,3.728,0,0,1-2.652.9,3.921,3.921,0,0,1-2.689-.934,3.392,3.392,0,0,1-.841-2.761V54.529a.661.661,0,0,1,1.31.033l0,.878,0,4.265a2.343,2.343,0,0,0,.551,1.927,2.491,2.491,0,0,0,1.715.574,2.3,2.3,0,0,0,1.6-.561C34.978,61.028,34.919,60.332,34.919,58.788Zm3.5,4.292V54.529a.581.581,0,0,1,.653-.558.574.574,0,0,1,.65.525V62.04h4.028v1.042H38.422Zm15.881,0V54.486a.574.574,0,0,1,.574-.525c.508.026.709.231.732.525v.779l.007,7.818H54.3Zm3.5,0,.96-8.458a.813.813,0,0,1,.9-.647.9.9,0,0,1,.838.574l2.642,6.862,2.56-6.875a.885.885,0,0,1,.779-.561.832.832,0,0,1,.947.643l1,8.462h-1.28l-.8-7.37-2.745,7.37H62.527L59.72,55.71l-.736,7.37Zm27.513-1.831L85.3,54.9v-.383a.595.595,0,0,1,1.184-.03v.775l0,7.815h-1.3l-4.572-7.261.026,7.261H79.447V54.608c0-.548.495-.633.808-.633.419.016.558.195.858.627Zm15.8,1.831V54.5a.672.672,0,0,1,1.31-.026v7.564h4.028V63.08Zm10.517,0V54.463a.674.674,0,0,1,1.31.026v3.3h4.447v-3.3a.673.673,0,0,1,1.31-.016V63.08h-1.31V58.827h-4.447V63.08Zm26.54,0v-8.6a.586.586,0,0,1,.653-.521.58.58,0,0,1,.653.515v8.6ZM.643,53.994h1.5c1.88,0,3.292.066,4.46,1.158a4.75,4.75,0,0,1,0,6.7C5.38,63,3.935,63.08,2.131,63.08H0V54.661A.591.591,0,0,1,.643,53.994ZM6.66,58.448a3.379,3.379,0,0,0-1.033-2.616c-.845-.792-1.808-.858-3.484-.858H1.3v7.112H2.507a4.271,4.271,0,0,0,3.177-.927A3.686,3.686,0,0,0,6.66,58.448Zm3.263-3.814c-.016-.445.261-.64.663-.64H12.08c1.3,0,2.3-.013,3.088.726a2.369,2.369,0,0,1,.755,1.811,2.137,2.137,0,0,1-.6,1.567,2.608,2.608,0,0,1-1.557.719,1.405,1.405,0,0,1,.828.369,4.073,4.073,0,0,1,.755,1.267l1.254,2.629H15.234l-1.118-2.369c-.673-1.405-.993-1.527-2.306-1.527H11.2v3.9H9.916V54.634Zm4.708,1.894a1.506,1.506,0,0,0-.426-1.089,2.693,2.693,0,0,0-2-.478H11.2V58.22h.452a3.566,3.566,0,0,0,2.494-.548A1.587,1.587,0,0,0,14.63,56.528ZM44.5,63.08l3-7.762.307-.729a.871.871,0,0,1,.874-.614.9.9,0,0,1,.937.614l.363.868,2.972,7.624H51.571L50.691,60.7h-4L45.8,63.08ZM50.324,59.7l-1.643-4.44-1.63,4.44ZM69.583,63.08l3-7.762.3-.729a.877.877,0,0,1,.878-.614.9.9,0,0,1,.937.614l.366.868,2.966,7.624H76.666L75.775,60.7h-4l-.884,2.379ZM75.409,59.7l-1.636-4.44L72.14,59.7Zm15.96,3.378,3-7.762.3-.729a.873.873,0,0,1,.874-.614.889.889,0,0,1,.934.614l.366.868,2.966,7.624H98.442L97.561,60.7h-4l-.891,2.379ZM97.2,59.7l-1.643-4.44L93.929,59.7ZM119.99,63.08l2.992-7.762.307-.729a.871.871,0,0,1,.874-.614.9.9,0,0,1,.94.614l.36.868,2.969,7.624H127.07l-.891-2.379h-3.995L121.3,63.08Zm5.832-3.378-1.649-4.44L122.55,59.7Zm4.054,3.378V54.865c0-.65.165-.9.643-.9h2.032a3.527,3.527,0,0,1,2.6.7,2.268,2.268,0,0,1,.759,1.752,1.943,1.943,0,0,1-1.554,2,1.975,1.975,0,0,1,1.861,2.035,2.4,2.4,0,0,1-.726,1.791c-.934.874-2.154.848-3.9.848h-1.719Zm4.724-6.644a1.369,1.369,0,0,0-.376-1.009,3.125,3.125,0,0,0-2.24-.492h-.845V58h.746a3.518,3.518,0,0,0,2.263-.508A1.3,1.3,0,0,0,134.6,56.436Zm.29,4.031a1.362,1.362,0,0,0-.439-1.023,3.64,3.64,0,0,0-2.514-.508h-.8V62.08h1.079a2.952,2.952,0,0,0,2.256-.574A1.5,1.5,0,0,0,134.892,60.467Zm6.938-6.505h2.679a3.531,3.531,0,0,1,2.6.7,2.282,2.282,0,0,1,.762,1.752,1.942,1.942,0,0,1-1.557,2,1.972,1.972,0,0,1,1.857,2.035,2.414,2.414,0,0,1-.722,1.791c-.937.874-2.151.848-3.9.848h-1.715V53.961Zm4.724,2.474a1.394,1.394,0,0,0-.373-1.009,3.108,3.108,0,0,0-2.237-.492H143.1V58h.742a3.547,3.547,0,0,0,2.273-.508A1.3,1.3,0,0,0,146.553,56.436Zm.3,4.031a1.35,1.35,0,0,0-.439-1.023,3.64,3.64,0,0,0-2.514-.508h-.8V62.08h1.079c1.138,0,1.732-.082,2.253-.574A1.49,1.49,0,0,0,146.85,60.467ZM21.386,56.244c0-1.435,1.224-2.441,2.982-2.464a5.629,5.629,0,0,1,2.085.442c.472.181.277,1.046-.244.878-.445-.106-.4-.106-.878-.2a3.156,3.156,0,0,0-.7-.079c-1.181,0-1.94.492-1.94,1.31,0,.864.858,1.138,1.818,1.6.858.412,2.761,1.079,2.761,2.873,0,1.5-1.174,2.666-3.183,2.666a4.922,4.922,0,0,1-2.982-.983l.63-.845a4.376,4.376,0,0,0,2.3.779c1.194,0,1.89-.67,1.89-1.5,0-1-1.234-1.488-2.283-1.969C22.406,58.187,21.386,57.584,21.386,56.244Z" transform="translate(0 -36.042)" fill="#3d4543"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="42.237" height="42.237" viewBox="0 0 42.237 42.237">
<path id="alert_icon" d="M24.494,3.375A21.119,21.119,0,1,0,45.612,24.494,21.115,21.115,0,0,0,24.494,3.375ZM26.24,14.5l-.315,11.686a1.453,1.453,0,0,1-1.432,1.5h0a1.453,1.453,0,0,1-1.432-1.5L22.747,14.5a1.749,1.749,0,0,1,1.746-1.787h0A1.749,1.749,0,0,1,26.24,14.5ZM24.494,34.444a1.869,1.869,0,1,1,1.939-1.868A1.886,1.886,0,0,1,24.494,34.444Z" transform="translate(-3.375 -3.375)" fill="#fff"/>
</svg>

Before

Width:  |  Height:  |  Size: 501 B

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Artwork" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="165.52107px" height="105.9651px" viewBox="0 0 165.52107 105.9651"
enable-background="new 0 0 165.52107 105.9651" xml:space="preserve">
<g>
<path id="XMLID_4_" d="M150.69807,0H14.82318c-0.5659,0-1.1328,0-1.69769,0.0033c-0.47751,0.0034-0.95391,0.0087-1.43031,0.0217
c-1.039,0.0281-2.0869,0.0894-3.1129,0.2738c-1.0424,0.1876-2.0124,0.4936-2.9587,0.9754
c-0.9303,0.4731-1.782,1.0919-2.52009,1.8303c-0.73841,0.7384-1.35721,1.5887-1.83021,2.52
c-0.4819,0.9463-0.7881,1.9166-0.9744,2.9598c-0.18539,1.0263-0.2471,2.074-0.2751,3.1119
c-0.0128,0.4764-0.01829,0.9528-0.0214,1.4291c-0.0033,0.5661-0.0022,1.1318-0.0022,1.6989V91.142
c0,0.5671-0.0011,1.13181,0.0022,1.69901c0.00311,0.4763,0.0086,0.9527,0.0214,1.4291
c0.028,1.03699,0.08971,2.08469,0.2751,3.11069c0.1863,1.0436,0.4925,2.0135,0.9744,2.9599
c0.473,0.9313,1.0918,1.7827,1.83021,2.52c0.73809,0.7396,1.58979,1.3583,2.52009,1.8302
c0.9463,0.4831,1.9163,0.7892,2.9587,0.9767c1.026,0.1832,2.0739,0.2456,3.1129,0.2737c0.4764,0.0108,0.9528,0.0172,1.43031,0.0194
c0.56489,0.0044,1.13179,0.0044,1.69769,0.0044h135.87489c0.5649,0,1.13181,0,1.69659-0.0044
c0.47641-0.0022,0.95282-0.0086,1.4314-0.0194c1.0368-0.0281,2.0845-0.0905,3.11301-0.2737
c1.041-0.1875,2.0112-0.4936,2.9576-0.9767c0.9313-0.4719,1.7805-1.0906,2.52011-1.8302c0.7372-0.7373,1.35599-1.5887,1.8302-2.52
c0.48299-0.9464,0.78889-1.9163,0.97429-2.9599c0.1855-1.026,0.2457-2.0737,0.2738-3.11069
c0.013-0.4764,0.01941-0.9528,0.02161-1.4291c0.00439-0.5672,0.00439-1.1319,0.00439-1.69901V14.8242
c0-0.5671,0-1.1328-0.00439-1.6989c-0.0022-0.4763-0.00861-0.9527-0.02161-1.4291c-0.02811-1.0379-0.0883-2.0856-0.2738-3.1119
c-0.18539-1.0432-0.4913-2.0135-0.97429-2.9598c-0.47421-0.9313-1.093-1.7816-1.8302-2.52
c-0.73961-0.7384-1.58881-1.3572-2.52011-1.8303c-0.9464-0.4818-1.9166-0.7878-2.9576-0.9754
c-1.0285-0.1844-2.0762-0.2457-3.11301-0.2738c-0.47858-0.013-0.95499-0.0183-1.4314-0.0217C151.82988,0,151.26297,0,150.69807,0
L150.69807,0z"/>
<path id="XMLID_3_" fill="#FFFFFF" d="M150.69807,3.532l1.67149,0.0032c0.4528,0.0032,0.90561,0.0081,1.36092,0.0205
c0.79201,0.0214,1.71849,0.0643,2.58209,0.2191c0.7507,0.1352,1.38029,0.3408,1.9845,0.6484
c0.5965,0.3031,1.14301,0.7003,1.62019,1.1768c0.479,0.4797,0.87671,1.0271,1.18381,1.6302
c0.30589,0.5995,0.51019,1.2261,0.64459,1.9823c0.1544,0.8542,0.1971,1.7832,0.21881,2.5801
c0.01219,0.4498,0.01819,0.8996,0.0204,1.3601c0.00429,0.5569,0.0042,1.1135,0.0042,1.6715V91.142
c0,0.558,0.00009,1.1136-0.0043,1.6824c-0.00211,0.4497-0.0081,0.8995-0.0204,1.3501c-0.02161,0.7957-0.0643,1.7242-0.2206,2.5885
c-0.13251,0.7458-0.3367,1.3725-0.64429,1.975c-0.30621,0.6016-0.70331,1.1484-1.18022,1.6251
c-0.47989,0.48-1.0246,0.876-1.62819,1.1819c-0.5997,0.3061-1.22821,0.51151-1.97151,0.6453
c-0.88109,0.157-1.84639,0.2002-2.57339,0.2199c-0.4574,0.0103-0.9126,0.01649-1.37889,0.0187
c-0.55571,0.0043-1.1134,0.0042-1.6692,0.0042H14.82318c-0.0074,0-0.0146,0-0.0221,0c-0.5494,0-1.0999,0-1.6593-0.0043
c-0.4561-0.00211-0.9112-0.0082-1.3512-0.0182c-0.7436-0.0201-1.7095-0.0632-2.5834-0.2193
c-0.74969-0.1348-1.3782-0.3402-1.9858-0.6503c-0.59789-0.3032-1.1422-0.6988-1.6223-1.1797
c-0.4764-0.4756-0.8723-1.0207-1.1784-1.6232c-0.3064-0.6019-0.5114-1.2305-0.64619-1.9852
c-0.15581-0.8626-0.19861-1.7874-0.22-2.5777c-0.01221-0.4525-0.01731-0.9049-0.02021-1.3547l-0.0022-1.3279l0.0001-0.3506V14.8242
l-0.0001-0.3506l0.0021-1.3251c0.003-0.4525,0.0081-0.9049,0.02031-1.357c0.02139-0.7911,0.06419-1.7163,0.22129-2.5861
c0.1336-0.7479,0.3385-1.3765,0.6465-1.9814c0.3037-0.5979,0.7003-1.1437,1.17921-1.6225
c0.477-0.4772,1.02309-0.8739,1.62479-1.1799c0.6011-0.3061,1.2308-0.5116,1.9805-0.6465c0.8638-0.1552,1.7909-0.198,2.5849-0.2195
c0.4526-0.0123,0.9052-0.0172,1.3544-0.0203l1.6771-0.0033H150.69807"/>
<g>
<g>
<path d="M45.1862,35.64053c1.41724-1.77266,2.37897-4.15282,2.12532-6.58506c-2.07464,0.10316-4.60634,1.36871-6.07207,3.14276
c-1.31607,1.5192-2.4809,3.99902-2.17723,6.3293C41.39111,38.72954,43.71785,37.36345,45.1862,35.64053"/>
<path d="M47.28506,38.98252c-3.38211-0.20146-6.25773,1.91951-7.87286,1.91951c-1.61602,0-4.08931-1.81799-6.76438-1.76899
c-3.48177,0.05114-6.71245,2.01976-8.4793,5.15079c-3.63411,6.2636-0.95904,15.55471,2.57494,20.65606
c1.71618,2.5238,3.78447,5.30269,6.50976,5.20287c2.57494-0.10104,3.58421-1.66732,6.71416-1.66732
c3.12765,0,4.03679,1.66732,6.76252,1.61681c2.82665-0.05054,4.59381-2.52506,6.30997-5.05132
c1.96878-2.877,2.77473-5.65498,2.82542-5.80748c-0.0507-0.05051-5.45058-2.12204-5.50065-8.33358
c-0.05098-5.20101,4.23951-7.6749,4.44144-7.82832C52.3832,39.4881,48.5975,39.08404,47.28506,38.98252"/>
</g>
<g>
<path d="M76.73385,31.94381c7.35096,0,12.4697,5.06708,12.4697,12.44437c0,7.40363-5.22407,12.49704-12.65403,12.49704h-8.13892
v12.94318h-5.88037v-37.8846H76.73385z M68.41059,51.9493h6.74732c5.11975,0,8.0336-2.75636,8.0336-7.53479
c0-4.77792-2.91385-7.50845-8.00727-7.50845h-6.77365V51.9493z"/>
<path d="M90.73997,61.97864c0-4.8311,3.70182-7.79761,10.26583-8.16526l7.56061-0.44614v-2.12639
c0-3.07185-2.07423-4.90959-5.53905-4.90959c-3.28251,0-5.33041,1.57492-5.82871,4.04313h-5.35574
c0.31499-4.98859,4.56777-8.66407,11.3941-8.66407c6.69466,0,10.97377,3.54432,10.97377,9.08388v19.03421h-5.43472v-4.54194
h-0.13065c-1.60125,3.07185-5.09341,5.01441-8.71623,5.01441C94.52078,70.30088,90.73997,66.94038,90.73997,61.97864z
M108.56641,59.4846v-2.17905l-6.8,0.41981c-3.38683,0.23649-5.30306,1.73291-5.30306,4.09579
c0,2.41504,1.99523,3.99046,5.04075,3.99046C105.46823,65.81161,108.56641,63.08108,108.56641,59.4846z"/>
<path d="M119.34167,79.9889v-4.5946c0.4193,0.10483,1.36425,0.10483,1.83723,0.10483c2.6252,0,4.04313-1.10245,4.90908-3.9378
c0-0.05267,0.49931-1.68025,0.49931-1.70658l-9.97616-27.64562h6.14268l6.98432,22.47371h0.10432l6.98433-22.47371h5.9857
l-10.34483,29.06304c-2.36186,6.69517-5.0924,8.84789-10.81577,8.84789C121.17891,80.12006,119.76098,80.06739,119.34167,79.9889
z"/>
</g>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26">
<g id="check_icon" transform="translate(-17 -71)">
<circle id="Ellipse_331" data-name="Ellipse 331" cx="13" cy="13" r="13" transform="translate(17 71)" fill="#fff"/>
<g id="Group_743" data-name="Group 743" transform="translate(-141 -256.936)">
<path id="Icon_awesome-check-circle" data-name="Icon awesome-check-circle" d="M26.4,13.481A12.918,12.918,0,1,1,13.481.563,12.918,12.918,0,0,1,26.4,13.481Zm-14.413,6.84,9.585-9.585a.833.833,0,0,0,0-1.179L20.393,8.379a.833.833,0,0,0-1.179,0L11.4,16.2,7.748,12.546a.834.834,0,0,0-1.179,0L5.391,13.725a.833.833,0,0,0,0,1.179l5.417,5.417a.833.833,0,0,0,1.179,0Z" transform="translate(157.438 327.373)" fill="#6ea231"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 781 B

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<path id="Icon_ionic-ios-checkmark-circle" data-name="Icon ionic-ios-checkmark-circle" d="M12.375,3.375a9,9,0,1,0,9,9A9,9,0,0,0,12.375,3.375Zm4.608,6.512L11.2,15.7h0a.781.781,0,0,1-.5.238.757.757,0,0,1-.506-.247L7.763,13.266a.172.172,0,0,1,0-.247l.77-.77a.167.167,0,0,1,.242,0L10.7,14.171l5.279-5.318A.171.171,0,0,1,16.1,8.8h0a.157.157,0,0,1,.121.052l.757.783A.171.171,0,0,1,16.983,9.887Z" transform="translate(-3.375 -3.375)" fill="#15c940"/>
</svg>

Before

Width:  |  Height:  |  Size: 537 B

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="56.51" height="31.023" viewBox="0 0 56.51 31.023">
<g id="liveCare_logo_icon" transform="translate(-4445.84 -21739.203)">
<path id="Subtraction_64" data-name="Subtraction 64" d="M811.541,968.522h-4.912a6.163,6.163,0,0,1-2.422-.493,6.3,6.3,0,0,1-3.326-3.322,6.123,6.123,0,0,1-.492-2.414V943.726a6.134,6.134,0,0,1,.492-2.42,6.294,6.294,0,0,1,3.321-3.318,6.138,6.138,0,0,1,2.415-.49h23.025a6.137,6.137,0,0,1,2.42.492,6.291,6.291,0,0,1,3.318,3.322,6.146,6.146,0,0,1,.491,2.415v4.578a5.135,5.135,0,0,0,0,9.609v4.366a6.161,6.161,0,0,1-.484,2.423,6.279,6.279,0,0,1-3.314,3.326,6.138,6.138,0,0,1-2.419.492h-5.383a16.214,16.214,0,0,0,1.754-1.74,1.622,1.622,0,0,0,.358-1.281,23.673,23.673,0,0,0,3.34-6.283,22.887,22.887,0,0,0,.909-3.31,16.559,16.559,0,0,0,.317-3.107,10.971,10.971,0,0,0-.49-3.594,4.693,4.693,0,0,0-1.415-2.113,6.726,6.726,0,0,0-2.252-1.177c-.887-.3-1.911-.533-3-.781h0l-.007-.011a1.676,1.676,0,0,0-1.5-.951,1.7,1.7,0,1,0,0,3.4,1.636,1.636,0,0,0,1-.375l.04.015.011,0,.027.006c1.083.25,1.938.446,2.648.677a4.637,4.637,0,0,1,1.688.861,2.889,2.889,0,0,1,.875,1.486,9.923,9.923,0,0,1,.251,2.558,14.326,14.326,0,0,1-.292,2.753,20.686,20.686,0,0,1-.83,2.96,23.036,23.036,0,0,1-1.294,2.939,20.4,20.4,0,0,1-1.688,2.689,1.624,1.624,0,0,0-1.12.542,11.511,11.511,0,0,1-2.422,2.162,5.57,5.57,0,0,1-6.528.009,11.419,11.419,0,0,1-2.42-2.151,1.625,1.625,0,0,0-1.118-.542,20.374,20.374,0,0,1-1.692-2.7,23.179,23.179,0,0,1-1.3-2.945,20.645,20.645,0,0,1-.832-2.964A14.367,14.367,0,0,1,807,952.8a10.047,10.047,0,0,1,.248-2.559,2.876,2.876,0,0,1,.872-1.486,4.6,4.6,0,0,1,1.689-.861c.718-.232,1.622-.439,2.668-.678l.024-.005.006,0,.016-.014a1.68,1.68,0,0,0,1.022.377,1.7,1.7,0,1,0,0-3.4,1.651,1.651,0,0,0-.9.269,1.848,1.848,0,0,0-.617.681l0,0-.022.005c-4.457,1.028-7.146,1.649-7.146,7.674a16.585,16.585,0,0,0,.318,3.11,22.827,22.827,0,0,0,.914,3.316,23.494,23.494,0,0,0,3.365,6.294,1.612,1.612,0,0,0,.359,1.28,16.389,16.389,0,0,0,1.734,1.72h0Zm44.314-3.244h-2.52a2.17,2.17,0,0,1-1.127-.327l-10.483-6.616a1.036,1.036,0,0,1-.485-.873V956.8a5.128,5.128,0,0,0,0-7.39v-1.163a1.037,1.037,0,0,1,.485-.873l10.483-6.616a2.075,2.075,0,0,1,1.127-.327h2.521a1.038,1.038,0,0,1,1.042,1.03V964.25a1.019,1.019,0,0,1-.3.728,1.042,1.042,0,0,1-.739.3Z" transform="translate(3645.452 20801.705)" fill="#515a5d"/>
<g id="Group_748" data-name="Group 748">
<path id="Subtraction_64-2" data-name="Subtraction 64" d="M817.125,958.4l-1.683-.007-.532,0h-.005l0-1.741c0-.3.147-.536.35-.55l.917,0c.2-.013.35-.245.35-.552l0-.4c0-.3-.152-.545-.354-.558l-.916,0c-.2-.014-.35-.247-.35-.553l0-1.734h2.235c.2,0,.362.218.371.516l0,1.41c.009.3.166.518.373.518l.466,0c.2,0,.359-.221.369-.526V952.84c.009-.3.171-.528.377-.528h1.54a.932.932,0,0,0,.7-.439l0,2.171c0,.31-.144.545-.344.558l-.916,0c-.2,0-.362.219-.371.521l0,.47c.009.3.163.521.369.521l.911,0c.2.013.352.242.352.544l0,1.739-2.267-.005c-.2,0-.342-.2-.351-.511l0-1.414c0-.305-.148-.536-.352-.549l-.516,0c-.2.013-.343.238-.343.548l0,1.407C817.495,958.177,817.332,958.4,817.125,958.4Z" transform="translate(3645.452 20801.705)" fill="#fff"/>
<path id="Subtraction_64-3" data-name="Subtraction 64" d="M814.517,950.857a.923.923,0,0,0-.928.88V959a.918.918,0,0,0,.927.877h7.157A.923.923,0,0,0,822.6,959v-7.251a.887.887,0,0,0-.282-.625.975.975,0,0,0-.654-.265Zm2.608,7.544-1.683-.007-.532,0h-.005l0-1.741c0-.3.147-.536.35-.55l.917,0c.2-.013.35-.245.35-.552l0-.4c0-.3-.152-.545-.354-.558l-.916,0c-.2-.014-.35-.247-.35-.553l0-1.734h2.235c.2,0,.362.218.371.516l0,1.41c.009.3.166.518.373.518l.466,0c.2,0,.359-.221.369-.526V952.84c.009-.3.171-.528.377-.528h1.54a.932.932,0,0,0,.7-.439l0,2.171c0,.31-.144.545-.344.558l-.916,0c-.2,0-.362.219-.371.521l0,.47c.009.3.163.521.369.521l.911,0c.2.013.352.242.352.544l0,1.739-2.267-.005c-.2,0-.342-.2-.351-.511l0-1.414c0-.305-.148-.536-.352-.549l-.516,0c-.2.013-.343.238-.343.548l0,1.407C817.495,958.177,817.332,958.4,817.125,958.4Z" transform="translate(3645.452 20801.705)" fill="#b8382c"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="56.51" height="31.024" viewBox="0 0 56.51 31.024">
<g id="liveCare_logo_icon_white" transform="translate(-30.848 -483.404)">
<path id="Subtraction_64" data-name="Subtraction 64" d="M811.541,968.522h-4.912a6.163,6.163,0,0,1-2.422-.493,6.3,6.3,0,0,1-3.326-3.322,6.123,6.123,0,0,1-.492-2.414V943.726a6.134,6.134,0,0,1,.492-2.42,6.294,6.294,0,0,1,3.321-3.318,6.138,6.138,0,0,1,2.415-.49h23.025a6.137,6.137,0,0,1,2.42.492,6.291,6.291,0,0,1,3.318,3.322,6.146,6.146,0,0,1,.491,2.415v4.578a5.135,5.135,0,0,0,0,9.609v4.366a6.161,6.161,0,0,1-.484,2.423,6.279,6.279,0,0,1-3.314,3.326,6.138,6.138,0,0,1-2.419.492h-5.383a16.214,16.214,0,0,0,1.754-1.74,1.622,1.622,0,0,0,.358-1.281,23.673,23.673,0,0,0,3.34-6.283,22.887,22.887,0,0,0,.909-3.31,16.559,16.559,0,0,0,.317-3.107,10.971,10.971,0,0,0-.49-3.594,4.693,4.693,0,0,0-1.415-2.113,6.726,6.726,0,0,0-2.252-1.177c-.887-.3-1.911-.533-3-.781h0l-.007-.011a1.676,1.676,0,0,0-1.5-.951,1.7,1.7,0,1,0,0,3.4,1.636,1.636,0,0,0,1-.375l.04.015.011,0,.027.006c1.083.25,1.938.446,2.648.677a4.637,4.637,0,0,1,1.688.861,2.889,2.889,0,0,1,.875,1.486,9.923,9.923,0,0,1,.251,2.558,14.326,14.326,0,0,1-.292,2.753,20.686,20.686,0,0,1-.83,2.96,23.036,23.036,0,0,1-1.294,2.939,20.4,20.4,0,0,1-1.688,2.689,1.624,1.624,0,0,0-1.12.542,11.511,11.511,0,0,1-2.422,2.162,5.57,5.57,0,0,1-6.528.009,11.419,11.419,0,0,1-2.42-2.151,1.625,1.625,0,0,0-1.118-.542,20.374,20.374,0,0,1-1.692-2.7,23.179,23.179,0,0,1-1.3-2.945,20.645,20.645,0,0,1-.832-2.964A14.367,14.367,0,0,1,807,952.8a10.047,10.047,0,0,1,.248-2.559,2.876,2.876,0,0,1,.872-1.486,4.6,4.6,0,0,1,1.689-.861c.718-.232,1.622-.439,2.668-.678l.024-.005.006,0,.016-.014a1.68,1.68,0,0,0,1.022.377,1.7,1.7,0,1,0,0-3.4,1.651,1.651,0,0,0-.9.269,1.848,1.848,0,0,0-.617.681l0,0-.022.005c-4.457,1.028-7.146,1.649-7.146,7.674a16.585,16.585,0,0,0,.318,3.11,22.827,22.827,0,0,0,.914,3.316,23.494,23.494,0,0,0,3.365,6.294,1.612,1.612,0,0,0,.359,1.28,16.389,16.389,0,0,0,1.734,1.72h0Zm2.975-17.665a.923.923,0,0,0-.928.88V959a.918.918,0,0,0,.927.877h7.157A.923.923,0,0,0,822.6,959v-7.251a.887.887,0,0,0-.282-.625.975.975,0,0,0-.654-.265Zm41.339,14.421h-2.52a2.17,2.17,0,0,1-1.127-.327l-10.483-6.616a1.036,1.036,0,0,1-.485-.873V956.8a5.128,5.128,0,0,0,0-7.39v-1.163a1.037,1.037,0,0,1,.485-.873l10.483-6.616a2.075,2.075,0,0,1,1.127-.327h2.521a1.038,1.038,0,0,1,1.042,1.03V964.25a1.019,1.019,0,0,1-.3.728,1.042,1.042,0,0,1-.739.3Zm-38.73-6.877-1.683-.007-.532,0h-.005l0-1.741c0-.3.147-.536.35-.55l.917,0c.2-.013.35-.245.35-.552l0-.4c0-.3-.152-.545-.354-.558l-.916,0c-.2-.014-.35-.247-.35-.553l0-1.734h2.235c.2,0,.362.218.371.516l0,1.41c.009.3.166.518.373.518l.466,0c.2,0,.359-.221.369-.526V952.84c.009-.3.171-.528.377-.528h1.54a.932.932,0,0,0,.7-.439l0,2.171c0,.31-.144.545-.344.558l-.916,0c-.2,0-.362.219-.371.521l0,.47c.009.3.163.521.369.521l.911,0c.2.013.352.242.352.544l0,1.739-2.267-.005c-.2,0-.342-.2-.351-.511l0-1.414c0-.305-.148-.536-.352-.549l-.516,0c-.2.013-.343.238-.343.548l0,1.407C817.495,958.177,817.332,958.4,817.125,958.4Z" transform="translate(-769.54 -454.094)" fill="#fff"/>
<path id="Path_663" data-name="Path 663" d="M971.268,998.3a2.982,2.982,0,1,1-2.982,2.982h0A2.982,2.982,0,0,1,971.268,998.3Z" transform="translate(-903.129 -502.474)" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

@ -1,195 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="121.664" height="196.795" viewBox="0 0 121.664 196.795">
<defs>
<linearGradient id="linear-gradient" x1="0.5" y1="0.005" x2="0.5" y2="1.005" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#231f20"/>
<stop offset="0.018" stop-color="#272324"/>
<stop offset="0.315" stop-color="#666669"/>
<stop offset="0.453" stop-color="#808184"/>
<stop offset="0.559" stop-color="#737376"/>
<stop offset="0.757" stop-color="#525153"/>
<stop offset="1" stop-color="#231f20"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="0.5" y1="-0.006" x2="0.5" y2="0.998" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-3" x1="0.5" y1="0.006" x2="0.5" y2="0.998" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-4" x1="0.5" y1="0" x2="0.5" y2="1.013" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-5" x1="0" y1="0.5" x2="1" y2="0.5" xlink:href="#linear-gradient"/>
<linearGradient id="linear-gradient-6" x1="0.695" y1="0.5" x2="1.068" y2="0.5" gradientUnits="objectBoundingBox">
<stop offset="0" stop-opacity="0"/>
<stop offset="0.202" stop-color="#3d3d3d" stop-opacity="0.239"/>
<stop offset="0.493" stop-color="#8f8f8f" stop-opacity="0.561"/>
<stop offset="0.733" stop-color="#cbcbcb" stop-opacity="0.8"/>
<stop offset="0.908" stop-color="#f0f0f0" stop-opacity="0.945"/>
<stop offset="1" stop-color="#fff"/>
</linearGradient>
<linearGradient id="linear-gradient-7" x1="705.532" y1="0.5" x2="705.905" y2="0.5" xlink:href="#linear-gradient-6"/>
<linearGradient id="linear-gradient-8" x1="0.5" y1="1.037" x2="0.5" y2="-0.016" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#4d4d4d"/>
<stop offset="0.069" stop-color="#434343"/>
<stop offset="0.309" stop-color="#252525"/>
<stop offset="0.547" stop-color="#101010"/>
<stop offset="0.779" stop-color="#040404"/>
<stop offset="1"/>
</linearGradient>
<linearGradient id="linear-gradient-9" x1="0.893" y1="0.893" x2="0.148" y2="0.148" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#4d4d4d"/>
<stop offset="1"/>
</linearGradient>
<linearGradient id="linear-gradient-10" x1="0.893" y1="0.893" x2="0.148" y2="0.148" gradientUnits="objectBoundingBox">
<stop offset="0"/>
<stop offset="1" stop-color="#4d4d4d"/>
</linearGradient>
<linearGradient id="linear-gradient-11" x1="0.132" y1="0.132" x2="0.932" y2="0.932" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#0058ee"/>
<stop offset="0.694" stop-opacity="0"/>
</linearGradient>
<radialGradient id="radial-gradient" cx="0.542" cy="0.999" r="0.5" gradientTransform="translate(0)" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#0058ee"/>
<stop offset="0.86" stop-opacity="0"/>
</radialGradient>
<radialGradient id="radial-gradient-2" cx="0.974" cy="0.343" r="0.328" gradientTransform="translate(0)" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#0058ee"/>
<stop offset="0.704" stop-opacity="0"/>
</radialGradient>
<radialGradient id="radial-gradient-3" cx="0.193" cy="0.669" r="0.498" gradientTransform="translate(0)" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#fff"/>
<stop offset="0.148" stop-color="#bdbdbd" stop-opacity="0.741"/>
<stop offset="0.295" stop-color="#838383" stop-opacity="0.514"/>
<stop offset="0.435" stop-color="#545454" stop-opacity="0.329"/>
<stop offset="0.568" stop-color="#2f2f2f" stop-opacity="0.188"/>
<stop offset="0.691" stop-color="#151515" stop-opacity="0.082"/>
<stop offset="0.801" stop-color="#050505" stop-opacity="0.024"/>
<stop offset="0.887" stop-opacity="0"/>
</radialGradient>
</defs>
<g id="liveCare_mobile_care" transform="translate(-115.509 -31.301)">
<g id="doctor_video" transform="translate(84.695 -145.672)">
<g id="Group_96" data-name="Group 96" transform="translate(42.155 176.973)">
<path id="Rectangle_66" data-name="Rectangle 66" d="M1.971,0H2.1a0,0,0,0,1,0,0V24.682a0,0,0,0,1,0,0H1.971A1.971,1.971,0,0,1,0,22.711V1.971A1.971,1.971,0,0,1,1.971,0Z" transform="translate(101.754 68.532) rotate(180)" fill="url(#linear-gradient)"/>
<path id="Rectangle_67" data-name="Rectangle 67" d="M1.971,0H2.1a0,0,0,0,1,0,0V8.27a0,0,0,0,1,0,0H1.971A1.971,1.971,0,0,1,0,6.3V1.971A1.971,1.971,0,0,1,1.971,0Z" transform="translate(0 26.918)" fill="url(#linear-gradient-2)"/>
<path id="Rectangle_68" data-name="Rectangle 68" d="M1.971,0H2.1a0,0,0,0,1,0,0V15.585a0,0,0,0,1,0,0H1.971A1.971,1.971,0,0,1,0,13.614V1.971A1.971,1.971,0,0,1,1.971,0Z" transform="translate(0 38.929)" fill="url(#linear-gradient-3)"/>
<path id="Rectangle_69" data-name="Rectangle 69" d="M1.971,0H2.1a0,0,0,0,1,0,0V15.585a0,0,0,0,1,0,0H1.971A1.971,1.971,0,0,1,0,13.614V1.971A1.971,1.971,0,0,1,1.971,0Z" transform="translate(0 57.207)" fill="url(#linear-gradient-4)"/>
<rect id="Rectangle_70" data-name="Rectangle 70" width="99.517" height="194.072" rx="14" transform="translate(1.187)" fill="url(#linear-gradient-5)"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="190.255" height="95.7" rx="12" transform="translate(98.796 1.908) rotate(90)"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="186.439" height="91.884" rx="10" transform="translate(96.888 3.817) rotate(90)" fill="#fff"/>
<path id="Path_94" data-name="Path 94" d="M336.523,228V55.629a11.275,11.275,0,0,0-4.454-8.944,11.364,11.364,0,0,1,5.861,9.871V227.069a11.365,11.365,0,0,1-5.861,9.871A11.276,11.276,0,0,0,336.523,228Z" transform="translate(-238.23 -44.777)" fill="url(#linear-gradient-6)" style="mix-blend-mode: screen;isolation: isolate"/>
<path id="Path_95" data-name="Path 95" d="M158.169,224.967V55.48a11.027,11.027,0,0,1,4.454-8.795,11.149,11.149,0,0,0-5.861,9.706V224.055a11.148,11.148,0,0,0,5.862,9.706A11.025,11.025,0,0,1,158.169,224.967Z" transform="translate(-153.666 -43.187)" fill="url(#linear-gradient-7)" style="mix-blend-mode: screen;isolation: isolate"/>
<path id="Path_96" data-name="Path 96" d="M198.647,47.822a4.065,4.065,0,0,1,1.833,2.926c.254,2.29,1.145,5.089,4.9,5.089h39.309c3.753,0,4.644-2.8,4.9-5.089a4.065,4.065,0,0,1,1.833-2.926Z" transform="translate(-174.087 -43.741)"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="12.548" height="1.495" rx="0.747" transform="translate(44.672 6.593)" fill="url(#linear-gradient-8)"/>
<g id="Group_95" data-name="Group 95" transform="translate(59.906 5.647)">
<path id="Path_97" data-name="Path 97" d="M271.408,53.338a1.329,1.329,0,1,1-1.329-1.329A1.329,1.329,0,0,1,271.408,53.338Z" transform="translate(-268.17 -51.43)"/>
<path id="Path_98" data-name="Path 98" d="M271.436,52.787a1.908,1.908,0,1,1-1.908-1.908A1.908,1.908,0,0,1,271.436,52.787Z" transform="translate(-267.619 -50.879)" fill="url(#linear-gradient-9)"/>
<circle id="Ellipse_11" data-name="Ellipse 11" cx="1.561" cy="1.561" r="1.561" transform="translate(0.347 0.347)" fill="url(#linear-gradient-10)" style="mix-blend-mode: multiply;isolation: isolate"/>
<path id="Path_99" data-name="Path 99" d="M271.408,53.338a1.329,1.329,0,1,1-1.329-1.329A1.329,1.329,0,0,1,271.408,53.338Z" transform="translate(-268.17 -51.43)" fill="url(#linear-gradient-11)"/>
<path id="Path_100" data-name="Path 100" d="M271.408,53.338a1.329,1.329,0,1,1-1.329-1.329A1.329,1.329,0,0,1,271.408,53.338Z" transform="translate(-268.17 -51.43)" fill="url(#radial-gradient)"/>
<path id="Path_101" data-name="Path 101" d="M271.408,53.338a1.329,1.329,0,1,1-1.329-1.329A1.329,1.329,0,0,1,271.408,53.338Z" transform="translate(-268.17 -51.43)" fill="url(#radial-gradient-2)"/>
<path id="Path_102" data-name="Path 102" d="M271.408,53.338a1.329,1.329,0,1,1-1.329-1.329A1.329,1.329,0,0,1,271.408,53.338Z" transform="translate(-268.17 -51.43)" opacity="0.5" fill="url(#radial-gradient-3)" style="mix-blend-mode: screen;isolation: isolate"/>
</g>
</g>
<g id="Component_2_1" data-name="Component 2 1" transform="translate(30.815 229.371)">
<g id="Group_94" data-name="Group 94">
<path id="Path_40" data-name="Path 40" d="M360.944,286.973c-5.533-13.768-7.939-26.16-15.3-28.672-3.721-1.27-14.62-3.42-14.62-3.42L342.665,278.5s2.736,4.921,7.154,14.609c2.191,4.8,6.619,11,10.327,9.2,10.019-4.858,21.879-21.213,21.879-21.213l-7.811-9.367Z" transform="translate(-271.8 -193.407)" fill="#f0f1f1"/>
<g id="Group_88" data-name="Group 88">
<path id="Path_43" data-name="Path 43" d="M214.525,254.856l-15.489,5.823-.018,58.561,45.232.016.02-58.563-14.619-5.276Z" transform="translate(-179.723 -192.69)" fill="#517ade"/>
<path id="Path_44" data-name="Path 44" d="M273.748,291.173l-2.371,33.3,4.309,7.54,4.45-7.206-2.874-33.632Z" transform="translate(-233.38 -220.026)" fill="#ec1b2b"/>
<path id="Path_45" data-name="Path 45" d="M143.189,509.972s-6.447.263-7.325.809-.8,7.526-.29,9.877,2.708,3.954,4.018,3.923,3.24-.611,3.879-2.021.069-5.652.069-5.652.855,1.849,1.957,1.52.664-2.5.664-2.5Z" transform="translate(-132.399 -380.185)" fill="#ffba7f"/>
<path id="Path_46" data-name="Path 46" d="M273.309,261.729s-3.509.071-4.366,1.646c-1.89,3.48,2.659,6.461,2.659,6.461h3.515s3.761-2.7,2.7-5.319C276.957,262.411,273.309,261.729,273.309,261.729Z" transform="translate(-231.233 -199.397)" fill="#ec1b2b"/>
<g id="Group_68" data-name="Group 68" transform="translate(30.243 54.636)">
<path id="Path_47" data-name="Path 47" d="M241.373,239l5.43,7.5,6.6-6.5-11.034-7.2Z" transform="translate(-241.373 -232.811)" fill="#769ffc"/>
<path id="Path_48" data-name="Path 48" d="M286.388,240.024l6.6,6.506,4.939-7-.5-6.691Z" transform="translate(-274.752 -232.831)" fill="#769ffc"/>
</g>
<path id="Path_49" data-name="Path 49" d="M124.371,296.178c-.005,16.237.479,26.145.479,26.145l13.029-.573s-1.33-17.835-.334-28.437,6.418-14.836,6.418-14.836l11.642-23.624s-10.9,2.15-14.621,3.42C133.625,260.784,124.378,279.943,124.371,296.178Z" transform="translate(-124.371 -191.009)" fill="#f0f1f1"/>
<path id="Subtraction_74" data-name="Subtraction 74" d="M-4508.64-23497.707h-25.87v-.035h9.8v-.006a10.028,10.028,0,0,1-6.293-2.379,10,10,0,0,1-3.331-5.742l1-47.221,2.2-16.115,11.216-2.494,12.174,45.01-.893,28.98Z" transform="translate(4551 23635.543)" fill="#f0f1f1"/>
<path id="Path_51" data-name="Path 51" d="M223.947,247.472l-2.925,12.041,4.727,4.639-.431,3.645,14.13,24.688-12.8-47.582Z" transform="translate(-196.039 -186.166)" fill="#f0f1f1"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="10.056" height="1.326" transform="translate(21.671 126.088)" fill="#d0d2d3"/>
<path id="Path_52" data-name="Path 52" d="M304.914,257.379l-11.219-2.5-12.2,45,.023,28.983h26.728c-.123-20.4-1.143-55.365-1.143-55.365Z" transform="translate(-240.881 -191.029)" fill="#f0f1f1"/>
<path id="Path_53" data-name="Path 53" d="M289.815,447.579a.993.993,0,1,0,.991.995A.994.994,0,0,0,289.815,447.579Z" transform="translate(-246.313 -335.378)" fill="#d0d2d3"/>
<path id="Path_54" data-name="Path 54" d="M289.8,487.965a.993.993,0,1,0,.994.991A.993.993,0,0,0,289.8,487.965Z" transform="translate(-246.301 -363.866)" fill="#d0d2d3"/>
<path id="Path_57" data-name="Path 57" d="M325.508,497.02l10.054.005V495.7l-10.056,0Z" transform="translate(-273.518 -369.599)" fill="#d0d2d3"/>
<path id="Path_58" data-name="Path 58" d="M297.026,247.5l-2.7-2.573-12.832,47.575,15.635-24.681-1.918-3.644,4.73-4.636Z" transform="translate(-240.881 -186.187)" fill="#fff"/>
<g id="Group_76" data-name="Group 76" transform="translate(19.199 74.247)">
<g id="Group_71" data-name="Group 71" transform="translate(0.197 10.965)">
<g id="Group_69" data-name="Group 69">
<path id="Path_59" data-name="Path 59" d="M205.012,360.774c-1.245.187-2.8.138-3.343-.369a5,5,0,0,1-.92-2.8,106.438,106.438,0,0,1-.308-10.888l-1.029.012a106.479,106.479,0,0,0,.315,11.013c.226,1.548.507,2.762,1.279,3.451,1.107.882,2.8.758,4.143.6a15.863,15.863,0,0,0,1.956-.387l-.273-.99A15.339,15.339,0,0,1,205.012,360.774Z" transform="translate(-199.412 -346.718)" fill="#bbbdbf"/>
</g>
<g id="Group_70" data-name="Group 70" transform="translate(5.663 13.27)">
<path id="Path_60" data-name="Path 60" d="M222.414,398.1c-.694.149-1.178.642-1.079,1.105s.741.719,1.436.573,1.178-.644,1.08-1.107S223.11,397.952,222.414,398.1Z" transform="translate(-221.322 -398.058)" fill="#57585a"/>
</g>
</g>
<g id="Group_74" data-name="Group 74" transform="translate(11.737 8.862)">
<g id="Group_72" data-name="Group 72" transform="translate(0.695)">
<path id="Path_61" data-name="Path 61" d="M250.3,338.581l-1,.259a106.645,106.645,0,0,1,2.569,10.587,5.054,5.054,0,0,1-.152,2.945c-.387.628-1.879,1.087-3.132,1.232a15.488,15.488,0,0,1-1.847.133l0,1.028a16.214,16.214,0,0,0,1.986-.142c1.338-.2,3-.526,3.841-1.668.56-.869.514-2.112.325-3.665A106.734,106.734,0,0,0,250.3,338.581Z" transform="translate(-246.744 -338.581)" fill="#bbbdbf"/>
</g>
<g id="Group_73" data-name="Group 73" transform="translate(0 14.606)">
<path id="Path_62" data-name="Path 62" d="M245.294,395.09c-.709.04-1.262.458-1.236.931s.624.822,1.333.783,1.263-.459,1.236-.929S246,395.05,245.294,395.09Z" transform="translate(-244.057 -395.087)" fill="#57585a"/>
</g>
</g>
<g id="Group_75" data-name="Group 75">
<path id="Path_63" data-name="Path 63" d="M205.432,304.349c-4.6.659-7.41,5.882-6.664,11.52l1.332-.179a10.947,10.947,0,0,1,1.158-6.781,5.6,5.6,0,0,1,9.4-1.257,10.947,10.947,0,0,1,2.9,6.237l1.331-.178C214.125,308.074,210.042,303.774,205.432,304.349Z" transform="translate(-198.648 -304.297)" fill="#57585a"/>
</g>
</g>
<g id="Group_77" data-name="Group 77" transform="translate(24.343 55.196)">
<path id="Path_64" data-name="Path 64" d="M221.5,237.707a13.157,13.157,0,0,0-2.955,8.49,24.558,24.558,0,0,0,1.026,6.653l1.226-.391h0s-.236-.743-.48-1.908a21.837,21.837,0,0,1-.482-4.354,12.807,12.807,0,0,1,.2-2.384,12.96,12.96,0,0,1,2.481-5.32,7.342,7.342,0,0,1,3.216-2.664l-.31-1.247A8.362,8.362,0,0,0,221.5,237.707Z" transform="translate(-218.549 -234.581)" fill="#57585a"/>
</g>
<g id="Group_78" data-name="Group 78" transform="translate(52.614 55.275)">
<path id="Path_65" data-name="Path 65" d="M332.156,237.707a8.366,8.366,0,0,0-3.921-3.126l-.313,1.248a7.333,7.333,0,0,1,3.215,2.663,12.958,12.958,0,0,1,2.482,5.32,15.856,15.856,0,0,1,.2,2.811,72.4,72.4,0,0,1-.985,10.037l1.269.221v0a73,73,0,0,0,1-10.255,17.173,17.173,0,0,0-.225-3.046A14.216,14.216,0,0,0,332.156,237.707Z" transform="translate(-327.922 -234.581)" fill="#57585a"/>
</g>
<g id="Group_79" data-name="Group 79" transform="translate(52.176 77.679)">
<path id="Path_66" data-name="Path 66" d="M330.857,318.6a4.631,4.631,0,1,0,4.63,4.632A4.631,4.631,0,0,0,330.857,318.6Z" transform="translate(-326.227 -318.604)" fill="#929597"/>
<path id="Path_67" data-name="Path 67" d="M337.743,327.9a2.23,2.23,0,1,0,2.23,2.23A2.23,2.23,0,0,0,337.743,327.9Z" transform="translate(-333.113 -325.495)" fill="#d0d2d3"/>
</g>
<g id="Group_84" data-name="Group 84" transform="translate(17.722)">
<path id="Path_68" data-name="Path 68" d="M194.69,146.669c-2.216.645-1.7,3.973-1.705,5.211s1.853,5.626,3.1,6.107c3.148,1.222,3.152-3.369,3.152-3.369v-5.341S196.907,146.026,194.69,146.669Z" transform="translate(-192.934 -116.534)" fill="#ffba7f"/>
<path id="Path_69" data-name="Path 69" d="M361.351,146.879c-2.216-.644-4.542,2.6-4.542,2.6v5.343s-.005,4.734,3.146,3.373c1.223-.53,3.1-4.868,3.1-6.107S363.568,147.523,361.351,146.879Z" transform="translate(-314.451 -116.689)" fill="#ffba7f"/>
<path id="Path_70" data-name="Path 70" d="M235.581,56.349l-11.016,0c-8,0-14.477,8.449-14.482,18.879l0,14.367c0,10.43,10.866,17.741,14.47,18.891a18.466,18.466,0,0,0,11.017,0c3.786-1.117,14.479-8.45,14.485-18.878l0-14.369C250.055,64.809,243.578,56.352,235.581,56.349Z" transform="translate(-205.647 -49.62)" fill="#ffba7f"/>
<path id="Path_71" data-name="Path 71" d="M207.223,96.9c1.48-1.194,5.17-21.281,5.356-22.341l-6.315,2.013S205.933,97.936,207.223,96.9Z" transform="translate(-202.79 -63.123)" fill="#3b2314"/>
<path id="Path_72" data-name="Path 72" d="M346.508,79.451s3.74,20.535,4.9,21.514.872-18.364.872-18.364Z" transform="translate(-306.812 -66.752)" fill="#3b2314"/>
<path id="Path_81" data-name="Path 81" d="M231.116,31.361c-9.153-2.115-14.228,1.424-14.228,1.424a1.753,1.753,0,0,1-.307-2.461c-2.538.347-3.232,2.96-4.04,4.961a6.364,6.364,0,0,0-4.576.27,2.018,2.018,0,0,1-.154,3.384c-6.152,5.077-3.23,11-3.23,11s2.267,5.638,3.346,4.5c4.038-4.269,7.211-6.519,7.9-9.749,0,0,4.292,5.56,10.075,6.864,4.769,1.077,10.672,2,13.17,1.5-2.152-2.155-2.768-6.231-2.768-6.231s6.851,12.552,10.152,3.23C249.961,40.167,237.664,32.874,231.116,31.361Z" transform="translate(-201.057 -30.323)" fill="#3b2314"/>
</g>
</g>
<path id="Path_87" data-name="Path 87" d="M553.915,285.026l-1.436,1.881c-.369.473-2.109,1.293-1.363,2.007.908.868,2.02.9,2.372.524L556,286.655a1.442,1.442,0,0,0,.12-2.082C555.214,283.707,554.265,284.645,553.915,285.026Z" transform="translate(-434.868 -215.879)" fill="#ffba7f"/>
<g id="Group_92" data-name="Group 92" transform="translate(78.092 54.063)">
<g id="Group_91" data-name="Group 91" transform="translate(0)">
<rect id="Rectangle_48" data-name="Rectangle 48" width="40.331" height="52.975" transform="translate(0 4.683)" fill="#744c29"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="35.114" height="46.896" transform="translate(2.609 7.588)" fill="#fff"/>
<path id="Path_88" data-name="Path 88" d="M463.954,230.037H459.5v-2.148a1.306,1.306,0,0,0-1.305-1.306h-3.83a1.305,1.305,0,0,0-1.305,1.306v2.148h-4.454a1.306,1.306,0,0,0-1.306,1.306v2.914a1.306,1.306,0,0,0,1.306,1.306h15.348a1.306,1.306,0,0,0,1.306-1.306v-2.914A1.306,1.306,0,0,0,463.954,230.037Zm-7.674.311a1.27,1.27,0,1,1,1.27-1.27A1.271,1.271,0,0,1,456.28,230.348Z" transform="translate(-436.115 -226.583)" fill="#4b4b70"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="30.113" height="0.901" transform="translate(5.155 26.96)" fill="#929597"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="30.113" height="0.901" transform="translate(5.155 28.923)" fill="#bbbdbf"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="30.113" height="0.9" transform="translate(5.155 30.886)" fill="#bbbdbf"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="30.113" height="0.901" transform="translate(5.155 32.848)" fill="#bbbdbf"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="30.113" height="0.901" transform="translate(5.155 34.81)" fill="#bbbdbf"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="30.113" height="0.9" transform="translate(5.155 36.773)" fill="#bbbdbf"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="30.113" height="0.9" transform="translate(5.155 41.568)" fill="#929597"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="30.113" height="0.901" transform="translate(5.155 43.53)" fill="#bbbdbf"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="30.113" height="0.902" transform="translate(5.155 45.492)" fill="#bbbdbf"/>
<rect id="Rectangle_63" data-name="Rectangle 63" width="30.113" height="0.901" transform="translate(5.155 47.456)" fill="#bbbdbf"/>
<path id="Path_89" data-name="Path 89" d="M453.061,227.889v2.148h-4.454a1.306,1.306,0,0,0-1.306,1.306v2.914a1.306,1.306,0,0,0,1.306,1.306h7.674v-5.215a1.27,1.27,0,1,1,0-2.541v-1.224h-1.915A1.305,1.305,0,0,0,453.061,227.889Z" transform="translate(-436.115 -226.583)" fill="#5a5a7a"/>
</g>
</g>
<g id="Group_93" data-name="Group 93" transform="translate(117.143 73.867)">
<path id="Path_91" data-name="Path 91" d="M556.031,334.024l-.458.579a1.4,1.4,0,0,0-.061,2.007c.909.867,1.858-.073,2.209-.453l.4-.505a1.442,1.442,0,0,0,.121-2.082C557.329,332.7,556.38,333.644,556.031,334.024Z" transform="translate(-555.104 -325.739)" fill="#ffba7f"/>
<path id="Path_92" data-name="Path 92" d="M556.032,319.621l-.458.58a1.4,1.4,0,0,0-.061,2.007c.909.867,1.858-.072,2.209-.454l.4-.5a1.441,1.441,0,0,0,.12-2.081C557.331,318.3,556.383,319.239,556.032,319.621Z" transform="translate(-555.105 -315.058)" fill="#ffba7f"/>
<path id="Path_93" data-name="Path 93" d="M556.032,305.1l-.458.577a1.4,1.4,0,0,0-.061,2.008c.909.868,1.858-.073,2.209-.453l.4-.505a1.442,1.442,0,0,0,.12-2.082C557.331,303.782,556.383,304.722,556.032,305.1Z" transform="translate(-555.105 -304.293)" fill="#ffba7f"/>
</g>
</g>
<path id="Path_103" data-name="Path 103" d="M1.808,10.346s.433,0,.737,0l2.311.011c.276,0,.505-.293.518-.717l0-1.931c0-.411.184-.733.47-.752l.709-.006c.285.018.482.343.482.752l0,1.943c.013.423.205.7.483.7l3.11.008.006-2.387c0-.41-.2-.729-.484-.747L8.9,7.211c-.277,0-.494-.292-.506-.716l0-.645c.014-.423.232-.715.509-.715l1.257,0c.285-.019.472-.356.472-.765l0-2.978a1.267,1.267,0,0,1-.962.6L7.554,2c-.276,0-.505.3-.518.724V4.632c-.013.423-.229.722-.505.722l-.639,0c-.278,0-.5-.289-.511-.711l0-1.934C5.369,2.282,5.15,2,4.873,2H1.807V4.376c0,.411.192.739.479.759l1.257,0c.284.019.486.358.486.766l0,.551c0,.41-.194.739-.48.758l-1.259,0c-.286.02-.479.345-.479.754ZM12.371,1.228v9.949a1.265,1.265,0,0,1-1.279,1.2H1.273A1.26,1.26,0,0,1,0,11.175V1.208A1.264,1.264,0,0,1,1.275,0l9.81,0A1.289,1.289,0,0,1,12.371,1.228Z" transform="translate(89.913 64.991)" fill="#ed1c2b"/>
</g>
</g>
<g id="Group_454" data-name="Group 454" transform="translate(151.738 50.1)">
<g id="Online_Consultation" data-name="Online Consultation" transform="translate(13.859 24.855)" style="isolation: isolate">
<text id="Online_Consultation-2" data-name="Online Consultation" transform="translate(0 4)" fill="#b8382c" font-size="4" font-family="WorkSans-Bold, Work Sans" font-weight="700" style="isolation: isolate"><tspan x="0" y="0">Online Consultation</tspan></text>
</g>
<path id="Path_661" data-name="Path 661" d="M911.946,1140.331a6.093,6.093,0,0,1-2.657.471,4.669,4.669,0,0,1-4.929-5.057,5.006,5.006,0,0,1,5.229-5.272,5.3,5.3,0,0,1,2.357.428l-.3,1.072a4.4,4.4,0,0,0-2.014-.428c-2.357,0-3.9,1.5-3.9,4.114,0,2.443,1.414,4.029,3.858,4.029a5.082,5.082,0,0,0,2.1-.428Z" transform="translate(-877.541 -1116.196)" fill="#676767"/>
<path id="Path_555" data-name="Path 555" d="M541.855,1132.793h2.271v8.1h3.986v1.886h-6.257Z" transform="translate(-541.855 -1118.345)" fill="#515b5d"/>
<path id="Path_556" data-name="Path 556" d="M643.818,1176.574v-7.286h2.271v7.286Z" transform="translate(-636.275 -1152.14)" fill="#515b5d"/>
<path id="Path_557" data-name="Path 557" d="M690.333,1169.866l.986,3.386c.172.6.3,1.2.429,1.757h.043c.128-.6.257-1.157.386-1.757l.943-3.386h2.357l-2.7,7.286H690.5l-2.657-7.286Z" transform="translate(-677.046 -1152.675)" fill="#515b5d"/>
<path id="Path_558" data-name="Path 558" d="M798.9,1171.517c.086.943.986,1.371,2.057,1.371a5.86,5.86,0,0,0,2.014-.3l.3,1.543a7.125,7.125,0,0,1-2.615.428c-2.486,0-3.9-1.414-3.9-3.686a3.668,3.668,0,0,1,3.686-3.9c2.357,0,3.257,1.843,3.257,3.643a4.213,4.213,0,0,1-.086.9Zm2.657-1.543a1.311,1.311,0,0,0-1.286-1.457,1.521,1.521,0,0,0-1.414,1.457Z" transform="translate(-777.902 -1149.997)" fill="#515b5d"/>
<path id="Path_646" data-name="Path 646" d="M1023.725,1176.04l-.086-.9h-.043a2.645,2.645,0,0,1-2.186,1.072,2.037,2.037,0,0,1-2.186-2.057c0-1.757,1.543-2.7,4.329-2.657v-.129a1.488,1.488,0,0,0-1.629-1.672,3.866,3.866,0,0,0-1.886.514l-.3-.857a4.482,4.482,0,0,1,2.357-.643c2.186,0,2.743,1.5,2.743,2.957v2.7a10.005,10.005,0,0,0,.129,1.714h-1.243Zm-.215-3.643c-1.414-.043-3.043.214-3.043,1.629a1.147,1.147,0,0,0,1.243,1.243,1.823,1.823,0,0,0,1.757-1.2,1.517,1.517,0,0,0,.086-.429V1172.4Z" transform="translate(-983.907 -1151.606)" fill="#676767"/>
<path id="Path_647" data-name="Path 647" d="M1122.388,1171.088c0-.857,0-1.586-.043-2.229h1.157l.043,1.414h.043a2.155,2.155,0,0,1,1.972-1.586,1.194,1.194,0,0,1,.386.043v1.243a1.326,1.326,0,0,0-.429-.043,1.837,1.837,0,0,0-1.757,1.672,2.629,2.629,0,0,0-.043.6v3.857h-1.286v-4.972Z" transform="translate(-1079.399 -1151.582)" fill="#676767"/>
<path id="Path_648" data-name="Path 648" d="M1180.409,1171.625a2.312,2.312,0,0,0,2.486,2.486,4.418,4.418,0,0,0,1.972-.386l.214.943a5.808,5.808,0,0,1-2.4.429,3.354,3.354,0,0,1-3.557-3.643c0-2.186,1.286-3.9,3.386-3.9,2.357,0,2.958,2.057,2.958,3.386,0,.257-.043.471-.043.6h-5.015Zm3.814-.943a1.892,1.892,0,0,0-1.8-2.143,2.18,2.18,0,0,0-2.014,2.143Z" transform="translate(-1131.977 -1150.533)" fill="#676767"/>
<path id="Subtraction_64" data-name="Subtraction 64" d="M804.426,948.73h-1.779a2.23,2.23,0,0,1-.877-.178,2.283,2.283,0,0,1-1.2-1.2,2.216,2.216,0,0,1-.178-.874v-6.722a2.222,2.222,0,0,1,.178-.876,2.279,2.279,0,0,1,1.2-1.2,2.224,2.224,0,0,1,.874-.177h8.336a2.222,2.222,0,0,1,.876.178,2.277,2.277,0,0,1,1.2,1.2,2.225,2.225,0,0,1,.178.874v1.658a1.859,1.859,0,0,0,0,3.479v1.581a2.23,2.23,0,0,1-.175.877,2.273,2.273,0,0,1-1.2,1.2,2.221,2.221,0,0,1-.876.178h-1.949a5.867,5.867,0,0,0,.635-.63.587.587,0,0,0,.13-.464,8.57,8.57,0,0,0,1.209-2.275,8.28,8.28,0,0,0,.329-1.2,6,6,0,0,0,.115-1.125,3.973,3.973,0,0,0-.178-1.3,1.7,1.7,0,0,0-.512-.765,2.435,2.435,0,0,0-.815-.426c-.321-.108-.692-.193-1.085-.283h0l0,0a.607.607,0,0,0-.543-.344.616.616,0,1,0,0,1.231.592.592,0,0,0,.362-.136l.014.005h0l.01,0c.392.09.7.161.959.245a1.678,1.678,0,0,1,.611.312,1.046,1.046,0,0,1,.317.538,3.6,3.6,0,0,1,.091.926,5.187,5.187,0,0,1-.106,1,7.5,7.5,0,0,1-.3,1.072,8.343,8.343,0,0,1-.469,1.064,7.381,7.381,0,0,1-.611.974.588.588,0,0,0-.406.2,4.164,4.164,0,0,1-.877.783,2.016,2.016,0,0,1-2.363,0,4.136,4.136,0,0,1-.876-.779.588.588,0,0,0-.4-.2,7.389,7.389,0,0,1-.612-.976,8.392,8.392,0,0,1-.47-1.066,7.476,7.476,0,0,1-.3-1.073,5.2,5.2,0,0,1-.106-1,3.636,3.636,0,0,1,.09-.927,1.041,1.041,0,0,1,.316-.538,1.664,1.664,0,0,1,.612-.312c.26-.084.587-.159.966-.245l.009,0h0l.006-.005a.608.608,0,0,0,.37.136.616.616,0,1,0,0-1.231.6.6,0,0,0-.327.1.669.669,0,0,0-.224.246h0l-.008,0c-1.614.372-2.587.6-2.587,2.778a6,6,0,0,0,.115,1.126,8.257,8.257,0,0,0,.331,1.2,8.506,8.506,0,0,0,1.218,2.279.584.584,0,0,0,.13.463,5.938,5.938,0,0,0,.628.623h0Zm1.077-6.4a.334.334,0,0,0-.336.319v2.63a.332.332,0,0,0,.336.318h2.591a.334.334,0,0,0,.337-.318v-2.625a.321.321,0,0,0-.1-.226.353.353,0,0,0-.237-.1Zm14.967,5.221h-.912a.786.786,0,0,1-.408-.118l-3.8-2.4a.375.375,0,0,1-.175-.316v-.238a1.857,1.857,0,0,0,0-2.675v-.421a.375.375,0,0,1,.175-.316l3.8-2.4a.751.751,0,0,1,.408-.118h.913a.376.376,0,0,1,.377.373v8.249a.369.369,0,0,1-.11.264.377.377,0,0,1-.268.109Zm-14.022-2.49-.609,0h-.194v-.63c0-.11.053-.194.127-.2h.332c.073,0,.127-.089.127-.2v-.146c0-.11-.055-.2-.128-.2h-.332c-.073-.005-.127-.089-.127-.2v-.628h.809c.074,0,.131.079.134.187v.511c0,.109.06.188.135.188h.169c.074,0,.13-.08.134-.19v-.5c0-.109.062-.191.137-.191h.557a.337.337,0,0,0,.254-.159v.786c0,.112-.052.2-.125.2h-.332c-.074,0-.131.079-.134.189v.17c0,.109.059.189.134.189l.33,0c.074,0,.127.088.127.2v.63l-.821,0c-.074,0-.124-.073-.127-.185v-.512c0-.11-.054-.194-.127-.2l-.187,0c-.073,0-.124.086-.124.2v.51C806.581,944.985,806.523,945.066,806.448,945.066Z" transform="translate(-781.261 -937.498)" fill="#515a5d"/>
<path id="Path_656" data-name="Path 656" d="M888.749,1023.43l-.029,7.687a3.461,3.461,0,0,1-3.1,3.493,3.1,3.1,0,0,1-3.1-3.1l-.051-2.515c.812-.108-1.507-.108-.7,0l.045,2.515a3.808,3.808,0,0,0,3.8,3.8,4.157,4.157,0,0,0,3.8-4.192l.029-7.687C890.434,1023.265,887.76,1023.265,888.749,1023.43Z" transform="translate(-856.461 -1016.958)" fill="#b8382c"/>
<path id="Path_645" data-name="Path 645" d="M910.946,1140.331a6.092,6.092,0,0,1-2.657.471,4.669,4.669,0,0,1-4.929-5.057,5.006,5.006,0,0,1,5.229-5.272,7.594,7.594,0,0,1,.043,1.072c-2.357,0-3.9,1.5-3.9,4.114,0,2.443,1.415,4.029,3.858,4.029a5.082,5.082,0,0,0,2.1-.428Z" transform="translate(-876.615 -1116.196)" fill="#676767"/>
<path id="Path_663" data-name="Path 663" d="M969.366,998.3a1.08,1.08,0,1,1-1.08,1.08h0A1.08,1.08,0,0,1,969.366,998.3Z" transform="translate(-936.738 -993.802)" fill="#b8382c"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

@ -1,134 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 469.17 469.17" style="enable-background:new 0 0 469.17 469.17;"
xml:space="preserve">
<path style="fill:#F5F9EC;" d="M434.859,50.791c17.071,4.574,27.202,22.121,22.627,39.192l-95.245,355.461
c-4.574,17.071-22.121,27.202-39.192,22.627l-185.458-49.694c-17.071-4.574-27.202-22.121-22.627-39.192l95.245-355.46
c4.574-17.071,22.121-27.202,39.192-22.627L434.859,50.791z"/>
<path style="fill:#E4E8DB;" d="M291.327,97.948H190.319l-75.355,281.238c-4.574,17.07,5.558,34.617,22.629,39.191l185.457,49.691
c17.07,4.574,34.617-5.554,39.191-22.625l58.45-218.133L291.327,97.948z"/>
<path style="fill:#DCC69F;" d="M434.859,50.791c17.071,4.574,27.202,22.121,22.627,39.192l-41.411,154.548L168.8,178.274
l41.411-154.548c4.574-17.071,22.121-27.202,39.192-22.627L434.859,50.791z"/>
<g>
<rect x="173.901" y="343.989" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 629.3947 221.0203)" style="fill:#C8BEB2;" width="111.997" height="16"/>
<rect x="240.821" y="243.558" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 566.2753 68.5926)" style="fill:#C8BEB2;" width="31.999" height="16"/>
<rect x="287.217" y="255.938" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 636.636 39.3607)" style="fill:#C8BEB2;" width="31.999" height="16"/>
<rect x="333.54" y="268.381" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 706.9675 10.2795)" style="fill:#C8BEB2;" width="31.999" height="16"/>
<rect x="220.231" y="356.425" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 699.7274 191.9228)" style="fill:#C8BEB2;" width="111.997" height="16"/>
<rect x="266.652" y="368.869" transform="matrix(-0.2588 0.9659 -0.9659 -0.2588 770.1833 162.7484)" style="fill:#C8BEB2;" width="111.997" height="16"/>
</g>
<path style="fill:#F5F9EC;" d="M380.21,69.277l-13.247-3.55l-47.315,44.114c-12.4-3.322-26.31-7.05-28.7-7.69
c-8.831-2.366-18.846-0.317-20.029,4.098c-1.183,4.416,6.465,11.198,15.296,13.564c2.389,0.64,16.3,4.367,28.7,7.69l18.919,61.862
l13.247,3.55l-1.257-57.129c8.702,2.332,17.583,4.711,23.406,6.271l10.285,18.137l8.831,2.366l-1.518-25.254l13.942-21.111
l-8.831-2.366l-17.975,10.565c-5.822-1.56-14.703-3.94-23.406-6.271L380.21,69.277z"/>
<polygon style="fill:#CDB994;" points="168.8,178.273 416.078,244.53 420.69,227.312 291.327,97.948 190.323,97.948 "/>
<path style="fill:#E4E8DB;" d="M290.948,102.151c-8.832-2.367-18.848-0.317-20.027,4.098c-1.183,4.416,6.461,11.199,15.297,13.565
c2.386,0.641,16.297,4.369,28.695,7.69l18.922,61.863l13.246,3.549l-0.879-40.094l-48.996-48.994
C294.097,102.995,291.788,102.376,290.948,102.151z"/>
<path style="fill:#EA672C;" d="M264.858,5.239l-111.81,417.28l-15.455-4.141c-17.071-4.574-27.202-22.121-22.627-39.192
l95.246-355.461c4.574-17.071,22.121-27.202,39.192-22.627L264.858,5.239z"/>
<path style="fill:#125D9D;" d="M298.585,406.151c0,17.673-14.327,32-32,32h-240c-8.837,0-16-7.163-16-16v-320
c0-8.837,7.163-16,16-16h240c17.673,0,32,14.327,32,32V406.151z"/>
<path style="fill:#E7BE29;" d="M154.585,134.151c-53.019,0-96,42.981-96,96s42.981,96,96,96s96-42.981,96-96
S207.605,134.151,154.585,134.151z M225.632,194.151h-34.598c-3.309-16.58-8.477-29.981-13.754-40.32
C198.421,160.14,215.777,174.8,225.632,194.151z M178.585,230.151c0,7.142-0.535,13.703-1.27,20h-45.457
c-0.738-6.297-1.274-12.859-1.274-20c0-7.145,0.527-13.705,1.258-20h45.488C178.058,216.446,178.585,223.007,178.585,230.151z
M134.511,194.151c4.442-20.049,11.77-34.614,17.746-43.766c0.789-0.023,1.531-0.234,2.328-0.234c0.805,0,1.55,0.215,2.351,0.238
c6.004,9.211,13.305,23.782,17.726,43.762H134.511z M131.89,153.831c-5.258,10.317-10.43,23.733-13.742,40.32h-34.61
C93.394,174.8,110.749,160.144,131.89,153.831z M77.425,210.151h38.293c-0.668,6.336-1.133,12.926-1.133,20
c0,7.078,0.477,13.66,1.156,20H77.424c-1.672-6.43-2.84-13.054-2.84-20C74.585,223.206,75.753,216.581,77.425,210.151z
M83.538,266.151h34.649c3.344,16.617,8.519,30.133,13.68,40.313C110.738,300.151,93.39,285.495,83.538,266.151z M152.257,309.917
c-5.734-8.82-13.203-23.424-17.726-43.766h40.11c-4.516,20.328-11.977,34.926-17.73,43.766c-0.789,0.023-1.527,0.234-2.324,0.234
S153.05,309.941,152.257,309.917z M177.312,306.464c5.168-10.19,10.34-23.695,13.676-40.313h34.645
C215.781,285.494,198.437,300.147,177.312,306.464z M231.746,250.151h-38.313c0.676-6.34,1.152-12.922,1.152-20
c0-7.074-0.461-13.664-1.129-20h38.289c1.672,6.43,2.84,13.054,2.84,20C234.585,237.097,233.417,243.722,231.746,250.151z"/>
<g style="enable-background:new ;">
<path style="fill:#FFFFFF;" d="M69.086,390.168v-22.906h8.641c1.521,0,2.682,0.073,3.484,0.219c1.125,0.188,2.067,0.545,2.828,1.07
c0.76,0.526,1.372,1.264,1.836,2.211c0.463,0.948,0.695,1.99,0.695,3.125c0,1.948-0.62,3.597-1.859,4.945
c-1.24,1.35-3.479,2.023-6.719,2.023h-5.875v9.313H69.086z M72.117,378.152h5.922c1.958,0,3.349-0.364,4.172-1.094
c0.823-0.729,1.234-1.755,1.234-3.078c0-0.958-0.242-1.778-0.727-2.461c-0.484-0.682-1.123-1.133-1.914-1.352
c-0.511-0.135-1.453-0.203-2.828-0.203h-5.859V378.152z"/>
<path style="fill:#FFFFFF;" d="M85.539,390.168l8.797-22.906h3.266l9.375,22.906h-3.453l-2.672-6.938h-9.578l-2.516,6.938H85.539z
M92.148,380.761h7.766l-2.391-6.344c-0.729-1.927-1.271-3.51-1.625-4.75c-0.292,1.469-0.703,2.928-1.234,4.375L92.148,380.761z"/>
<path style="fill:#FFFFFF;" d="M108.367,382.808l2.859-0.25c0.135,1.146,0.45,2.086,0.945,2.82
c0.495,0.734,1.263,1.328,2.305,1.781c1.042,0.453,2.213,0.68,3.516,0.68c1.156,0,2.177-0.172,3.063-0.516
c0.885-0.344,1.544-0.814,1.977-1.414c0.432-0.599,0.648-1.252,0.648-1.961c0-0.719-0.208-1.346-0.625-1.883
c-0.417-0.536-1.104-0.986-2.063-1.352c-0.615-0.239-1.974-0.611-4.078-1.117c-2.104-0.505-3.578-0.981-4.422-1.43
c-1.094-0.572-1.909-1.283-2.445-2.133c-0.537-0.849-0.805-1.799-0.805-2.852c0-1.156,0.328-2.236,0.984-3.242
c0.656-1.005,1.614-1.768,2.875-2.289c1.26-0.521,2.661-0.781,4.203-0.781c1.698,0,3.195,0.273,4.492,0.82s2.294,1.352,2.992,2.414
c0.698,1.063,1.073,2.266,1.125,3.609l-2.906,0.219c-0.156-1.447-0.685-2.541-1.586-3.281c-0.901-0.739-2.232-1.109-3.992-1.109
c-1.833,0-3.169,0.336-4.008,1.008c-0.839,0.672-1.258,1.482-1.258,2.43c0,0.823,0.297,1.5,0.891,2.031
c0.583,0.531,2.106,1.076,4.57,1.633c2.463,0.558,4.153,1.045,5.07,1.461c1.333,0.615,2.317,1.394,2.953,2.336
c0.635,0.943,0.953,2.029,0.953,3.258c0,1.219-0.349,2.367-1.047,3.445c-0.698,1.078-1.701,1.917-3.008,2.516
c-1.308,0.599-2.779,0.898-4.414,0.898c-2.073,0-3.81-0.303-5.211-0.906c-1.401-0.604-2.5-1.513-3.297-2.727
C108.828,385.712,108.409,384.339,108.367,382.808z"/>
<path style="fill:#FFFFFF;" d="M129.711,382.808l2.859-0.25c0.135,1.146,0.45,2.086,0.945,2.82
c0.495,0.734,1.263,1.328,2.305,1.781c1.042,0.453,2.213,0.68,3.516,0.68c1.156,0,2.177-0.172,3.063-0.516
c0.885-0.344,1.544-0.814,1.977-1.414c0.432-0.599,0.648-1.252,0.648-1.961c0-0.719-0.208-1.346-0.625-1.883
c-0.417-0.536-1.104-0.986-2.063-1.352c-0.615-0.239-1.974-0.611-4.078-1.117c-2.104-0.505-3.578-0.981-4.422-1.43
c-1.094-0.572-1.909-1.283-2.445-2.133c-0.537-0.849-0.805-1.799-0.805-2.852c0-1.156,0.328-2.236,0.984-3.242
c0.656-1.005,1.614-1.768,2.875-2.289c1.26-0.521,2.661-0.781,4.203-0.781c1.698,0,3.195,0.273,4.492,0.82s2.294,1.352,2.992,2.414
c0.698,1.063,1.073,2.266,1.125,3.609l-2.906,0.219c-0.156-1.447-0.685-2.541-1.586-3.281c-0.901-0.739-2.232-1.109-3.992-1.109
c-1.833,0-3.169,0.336-4.008,1.008c-0.839,0.672-1.258,1.482-1.258,2.43c0,0.823,0.297,1.5,0.891,2.031
c0.583,0.531,2.106,1.076,4.57,1.633c2.463,0.558,4.153,1.045,5.07,1.461c1.333,0.615,2.317,1.394,2.953,2.336
c0.635,0.943,0.953,2.029,0.953,3.258c0,1.219-0.349,2.367-1.047,3.445c-0.698,1.078-1.701,1.917-3.008,2.516
c-1.308,0.599-2.779,0.898-4.414,0.898c-2.073,0-3.81-0.303-5.211-0.906c-1.401-0.604-2.5-1.513-3.297-2.727
C130.172,385.712,129.752,384.339,129.711,382.808z"/>
<path style="fill:#FFFFFF;" d="M152.086,390.168v-22.906h8.641c1.521,0,2.682,0.073,3.484,0.219
c1.125,0.188,2.067,0.545,2.828,1.07c0.76,0.526,1.372,1.264,1.836,2.211c0.463,0.948,0.695,1.99,0.695,3.125
c0,1.948-0.62,3.597-1.859,4.945c-1.24,1.35-3.479,2.023-6.719,2.023h-5.875v9.313H152.086z M155.117,378.152h5.922
c1.958,0,3.349-0.364,4.172-1.094c0.823-0.729,1.234-1.755,1.234-3.078c0-0.958-0.242-1.778-0.727-2.461
c-0.484-0.682-1.123-1.133-1.914-1.352c-0.511-0.135-1.453-0.203-2.828-0.203h-5.859V378.152z"/>
<path style="fill:#FFFFFF;" d="M172.508,379.011c0-3.802,1.021-6.778,3.063-8.93c2.042-2.15,4.677-3.227,7.906-3.227
c2.114,0,4.021,0.506,5.719,1.516c1.698,1.011,2.992,2.42,3.883,4.227c0.891,1.808,1.336,3.857,1.336,6.148
c0,2.323-0.469,4.401-1.406,6.234c-0.938,1.834-2.266,3.222-3.984,4.164c-1.719,0.943-3.573,1.414-5.563,1.414
c-2.156,0-4.083-0.521-5.781-1.563c-1.698-1.041-2.984-2.463-3.859-4.266C172.945,382.928,172.508,381.022,172.508,379.011z
M175.633,379.058c0,2.761,0.742,4.936,2.227,6.523c1.484,1.589,3.346,2.383,5.586,2.383c2.281,0,4.159-0.802,5.633-2.406
c1.474-1.604,2.211-3.88,2.211-6.828c0-1.864-0.315-3.492-0.945-4.883c-0.63-1.391-1.552-2.469-2.766-3.234
c-1.214-0.766-2.576-1.148-4.086-1.148c-2.146,0-3.992,0.737-5.539,2.211C176.406,373.15,175.633,375.611,175.633,379.058z"/>
<path style="fill:#FFFFFF;" d="M198.367,390.168v-22.906h10.156c2.042,0,3.594,0.206,4.656,0.617
c1.063,0.412,1.911,1.139,2.547,2.18c0.635,1.042,0.953,2.193,0.953,3.453c0,1.625-0.526,2.995-1.578,4.109
c-1.052,1.115-2.677,1.823-4.875,2.125c0.802,0.386,1.411,0.766,1.828,1.141c0.885,0.813,1.724,1.828,2.516,3.047l3.984,6.234
h-3.813l-3.031-4.766c-0.886-1.375-1.615-2.427-2.188-3.156c-0.573-0.729-1.086-1.239-1.539-1.531
c-0.453-0.291-0.914-0.494-1.383-0.609c-0.344-0.072-0.906-0.109-1.688-0.109h-3.516v10.172H198.367z M201.398,377.371h6.516
c1.385,0,2.469-0.143,3.25-0.43c0.781-0.286,1.375-0.744,1.781-1.375c0.406-0.63,0.609-1.314,0.609-2.055
c0-1.083-0.394-1.974-1.18-2.672c-0.787-0.697-2.029-1.047-3.727-1.047h-7.25V377.371z"/>
<path style="fill:#FFFFFF;" d="M226.68,390.168v-20.203h-7.547v-2.703h18.156v2.703h-7.578v20.203H226.68z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="17.327" height="15.752" viewBox="0 0 17.327 15.752">
<g id="track_icon" transform="translate(0 -21.33)">
<g id="Group_816" data-name="Group 816" transform="translate(0 21.33)">
<g id="Group_815" data-name="Group 815" transform="translate(0 0)">
<path id="Path_1024" data-name="Path 1024" d="M301.811,192a3.151,3.151,0,0,0-3.15,3.15c0,2.363,3.15,6.3,3.15,6.3s3.15-3.938,3.15-6.3A3.151,3.151,0,0,0,301.811,192Zm0,4.726a1.575,1.575,0,1,1,1.575-1.575A1.576,1.576,0,0,1,301.811,196.723Z" transform="translate(-287.635 -185.696)" fill="#555"/>
<path id="Path_1025" data-name="Path 1025" d="M5.324,22.905H7.088v2.363H8.663V22.905h1.764l.936,3.372,1.518-.421-1.1-3.949a.788.788,0,0,0-.758-.577h-6.3a.788.788,0,0,0-.758.577L.029,36.083a.787.787,0,0,0,.758,1H11.814V35.507H1.823Z" transform="translate(0 -21.33)" fill="#555"/>
<rect id="Rectangle_502" data-name="Rectangle 502" width="1.575" height="3.15" transform="translate(7.088 10.239)" fill="#555"/>
<rect id="Rectangle_503" data-name="Rectangle 503" width="1.575" height="3.15" transform="translate(7.088 5.513)" fill="#555"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,44 +0,0 @@
<svg id="Group_919" data-name="Group 919" xmlns="http://www.w3.org/2000/svg" width="375.001" height="409" viewBox="0 0 375.001 409">
<rect id="Rectangle_500" data-name="Rectangle 500" width="375" height="409" fill="#abddfd"/>
<g id="start-up" transform="translate(99.146 205) rotate(-45)">
<g id="Group_918" data-name="Group 918" transform="translate(0 0)">
<path id="Path_1206" data-name="Path 1206" d="M7,351.661H3.681A3.682,3.682,0,0,1,0,347.98v-3.318a52.819,52.819,0,0,1,24.519-44.577,3.68,3.68,0,0,1,4.577.5l21.976,21.976a3.681,3.681,0,0,1,.5,4.577A53.054,53.054,0,0,1,32.467,345.1,52.881,52.881,0,0,1,7,351.661Z" transform="translate(0 -226.002)" fill="#ffe137"/>
<path id="Path_1207" data-name="Path 1207" d="M7,388.761h3.318A52.882,52.882,0,0,0,35.782,382.2a53.053,53.053,0,0,0,19.109-17.962,3.681,3.681,0,0,0-.5-4.577L43.4,348.677,4.393,387.682A3.67,3.67,0,0,0,7,388.761Z" transform="translate(-3.315 -263.102)" fill="#ffc808"/>
<path id="Path_1208" data-name="Path 1208" d="M277.836,325.01a3.68,3.68,0,0,1-3.293-2.035l-10.822-21.644a3.681,3.681,0,0,1,1.094-4.6L296.8,272.916a3.682,3.682,0,0,1,5.869,2.667A52.692,52.692,0,0,1,287.38,316.99l-6.942,6.942a3.683,3.683,0,0,1-2.6,1.078Z" transform="translate(-198.703 -205.385)" fill="#b8382c"/>
<path id="Path_1209" data-name="Path 1209" d="M49.908,127.231a3.67,3.67,0,0,1-1.645-.389L26.619,116.02a3.681,3.681,0,0,1-.957-5.9l6.942-6.942A52.7,52.7,0,0,1,74.012,87.893a3.681,3.681,0,0,1,2.667,5.869L52.862,125.748a3.68,3.68,0,0,1-2.955,1.483Z" transform="translate(-18.551 -66.201)" fill="#b8382c"/>
<path id="Path_1210" data-name="Path 1210" d="M182.395,50.43a37.892,37.892,0,0,1-35.869-35.869l-.067-1.226a77.713,77.713,0,0,0-32.665,19.5l-.182.183A139.648,139.648,0,0,0,81.386,83.063a3.681,3.681,0,0,0,.844,3.9L110,114.725a3.681,3.681,0,0,0,3.9.844,139.646,139.646,0,0,0,50.046-32.226l.183-.183A77.711,77.711,0,0,0,183.62,50.5Z" transform="translate(-61.235 -10.062)" fill="#e6f3ff"/>
<path id="Path_1211" data-name="Path 1211" d="M156,194.812a3.681,3.681,0,0,0,3.9.844,139.649,139.649,0,0,0,50.047-32.226l.183-.183a77.711,77.711,0,0,0,19.5-32.663l-1.226-.067a37.956,37.956,0,0,1-24.822-11.047l-61.459,61.459Z" transform="translate(-107.236 -90.149)" fill="#d2dcf0"/>
<path id="Path_1212" data-name="Path 1212" d="M378.608,4.217a3.681,3.681,0,0,0-2.963-2.963,77.71,77.71,0,0,0-38.761,2.83l.156,2.869a37.892,37.892,0,0,0,35.869,35.869l2.869.156a77.718,77.718,0,0,0,2.83-38.761Z" transform="translate(-254.204 0)" fill="#eb4e3f"/>
<path id="Path_1213" data-name="Path 1213" d="M382.531,38.763A37.956,37.956,0,0,0,407.353,49.81l2.869.156a77.715,77.715,0,0,0,2.83-38.761,3.676,3.676,0,0,0-1.019-1.945Z" transform="translate(-288.648 -6.988)" fill="#b8382c"/>
<path id="Path_1214" data-name="Path 1214" d="M266.309,163.549a15.953,15.953,0,1,1,11.28-4.672A15.848,15.848,0,0,1,266.309,163.549Z" transform="translate(-188.912 -99.335)" fill="#eb4e3f"/>
<path id="Path_1215" data-name="Path 1215" d="M98.978,298.028a3.682,3.682,0,0,1-2.6-6.285l31.237-31.238a3.681,3.681,0,1,1,5.206,5.206l-31.238,31.238a3.67,3.67,0,0,1-2.6,1.078Z" transform="translate(-71.908 -195.757)" fill="#eb4e3f"/>
<g id="Group_917" data-name="Group 917" transform="translate(24.466 36.981)">
<path id="Path_1216" data-name="Path 1216" d="M269.395,173.243a15.953,15.953,0,0,0,22.561-22.561Z" transform="translate(-227.745 -150.682)" fill="#b8382c"/>
<path id="Path_1217" data-name="Path 1217" d="M99.689,300.264a3.681,3.681,0,0,0,5.206,0l31.238-31.238a3.681,3.681,0,0,0,0-5.206h0Z" transform="translate(-99.689 -236.053)" fill="#b8382c"/>
</g>
</g>
<path id="Path_1218" data-name="Path 1218" d="M288.946,178.824a8.59,8.59,0,1,1,6.074-2.516A8.533,8.533,0,0,1,288.946,178.824Z" transform="translate(-211.549 -121.972)" fill="#f0f9ff"/>
<path id="Path_1219" data-name="Path 1219" d="M290.608,184.043A8.59,8.59,0,0,0,302.756,171.9Z" transform="translate(-219.285 -129.707)" fill="#abddfd"/>
</g>
<path id="Intersection_3" data-name="Intersection 3" d="M4906.115-12754a25.121,25.121,0,0,1-6.588-5.153A24.932,24.932,0,0,1,4892-12758a24.769,24.769,0,0,1-3.155-.2,25.134,25.134,0,0,1-3.5,4.2h-34.7a25.121,25.121,0,0,1-4.242-5.388c-.376.065-.76.125-1.143.175A24.885,24.885,0,0,1,4833-12756a24.893,24.893,0,0,1-15.5-5.382A24.9,24.9,0,0,1,4802-12756a24.908,24.908,0,0,1-11.245-2.663,25.145,25.145,0,0,1-5.754.664,24.909,24.909,0,0,1-16.534-6.246c-.429-.06-.859-.133-1.282-.215a25.105,25.105,0,0,1-10.3,10.462h-23.77a25.093,25.093,0,0,1-6.586-5.153A24.968,24.968,0,0,1,4719-12758a24.942,24.942,0,0,1-7.955-1.291A24.953,24.953,0,0,1,4708-12754h-40a25.029,25.029,0,0,1-2.477-4.044,24.822,24.822,0,0,1-6.587-1.285,25.119,25.119,0,0,1-4.684,5.329h-84.6a24.988,24.988,0,0,1-6.577-10.729q-.55-.456-1.074-.941v-119.312c.333-.013.666-.02,1-.02a25,25,0,0,1,24.994,24.671,25.085,25.085,0,0,1,14.519,14.819A25.023,25.023,0,0,1,4609-12842a13,13,0,0,1,13-13,13,13,0,0,1,13,13,13.006,13.006,0,0,1-.849,4.638,12.585,12.585,0,0,1,1.619-1.051A13,13,0,0,1,4648-12847a13,13,0,0,1,12.378,9.016c.208-.01.413-.014.625-.014a13.006,13.006,0,0,1,12.375,9.006,12.873,12.873,0,0,1,6.613,2.031c.334-.026.671-.039,1.008-.039a12.952,12.952,0,0,1,5.847,1.384A13,13,0,0,1,4699-12834a13,13,0,0,1,13,13,12.944,12.944,0,0,1-1.7,6.425,13.026,13.026,0,0,1,7.667,5.6c.34-.014.687-.021,1.03-.021a24.861,24.861,0,0,1,12.4,3.291,24.929,24.929,0,0,1,17.244-8.253A12.951,12.951,0,0,1,4757-12817a12.965,12.965,0,0,1,9.088,3.7,25.1,25.1,0,0,1,5.913-.7h.152a12.909,12.909,0,0,1-.152-2,13,13,0,0,1,13-13,13.008,13.008,0,0,1,12.471,9.315,24.75,24.75,0,0,1,3.69-1.37A13,13,0,0,1,4814-12832a13,13,0,0,1,12.259,8.668A12.988,12.988,0,0,1,4837-12829a13.019,13.019,0,0,1,3.165.39A12.953,12.953,0,0,1,4839-12834a13,13,0,0,1,13-13,12.936,12.936,0,0,1,6.141,1.54A24.907,24.907,0,0,1,4875-12852a24.917,24.917,0,0,1,16.715,6.408A24.952,24.952,0,0,1,4900-12847a25.394,25.394,0,0,1,2.792.155,24.878,24.878,0,0,1,7.02-3.785A24.951,24.951,0,0,1,4908-12860a25,25,0,0,1,25-25,25.131,25.131,0,0,1,4,.319v124.932a25.115,25.115,0,0,1-7.117,5.752Z" transform="translate(-4562 13163)" fill="#5fa3ce"/>
<circle id="Ellipse_250" data-name="Ellipse 250" cx="3" cy="3" r="3" transform="translate(54 294)" fill="#fff"/>
<circle id="Ellipse_277" data-name="Ellipse 277" cx="3" cy="3" r="3" transform="translate(78 286)" fill="#fff"/>
<circle id="Ellipse_328" data-name="Ellipse 328" cx="3" cy="3" r="3" transform="translate(170 306)" fill="#fff"/>
<circle id="Ellipse_278" data-name="Ellipse 278" cx="3" cy="3" r="3" transform="translate(232 291)" fill="#fff"/>
<circle id="Ellipse_281" data-name="Ellipse 281" cx="3" cy="3" r="3" transform="translate(304 308)" fill="#fff"/>
<circle id="Ellipse_282" data-name="Ellipse 282" cx="3" cy="3" r="3" transform="translate(349 284)" fill="#fff"/>
<circle id="Ellipse_279" data-name="Ellipse 279" cx="3" cy="3" r="3" transform="translate(284 296)" fill="#fff"/>
<circle id="Ellipse_280" data-name="Ellipse 280" cx="3" cy="3" r="3" transform="translate(228 317)" fill="#fff"/>
<circle id="Ellipse_251" data-name="Ellipse 251" cx="5" cy="5" r="5" transform="translate(68 303)" fill="#fff"/>
<circle id="Ellipse_276" data-name="Ellipse 276" cx="5" cy="5" r="5" transform="translate(7 284)" fill="#fff"/>
<path id="Intersection_2" data-name="Intersection 2" d="M4549-12754v-90.587a17.941,17.941,0,0,1,7-1.412,18,18,0,0,1,15.86,9.479,18.176,18.176,0,0,1,4.14-.477,18,18,0,0,1,18,18,17.992,17.992,0,0,1-.195,2.649,18.042,18.042,0,0,1,11.053,8.826A18.172,18.172,0,0,1,4609-12808a17.971,17.971,0,0,1,14.869,7.853A17.949,17.949,0,0,1,4635-12804a18,18,0,0,1,15.982,9.709A18.1,18.1,0,0,1,4656-12795c.539,0,1.074.023,1.6.069a17.942,17.942,0,0,1,8.748-3.874A17.947,17.947,0,0,1,4679-12804a17.989,17.989,0,0,1,15.675,9.151A17.926,17.926,0,0,1,4697-12795a17.9,17.9,0,0,1,5.5.856,17.757,17.757,0,0,1,2.923-.675A17.944,17.944,0,0,1,4719-12801a17.982,17.982,0,0,1,14.8,7.757A17.948,17.948,0,0,1,4747-12799a17.923,17.923,0,0,1,11.4,4.066c.529-.046,1.061-.069,1.6-.069a17.907,17.907,0,0,1,9.009,2.412A18,18,0,0,1,4787-12810a17.978,17.978,0,0,1,14.8,7.76A17.957,17.957,0,0,1,4815-12808a17.945,17.945,0,0,1,12.735,5.279A18,18,0,0,1,4844-12813a17.932,17.932,0,0,1,12.008,4.592c-.007-.2-.01-.394-.01-.592q0-.921.089-1.813A17.938,17.938,0,0,1,4855-12817a18,18,0,0,1,18-18,17.925,17.925,0,0,1,9,2.408,17.938,17.938,0,0,1,9-2.408c.337,0,.674.01,1,.029a17.914,17.914,0,0,1,10-3.026,17.952,17.952,0,0,1,3.317.3A17.957,17.957,0,0,1,4919-12844a18.037,18.037,0,0,1,5,.7V-12754Zm264-60a5,5,0,0,1,5-5,5,5,0,0,1,5,5,5,5,0,0,1-5,5A5,5,0,0,1,4813-12814Zm-67-2a5,5,0,0,1,5-5,5,5,0,0,1,5,5,5,5,0,0,1-5,5A5,5,0,0,1,4746-12816Zm-77-12a5,5,0,0,1,5-5,5,5,0,0,1,5,5,5,5,0,0,1-5,5A5,5,0,0,1,4669-12828Z" transform="translate(-4549 13163)" fill="#fff"/>
<circle id="Ellipse_283" data-name="Ellipse 283" cx="5" cy="5" r="5" transform="translate(355 308)" fill="#fff"/>
<circle id="Ellipse_327" data-name="Ellipse 327" cx="5" cy="5" r="5" transform="translate(202 302)" fill="#5fa3ce"/>
<circle id="Ellipse_252" data-name="Ellipse 252" cx="5" cy="5" r="5" transform="translate(22 297)" fill="#5fa3ce"/>
<circle id="Ellipse_253" data-name="Ellipse 253" cx="5" cy="5" r="5" transform="translate(32 313)" fill="#fff"/>
<circle id="Ellipse_319" data-name="Ellipse 319" cx="3" cy="3" r="3" transform="translate(101 313)" fill="#5fa3ce"/>
<circle id="Ellipse_320" data-name="Ellipse 320" cx="3" cy="3" r="3" transform="translate(152 308)" fill="#5fa3ce"/>
<circle id="Ellipse_322" data-name="Ellipse 322" cx="3" cy="3" r="3" transform="translate(190 322)" fill="#5fa3ce"/>
<circle id="Ellipse_323" data-name="Ellipse 323" cx="3" cy="3" r="3" transform="translate(258 296)" fill="#5fa3ce"/>
<circle id="Ellipse_326" data-name="Ellipse 326" cx="3" cy="3" r="3" transform="translate(365 251)" fill="#5fa3ce"/>
</svg>

Before

Width:  |  Height:  |  Size: 9.7 KiB

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="43.746" height="24.998" viewBox="0 0 43.746 24.998">
<g id="video_icon_green_right" transform="translate(-2.25 -9)">
<path id="Path_962" data-name="Path 962" d="M34.411,10.8a1.668,1.668,0,0,0-.908.264L25.056,16.4a.835.835,0,0,0-.391.7v7.421a.835.835,0,0,0,.391.7L33.5,30.554a1.755,1.755,0,0,0,.908.264h2.031a.831.831,0,0,0,.84-.83V11.63a.838.838,0,0,0-.84-.83Z" transform="translate(8.714 0.7)" fill="#6ea231"/>
<path id="Path_963" data-name="Path 963" d="M25.832,34H7.279A5.045,5.045,0,0,1,2.25,28.979V14.019A5.036,5.036,0,0,1,7.269,9H25.822a5.036,5.036,0,0,1,5.019,5.019v14.95A5.024,5.024,0,0,1,25.832,34Z" fill="#6ea231"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 697 B

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="25.68" height="24.095" viewBox="0 0 25.68 24.095">
<path id="family_3_" data-name="family (3)" d="M11.891,15.229v1.238a3.754,3.754,0,0,1-3.75,3.75H3.3a.428.428,0,0,1-.429-.429V17.523A2.726,2.726,0,0,1,5.6,14.8h5.868A.428.428,0,0,1,11.891,15.229Zm-3.75,5.845c-3.2,0-4.352.01-4.827,0a.428.428,0,0,0-.442.428v.794a3.712,3.712,0,1,0,7.423-.03V21.2a.428.428,0,0,0-.571-.4A4.582,4.582,0,0,1,8.142,21.074ZM14.069,35.79a4.831,4.831,0,0,1-2.429.007.214.214,0,0,0-.22.341,1.852,1.852,0,0,0,2.871-.009A.214.214,0,0,0,14.069,35.79Zm1.878-.323h-.088a.423.423,0,0,0-.4.295,2.723,2.723,0,0,1-4.948.562,2.838,2.838,0,0,1-.259-.56.429.429,0,0,0-.4-.3H9.733a2.571,2.571,0,0,0-2.571,2.571v.429a.429.429,0,0,0,.429.429h10.5a.429.429,0,0,0,.429-.429v-.429A2.571,2.571,0,0,0,15.947,35.466ZM2.877,33.893H.429A.429.429,0,0,0,0,34.321v4.145a.429.429,0,0,0,.429.429H2.877a.429.429,0,0,0,.429-.429V34.321A.429.429,0,0,0,2.877,33.893Zm7.153-6.685a.428.428,0,0,0-.226-.779l-.125,0a.354.354,0,0,0-.332.229,2.906,2.906,0,0,1-2.671,1.929A2.945,2.945,0,0,1,3.955,26.6a.259.259,0,0,0-.243-.175A3.711,3.711,0,0,0,0,30.138v2.469a.429.429,0,0,0,.429.429H2.877a.429.429,0,0,0,.429-.429v-.179a.438.438,0,0,1,.4-.442.429.429,0,0,1,.457.427v6.053a.429.429,0,0,0,.429.429H5.877a.428.428,0,0,0,.428-.436c0-.111,0-.243,0-.421a3.434,3.434,0,0,1,2.49-3.3.429.429,0,0,0,.221-.677,4.83,4.83,0,0,1,1.014-6.855Zm11.939-.781a.348.348,0,0,0-.33.241,2.754,2.754,0,0,1-2.551,1.9,2.874,2.874,0,0,1-2.581-1.926.346.346,0,0,0-.322-.217c-.1,0-.195,0-.3,0a.429.429,0,0,0-.232.779,4.829,4.829,0,0,1,1.01,6.853.429.429,0,0,0,.221.678,3.434,3.434,0,0,1,2.49,3.3c0,.178,0,.31,0,.421a.428.428,0,0,0,.428.436h1.286a.429.429,0,0,0,.429-.429V32.413a.429.429,0,0,1,.457-.427.438.438,0,0,1,.4.442v.179a.429.429,0,0,0,.429.429h2.448a.429.429,0,0,0,.429-.429V30.138A3.711,3.711,0,0,0,21.969,26.427Zm.406,7.894v4.145a.429.429,0,0,0,.429.429h2.448a.429.429,0,0,0,.429-.429V34.321a.429.429,0,0,0-.429-.429H22.8A.429.429,0,0,0,22.375,34.321Zm-3.2-19.5a5.342,5.342,0,0,0-5.389,5.336v5.314a.429.429,0,0,0,.585.4,4.556,4.556,0,0,1,.707-.207.43.43,0,0,0,.258-.679,4.627,4.627,0,0,1-.9-2.744V20.589a1.286,1.286,0,0,1,1.3-1.286,15.689,15.689,0,0,0,5.184-.809,2.018,2.018,0,0,1,2.66,1.91v1.868a4.586,4.586,0,0,1-.9,2.722.428.428,0,0,0,.248.676,4.527,4.527,0,0,1,.92.3.429.429,0,0,0,.609-.389V20.228a5.38,5.38,0,0,0-5.283-5.4ZM12.84,27.164A3.964,3.964,0,1,0,16.8,31.128a3.969,3.969,0,0,0-3.964-3.964Zm5.141-.433a.214.214,0,0,0-.2.356,1.723,1.723,0,0,0,2.713-.077.214.214,0,0,0-.226-.341A4.6,4.6,0,0,1,17.982,26.731Zm3.207-7.424a16.524,16.524,0,0,1-5.467.853.428.428,0,0,0-.433.429v1.654a3.716,3.716,0,1,0,7.431.031V20.4A1.159,1.159,0,0,0,21.189,19.307Zm-15.764,7.4a.214.214,0,0,0-.213.352,1.927,1.927,0,0,0,2.969-.066.214.214,0,0,0-.227-.343A4.576,4.576,0,0,1,5.425,26.708Z" transform="translate(0 -14.8)" fill="#989898"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 259 KiB

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="21.035" height="25.699" viewBox="0 0 21.035 25.699">
<g id="file_4_" data-name="file (4)" transform="translate(0 0)">
<path id="Path_4376" data-name="Path 4376" d="M199.117,108.4h.751v18.461a2.228,2.228,0,0,0,2.225,2.225h13.668v.684a1.42,1.42,0,0,1-1.42,1.42H199.12a1.42,1.42,0,0,1-1.42-1.42V109.82A1.418,1.418,0,0,1,199.117,108.4Z" transform="translate(-197.7 -105.491)" fill="#989898"/>
<path id="Path_4377" data-name="Path 4377" d="M95.931,22.79H88.32a1.42,1.42,0,0,1-1.42-1.42V1.42A1.42,1.42,0,0,1,88.32,0H98.462V.47a1.378,1.378,0,0,0-.008.15V4.509a2,2,0,0,0,2,2h3.889c.04,0,.083,0,.123-.005h.494V21.371a1.42,1.42,0,0,1-1.42,1.42H95.931Zm-.287-4.825h4.962a.671.671,0,0,0,0-1.342H95.641a.671.671,0,1,0,0,1.342Zm-4.965-3.424h9.927a.671.671,0,0,0,0-1.342H90.679a.671.671,0,0,0,0,1.342Zm9.927-4.978H90.679a.671.671,0,0,0,0,1.342h9.927a.671.671,0,0,0,0-1.342Z" transform="translate(-83.924 0)" fill="#989898"/>
<path id="Path_4378" data-name="Path 4378" d="M92.626,6.481h-3.9A1.191,1.191,0,0,1,87.546,5.3V1.4a.6.6,0,0,1,.6-.6.582.582,0,0,1,.419.177L93.05,5.462A.6.6,0,0,1,92.626,6.481Z" transform="translate(-72.209 -0.779)" fill="#989898"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,3 +0,0 @@
<svg id="weekly-calendar-page-symbol" xmlns="http://www.w3.org/2000/svg" width="25.034" height="25.034" viewBox="0 0 25.034 25.034">
<path id="Path_4379" data-name="Path 4379" d="M22.53,0H2.5A2.511,2.511,0,0,0,0,2.5V22.53a2.512,2.512,0,0,0,2.5,2.5H22.53a2.512,2.512,0,0,0,2.5-2.5V2.5A2.511,2.511,0,0,0,22.53,0ZM6.756,22.031H2.921V18.62H6.756v3.411Zm0-4.555H2.921v-3.41H6.756v3.41ZM6.467,3.794A1.063,1.063,0,1,1,7.529,2.731,1.062,1.062,0,0,1,6.467,3.794Zm5.406,18.237H8.039V18.62h3.834Zm0-4.555H8.039v-3.41h3.834Zm0-4.552H8.039V9.514h3.834ZM11.455,2.731a1.062,1.062,0,1,1,1.062,1.062A1.062,1.062,0,0,1,11.455,2.731Zm5.54,14.745H13.159v-3.41H17v3.41Zm0-4.552H13.159V9.514H17v3.41ZM17.5,2.731a1.062,1.062,0,1,1,1.062,1.062A1.062,1.062,0,0,1,17.5,2.731Zm4.609,14.745H18.278v-3.41h3.835Zm0-4.552H18.278V9.514h3.835Z" fill="#989898"/>
</svg>

Before

Width:  |  Height:  |  Size: 838 B

@ -1,24 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="39.338" height="34.687" viewBox="0 0 39.338 34.687">
<g id="ambulance_5_" data-name="ambulance (5)" transform="translate(0 -28.362)">
<g id="Group_8189" data-name="Group 8189" transform="translate(0 34.785)">
<g id="Group_8188" data-name="Group 8188">
<path id="Path_4980" data-name="Path 4980" d="M38.918,121.812l-3.485-3.107-5.29-7.305a1.252,1.252,0,0,0-1.008-.5H26.365l-1.008-3.275a1.26,1.26,0,0,0-1.217-.924H20.991a1.221,1.221,0,0,0-1.218,1.008l-.63,3.191H1.469A1.237,1.237,0,0,0,.21,112.156L0,129.915a1.237,1.237,0,0,0,1.259,1.259H4.534a4.969,4.969,0,0,0,9.656,0h8.942a4.969,4.969,0,0,0,9.656,0h5.29a1.237,1.237,0,0,0,1.259-1.259v-7.179A1.2,1.2,0,0,0,38.918,121.812ZM9.362,132.433A2.435,2.435,0,1,1,11.8,130,2.437,2.437,0,0,1,9.362,132.433Zm18.556,0A2.435,2.435,0,1,1,30.354,130,2.437,2.437,0,0,1,27.919,132.433ZM23.93,118.285v-4.87h4.534l3.569,4.87Z" transform="translate(0 -106.698)" fill="#2e303a"/>
</g>
</g>
<g id="Group_8191" data-name="Group 8191" transform="translate(21.327 28.362)">
<g id="Group_8190" data-name="Group 8190" transform="translate(0 0)">
<rect id="Rectangle_17462" data-name="Rectangle 17462" width="2.519" height="5.248" fill="#da4a54"/>
</g>
</g>
<g id="Group_8193" data-name="Group 8193" transform="translate(25.455 30.177)">
<g id="Group_8192" data-name="Group 8192" transform="translate(0 0)">
<rect id="Rectangle_17463" data-name="Rectangle 17463" width="5.416" height="2.519" transform="translate(0 3.829) rotate(-45)" fill="#da4a54"/>
</g>
</g>
<g id="Group_8195" data-name="Group 8195" transform="translate(14.112 30.196)">
<g id="Group_8194" data-name="Group 8194" transform="translate(0 0)">
<rect id="Rectangle_17464" data-name="Rectangle 17464" width="2.519" height="5.416" transform="translate(0 1.781) rotate(-45)" fill="#da4a54"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="33.632" height="30.862" viewBox="0 0 33.632 30.862">
<g id="a" transform="translate(0 -21.085)">
<g id="Group_10604" data-name="Group 10604" transform="translate(0 21.085)">
<g id="Group_10603" data-name="Group 10603" transform="translate(0 0)">
<path id="Path_13515" data-name="Path 13515" d="M33.07,32.61,17.656,21.4a1.279,1.279,0,0,0-1.681,0L.561,32.61A1.415,1.415,0,0,0,1.4,35.132H4.2V50.546a1.324,1.324,0,0,0,1.4,1.4h22.42a1.324,1.324,0,0,0,1.4-1.4V35.132h2.8A1.415,1.415,0,0,0,33.07,32.61ZM16.816,49.145a8.407,8.407,0,1,1,8.407-8.407A8.432,8.432,0,0,1,16.816,49.145Z" transform="translate(0 -21.085)" fill="#2e303a"/>
</g>
</g>
<g id="Group_10606" data-name="Group 10606" transform="translate(10.51 34.432)">
<g id="Group_10605" data-name="Group 10605">
<path id="Path_13516" data-name="Path 13516" d="M168.425,228.489v-4.2h-4.2v4.2h-4.2v4.2h4.2v4.2h4.2v-4.2h4.2v-4.2Z" transform="translate(-160.018 -224.285)" fill="#da4a54"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36.033" height="32.32" viewBox="0 0 36.033 32.32">
<g id="Group_6982" data-name="Group 6982" transform="translate(0 0)">
<g id="Group_6964" data-name="Group 6964">
<path id="Subtraction_64" data-name="Subtraction 64" d="M807.5,957.28h-3.132a3.925,3.925,0,0,1-1.545-.314,4.019,4.019,0,0,1-2.121-2.119,3.9,3.9,0,0,1-.314-1.54V941.469a3.908,3.908,0,0,1,.314-1.543,4.014,4.014,0,0,1,2.118-2.116,3.916,3.916,0,0,1,1.54-.312h14.682a3.915,3.915,0,0,1,1.543.314,4.01,4.01,0,0,1,2.116,2.118,3.92,3.92,0,0,1,.313,1.54v2.919a3.274,3.274,0,0,0,0,6.127V953.3a3.93,3.93,0,0,1-.309,1.545,4,4,0,0,1-2.113,2.12,3.91,3.91,0,0,1-1.542.314h-3.432a10.325,10.325,0,0,0,1.118-1.11,1.034,1.034,0,0,0,.228-.817,15.093,15.093,0,0,0,2.129-4.006,14.583,14.583,0,0,0,.579-2.111,10.557,10.557,0,0,0,.2-1.981,7,7,0,0,0-.313-2.292,2.991,2.991,0,0,0-.9-1.348,4.283,4.283,0,0,0-1.436-.751c-.565-.19-1.219-.34-1.91-.5h0l0-.007a1.068,1.068,0,0,0-.956-.607,1.084,1.084,0,1,0,0,2.169,1.043,1.043,0,0,0,.638-.239l.025.009h.007l.017,0c.691.159,1.236.284,1.689.431a2.958,2.958,0,0,1,1.076.549,1.844,1.844,0,0,1,.558.947,6.338,6.338,0,0,1,.16,1.631,9.146,9.146,0,0,1-.186,1.755,13.223,13.223,0,0,1-.529,1.887,14.692,14.692,0,0,1-.825,1.874,12.98,12.98,0,0,1-1.077,1.715,1.035,1.035,0,0,0-.714.346,7.34,7.34,0,0,1-1.544,1.378,3.552,3.552,0,0,1-4.162.006,7.291,7.291,0,0,1-1.543-1.371,1.035,1.035,0,0,0-.713-.346,13.038,13.038,0,0,1-1.079-1.719,14.8,14.8,0,0,1-.827-1.878,13.155,13.155,0,0,1-.53-1.89,9.167,9.167,0,0,1-.187-1.758,6.412,6.412,0,0,1,.158-1.632,1.835,1.835,0,0,1,.556-.947,2.928,2.928,0,0,1,1.077-.549c.458-.148,1.034-.28,1.7-.432l.015,0h0l.01-.009a1.072,1.072,0,0,0,.652.24,1.084,1.084,0,1,0,0-2.168,1.052,1.052,0,0,0-.575.171,1.176,1.176,0,0,0-.393.434h0l-.014,0c-2.842.656-4.557,1.051-4.557,4.893a10.584,10.584,0,0,0,.2,1.983,14.543,14.543,0,0,0,.583,2.115,14.983,14.983,0,0,0,2.146,4.013,1.028,1.028,0,0,0,.229.816,10.456,10.456,0,0,0,1.105,1.1h0Zm1.9-11.264a.588.588,0,0,0-.592.561v4.632a.585.585,0,0,0,.591.559h4.563a.588.588,0,0,0,.594-.559v-4.623a.565.565,0,0,0-.18-.4.621.621,0,0,0-.417-.169Zm26.359,9.2h-1.607a1.387,1.387,0,0,1-.718-.208l-6.684-4.219a.66.66,0,0,1-.309-.556v-.419a3.27,3.27,0,0,0,0-4.712v-.742a.661.661,0,0,1,.309-.557l6.684-4.219a1.322,1.322,0,0,1,.718-.209h1.607a.661.661,0,0,1,.665.657v14.528a.65.65,0,0,1-.193.464.665.665,0,0,1-.471.191Z" transform="translate(-800.388 -937.498)" fill="#2e303a"/>
<path id="Path_656" data-name="Path 656" d="M894.195,1023.524l-.051,13.538c0,3.014-2.447,6.151-5.461,6.151a5.464,5.464,0,0,1-5.461-5.461l-.091-4.43c1.43-.191-2.655-.191-1.227,0l.079,4.43a6.707,6.707,0,0,0,6.7,6.693c3.69,0,6.687-3.692,6.687-7.383l.051-13.538C897.162,1023.233,892.453,1023.234,894.195,1023.524Z" transform="translate(-871.015 -1012.125)" fill="#de5c5d"/>
<path id="Path_663" data-name="Path 663" d="M970.188,998.3a1.9,1.9,0,1,1-1.9,1.9h0A1.9,1.9,0,0,1,970.188,998.3Z" transform="translate(-946.411 -990.378)" fill="#de5c5d"/>
<path id="Subtraction_64-2" data-name="Subtraction 64" d="M807.5,957.28h-3.132a3.925,3.925,0,0,1-1.545-.314,4.019,4.019,0,0,1-2.121-2.119,3.9,3.9,0,0,1-.314-1.54V941.469a3.908,3.908,0,0,1,.314-1.543,4.014,4.014,0,0,1,2.118-2.116,3.916,3.916,0,0,1,1.54-.312h14.682a3.915,3.915,0,0,1,1.543.314,4.01,4.01,0,0,1,2.116,2.118,3.92,3.92,0,0,1,.313,1.54v2.919a3.274,3.274,0,0,0,0,6.127V953.3a3.93,3.93,0,0,1-.309,1.545,4,4,0,0,1-2.113,2.12,3.91,3.91,0,0,1-1.542.314h-3.432a10.325,10.325,0,0,0,1.118-1.11,1.034,1.034,0,0,0,.228-.817,15.093,15.093,0,0,0,2.129-4.006,14.583,14.583,0,0,0,.579-2.111,10.557,10.557,0,0,0,.2-1.981,7,7,0,0,0-.313-2.292,2.991,2.991,0,0,0-.9-1.348,4.283,4.283,0,0,0-1.436-.751c-.565-.19-1.219-.34-1.91-.5h0l0-.007a1.068,1.068,0,0,0-.956-.607,1.084,1.084,0,1,0,0,2.169,1.043,1.043,0,0,0,.638-.239l.025.009h.007l.017,0c.691.159,1.236.284,1.689.431a2.958,2.958,0,0,1,1.076.549,1.844,1.844,0,0,1,.558.947,6.338,6.338,0,0,1,.16,1.631,9.146,9.146,0,0,1-.186,1.755,13.223,13.223,0,0,1-.529,1.887,14.692,14.692,0,0,1-.825,1.874,12.98,12.98,0,0,1-1.077,1.715,1.035,1.035,0,0,0-.714.346,7.34,7.34,0,0,1-1.544,1.378,3.552,3.552,0,0,1-4.162.006,7.291,7.291,0,0,1-1.543-1.371,1.035,1.035,0,0,0-.713-.346,13.038,13.038,0,0,1-1.079-1.719,14.8,14.8,0,0,1-.827-1.878,13.155,13.155,0,0,1-.53-1.89,9.167,9.167,0,0,1-.187-1.758,6.412,6.412,0,0,1,.158-1.632,1.835,1.835,0,0,1,.556-.947,2.928,2.928,0,0,1,1.077-.549c.458-.148,1.034-.28,1.7-.432l.015,0h0l.01-.009a1.072,1.072,0,0,0,.652.24,1.084,1.084,0,1,0,0-2.168,1.052,1.052,0,0,0-.575.171,1.176,1.176,0,0,0-.393.434h0l-.014,0c-2.842.656-4.557,1.051-4.557,4.893a10.584,10.584,0,0,0,.2,1.983,14.543,14.543,0,0,0,.583,2.115,14.983,14.983,0,0,0,2.146,4.013,1.028,1.028,0,0,0,.229.816,10.456,10.456,0,0,0,1.105,1.1h0Zm28.256-2.069h-1.607a1.387,1.387,0,0,1-.718-.208l-6.684-4.219a.66.66,0,0,1-.309-.556v-.419a3.27,3.27,0,0,0,0-4.712v-.742a.661.661,0,0,1,.309-.557l6.684-4.219a1.322,1.322,0,0,1,.718-.209h1.607a.661.661,0,0,1,.665.657v14.528a.65.65,0,0,1-.193.464.665.665,0,0,1-.471.191Z" transform="translate(-800.388 -937.498)" fill="#2e303a"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="31" height="31" viewBox="0 0 31 31">
<g id="Group_10602" data-name="Group 10602" transform="translate(-44.848 -10.426)">
<g id="Rectangle_18131" data-name="Rectangle 18131" transform="translate(44.848 10.426)" fill="#359846" stroke="#fff" stroke-width="1.25">
<rect width="31" height="31" rx="4" stroke="none"/>
<rect x="0.625" y="0.625" width="29.75" height="29.75" rx="3.375" fill="none"/>
</g>
<g id="pharmacy" transform="translate(51.361 16.275)">
<path id="Path_13509" data-name="Path 13509" d="M26.985,3H18.333A.333.333,0,0,0,18,3.333V9.989a.333.333,0,0,0,.333.333h8.652a.333.333,0,0,0,.333-.333V3.333A.333.333,0,0,0,26.985,3Zm-2,4.326a.333.333,0,0,1-.333.333h-1v1a.333.333,0,0,1-.333.333H21.993a.333.333,0,0,1-.333-.333v-1h-1a.333.333,0,0,1-.333-.333V6a.333.333,0,0,1,.333-.333h1v-1a.333.333,0,0,1,.333-.333h1.331a.333.333,0,0,1,.333.333v1h1A.333.333,0,0,1,24.989,6Z" transform="translate(-13.673 -3)" fill="#fff"/>
<path id="Path_13510" data-name="Path 13510" d="M22.1,36.706a2.769,2.769,0,0,1-1.784-.646,2.769,2.769,0,0,1-1.784.646,3.545,3.545,0,0,1-2.542-.646,2.769,2.769,0,0,1-1.784.646,3.545,3.545,0,0,1-2.542-.646,3.545,3.545,0,0,1-2.542.646A2.782,2.782,0,0,1,8,36.469v7.558a.333.333,0,0,0,.333.333H10V38.37a.333.333,0,0,1,.333-.333h4.326a.333.333,0,0,1,.333.333v5.99h8.652a.333.333,0,0,0,.333-.333V36.469A4.28,4.28,0,0,1,22.1,36.706Zm-.453,5.325a.333.333,0,0,1-.333.333H16.652a.333.333,0,0,1-.333-.333V38.37a.333.333,0,0,1,.333-.333h4.659a.333.333,0,0,1,.333.333Z" transform="translate(-7.001 -25.058)" fill="#fff"/>
<path id="Path_13511" data-name="Path 13511" d="M9.324,17.6a1,1,0,0,1-.666-.938V13H6.329a.333.333,0,0,0-.333.27l-1,5.2a.456.456,0,0,0,0,.063,2.117,2.117,0,0,0,2.117,2.117h.759a2.113,2.113,0,0,0,1.451-.576Z" transform="translate(-4.997 -9.672)" fill="#fff"/>
<path id="Path_13512" data-name="Path 13512" d="M23.661,27H20v2.419A2.113,2.113,0,0,0,21.451,30h.759a2.113,2.113,0,0,0,1.451-.576Z" transform="translate(-15.007 -19.013)" fill="#fff"/>
<path id="Path_13513" data-name="Path 13513" d="M36.661,27H33v2.419A2.113,2.113,0,0,0,34.451,30h.759a2.113,2.113,0,0,0,1.451-.576Z" transform="translate(-23.681 -19.013)" fill="#fff"/>
<path id="Path_13514" data-name="Path 13514" d="M50.326,18.474l-1-5.2A.333.333,0,0,0,49,13H46.666v3.661A1,1,0,0,1,46,17.6v2.479a2.113,2.113,0,0,0,1.451.576h.759a2.117,2.117,0,0,0,2.117-2.117.455.455,0,0,0,0-.063Z" transform="translate(-32.355 -9.672)" fill="#fff"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 118.92 135.06"><circle cx="59.46" cy="67.53" r="38.32" style="fill:#cc121c"/><path d="M63.49,13.32h0a7.27,7.27,0,1,0-8.06,0h0c4.37,3.29,3.91,10.91-1.77,16.59h11.6C59.58,24.23,59.12,16.61,63.49,13.32Z" style="fill:#cc121c"/><path d="M14.53,36.94h0a7.28,7.28,0,1,0-4,7h0c5-2.14,11.4,2.06,13.48,9.83l2.9-5,2.9-5C22,45.78,15.19,42.36,14.53,36.94Z" style="fill:#cc121c"/><path d="M10.5,91.15h0a7.27,7.27,0,1,0,4,7h0c.66-5.43,7.49-8.84,15.25-6.76l-2.9-5-2.9-5C21.9,89.08,15.52,93.29,10.5,91.15Z" style="fill:#cc121c"/><path d="M55.43,121.74h0a7.27,7.27,0,1,0,8.06,0h0c-4.37-3.28-3.91-10.9,1.77-16.59H53.66C59.34,110.84,59.8,118.46,55.43,121.74Z" style="fill:#cc121c"/><path d="M104.39,98.13h0a7.27,7.27,0,1,0,4-7h0c-5,2.14-11.4-2.07-13.48-9.83l-2.9,5-2.9,5C96.9,89.29,103.73,92.7,104.39,98.13Z" style="fill:#cc121c"/><path d="M108.42,43.92h0a7.27,7.27,0,1,0-4-7h0c-.66,5.42-7.49,8.84-15.25,6.76l2.9,5,2.9,5C97,46,103.39,41.78,108.42,43.92Z" style="fill:#cc121c"/><path d="M81.13,34.18h0A5.32,5.32,0,1,0,76,31.34h0c1.64,3.64-1.33,8.37-7,10l3.72,2,3.73,2C74.78,39.8,77.17,34.75,81.13,34.18Z" style="fill:#cc121c"/><path d="M41.41,32.09h0a5.32,5.32,0,1,0-5,3.06h0c4,.39,6.58,5.34,5.18,11.05L45.18,44l3.63-2.21C43.1,40.4,39.92,35.8,41.41,32.09Z" style="fill:#cc121c"/><path d="M19.74,65.44h0a5.32,5.32,0,1,0,.13,5.89h0c2.33-3.25,7.91-3,12.16,1l-.09-4.24-.09-4.25C27.78,68.13,22.21,68.59,19.74,65.44Z" style="fill:#cc121c"/><path d="M37.79,100.89h0A5.32,5.32,0,1,0,43,103.72h0c-1.64-3.64,1.33-8.37,7-10l-3.72-2-3.73-2C44.14,95.27,41.75,100.32,37.79,100.89Z" style="fill:#cc121c"/><path d="M77.51,103h0a5.33,5.33,0,1,0,5-3h0c-4-.4-6.58-5.34-5.18-11l-3.63,2.2-3.63,2.2C75.82,94.67,79,99.26,77.51,103Z" style="fill:#cc121c"/><path d="M99.18,69.62h0a5.32,5.32,0,1,0-.13-5.89h0c-2.33,3.24-7.91,3-12.16-1L87,66.94l.09,4.24C91.14,66.93,96.71,66.48,99.18,69.62Z" style="fill:#cc121c"/><path d="M65.73,44.73a6.28,6.28,0,1,1-6.27-6.28A6.27,6.27,0,0,1,65.73,44.73Z" style="fill:#fff"/><path d="M52.27,54.88a3.86,3.86,0,1,1-5.46,0A3.86,3.86,0,0,1,52.27,54.88Z" style="fill:#fff"/><path d="M36.66,61.26a6.28,6.28,0,1,1-6.28,6.27A6.27,6.27,0,0,1,36.66,61.26Z" style="fill:#fff"/><path d="M46.81,74.72a3.86,3.86,0,1,1,0,5.47A3.87,3.87,0,0,1,46.81,74.72Z" style="fill:#fff"/><path d="M53.18,90.33a6.28,6.28,0,1,1,6.28,6.28A6.28,6.28,0,0,1,53.18,90.33Z" style="fill:#fff"/><circle cx="69.38" cy="77.46" r="3.86" style="fill:#fff"/><path d="M82.26,73.81a6.28,6.28,0,1,1,6.28-6.28A6.28,6.28,0,0,1,82.26,73.81Z" style="fill:#fff"/><path d="M72.11,60.34a3.86,3.86,0,1,1,0-5.46A3.86,3.86,0,0,1,72.11,60.34Z" style="fill:#fff"/></svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 29.51 20.88"><path d="M29.34,6.46a.79.79,0,0,0-.59-.28H25.88c-.71-1.87-1.63-3.7-2.68-4.39C19.57-.6,9.94-.6,6.31,1.79c-1,.69-2,2.53-2.68,4.39H.76a.78.78,0,0,0-.59.28A.76.76,0,0,0,0,7.09L.44,9.15a.76.76,0,0,0,.74.61H2A5.06,5.06,0,0,0,.81,13.09a5,5,0,0,0,1.58,3.75l0,0v2.88a1.13,1.13,0,0,0,1.13,1.13H6.2a1.12,1.12,0,0,0,1.13-1.13V18.59H22.17v1.16a1.13,1.13,0,0,0,1.14,1.13H26a1.13,1.13,0,0,0,1.13-1.13V16.92a5.19,5.19,0,0,0,.33-7.17h.91a.75.75,0,0,0,.74-.6l.42-2.06A.76.76,0,0,0,29.34,6.46ZM7.55,3.68c2.9-1.9,11.51-1.9,14.4,0,.56.37,1.29,1.86,1.95,3.69H5.61C6.27,5.54,7,4.05,7.55,3.68ZM4.16,13.37A2.23,2.23,0,1,1,6.39,15.6,2.23,2.23,0,0,1,4.16,13.37Zm19,2.23a2.23,2.23,0,1,1,2.23-2.23A2.23,2.23,0,0,1,23.14,15.6Z" style="fill:#595e5e"/></svg>

Before

Width:  |  Height:  |  Size: 792 B

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

Loading…
Cancel
Save