landing init
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
||||
20609
package-lock.json
generated
Normal file
51
package.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "buffer-landing-page",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^2.2.0",
|
||||
"@heroicons/react": "^2.1.5",
|
||||
"@testing-library/jest-dom": "^5.16.5",
|
||||
"@testing-library/react": "^13.4.0",
|
||||
"@testing-library/user-event": "^13.5.0",
|
||||
"antd": "^5.21.1",
|
||||
"framer-motion": "^11.9.0",
|
||||
"lucide-react": "^0.263.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-intersection-observer": "^9.13.1",
|
||||
"react-router-dom": "^6.28.0",
|
||||
"react-scripts": "5.0.1",
|
||||
"styled-components": "^6.1.13",
|
||||
"web-vitals": "^2.1.4"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
"react-app",
|
||||
"react-app/jest"
|
||||
]
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.14",
|
||||
"postcss": "^8.4.24",
|
||||
"tailwindcss": "^3.3.2"
|
||||
}
|
||||
}
|
||||
6
postcss.config.js
Normal file
@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
||||
BIN
public/icon.ico
Normal file
|
After Width: | Height: | Size: 90 KiB |
49
public/index.html
Normal file
@ -0,0 +1,49 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/logotip_just_circle.png" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap" rel="stylesheet">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="qWickPost"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/icon.ico" />
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<title>qWickPost</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need JavaScript.</noscript>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
<!-- <!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/smoveicon.ico" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Roboto+Slab:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="qWickPost - упростите ваш социальный маркетинг"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/icon.ico" />
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<title>qWickPost - Управление социальными сетями</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>Для работы этого приложения необходимо включить JavaScript.</noscript>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html> -->
|
||||
BIN
public/logotip_just_circle.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
25
public/manifest.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"short_name": "qWickPost",
|
||||
"name": "qWickPost",
|
||||
"icons": [
|
||||
{
|
||||
"src": "logotip_just_circle.png",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logotip_just_circle.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logotip_just_circle.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
||||
BIN
public/qWick_white.ico
Normal file
|
After Width: | Height: | Size: 90 KiB |
82
src/App.js
Normal file
@ -0,0 +1,82 @@
|
||||
// import React from 'react';
|
||||
// import BufferLandingPage from './components/BufferLandingPage';
|
||||
|
||||
// function App() {
|
||||
// return (
|
||||
// <BufferLandingPage />
|
||||
// );
|
||||
// }
|
||||
|
||||
// export default App;
|
||||
|
||||
// import React from 'react';
|
||||
// import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
||||
// import BufferLandingPage from './components/BufferLandingPage';
|
||||
// import PricingPage from './components/PricingPage';
|
||||
|
||||
// function App() {
|
||||
// return (
|
||||
// <Router>
|
||||
// <Routes>
|
||||
// <Route path="/" element={<BufferLandingPage />} />
|
||||
// <Route path="/pricing" element={<PricingPage />} />
|
||||
// </Routes>
|
||||
// </Router>
|
||||
// );
|
||||
// }
|
||||
|
||||
// export default App;
|
||||
|
||||
|
||||
// import React from 'react';
|
||||
// import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
||||
// import BufferLandingPage from './components/BufferLandingPage';
|
||||
// import PricingPage from './components/PricingPage';
|
||||
// import { LanguageProvider } from './contexts/LanguageContext';
|
||||
// import ScrollToTop from './components/ScrollToTop';
|
||||
|
||||
// function App() {
|
||||
// return (
|
||||
// <LanguageProvider>
|
||||
// <Router>
|
||||
// <ScrollToTop />
|
||||
// <Routes>
|
||||
// <Route path="/" element={<BufferLandingPage />} />
|
||||
// <Route path="/pricing" element={<PricingPage />} />
|
||||
// </Routes>
|
||||
// </Router>
|
||||
// </LanguageProvider>
|
||||
// );
|
||||
// }
|
||||
|
||||
// export default App;
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
||||
import BufferLandingPage from './components/BufferLandingPage';
|
||||
import PricingPage from './components/PricingPage';
|
||||
import { LanguageProvider } from './contexts/LanguageContext';
|
||||
import RTLProvider from './contexts/RTLProvider';
|
||||
import ScrollToTop from './components/ScrollToTop';
|
||||
|
||||
// Импорт глобальных стилей для RTL
|
||||
import './styles/rtl.css';
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<LanguageProvider>
|
||||
<RTLProvider>
|
||||
<Router>
|
||||
<ScrollToTop />
|
||||
<Routes>
|
||||
<Route path="/" element={<BufferLandingPage />} />
|
||||
<Route path="/pricing" element={<PricingPage />} />
|
||||
</Routes>
|
||||
</Router>
|
||||
</RTLProvider>
|
||||
</LanguageProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export default App;
|
||||
BIN
src/assets/images/backpattern.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
17
src/assets/images/icon.svg
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 378.95 128.55">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #363;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="_Слой_13" data-name="Слой 13">
|
||||
<path class="cls-1" d="m49.05,128.55v-59.85c0-9.7-3.55-14.55-10.65-14.55-2.8,0-5.28,1.03-7.42,3.07-2.15,2.05-3.23,4.48-3.23,7.27,0,3,1.02,5.55,3.08,7.65,2.05,2.1,4.47,3.15,7.27,3.15,2.4,0,4.65-.85,6.75-2.55v30.15c-2,.3-4,.45-6,.45-10.8,0-19.98-3.72-27.52-11.17C3.77,84.73,0,75.65,0,64.95s3.75-19.58,11.25-26.92c7.5-7.35,16.7-11.03,27.6-11.03s19.77,3.73,26.92,11.18c7.15,7.45,10.73,17.28,10.73,29.48v60.9h-27.45Z"/>
|
||||
<path class="cls-1" d="m186.73,3.6v71.4c0,8.9-2.7,16.18-8.1,21.82-5.4,5.65-12.45,8.48-21.15,8.48-10.3,0-18.2-4.7-23.7-14.1-3.2,4.9-6.7,8.48-10.5,10.73-3.8,2.25-8.65,3.38-14.55,3.38-9,0-15.9-2.8-20.7-8.4-4.8-5.6-7.2-13.75-7.2-24.45V3.6h29.85v64.35c0,3,.23,5.08.67,6.23.45,1.15,1.47,1.73,3.08,1.73,3,0,4.5-2.5,4.5-7.5V3.6h29.7v64.35c0,3.1.27,5.2.83,6.3.55,1.1,1.58,1.65,3.08,1.65,2.9,0,4.35-2.65,4.35-7.95V3.6h29.85Z"/>
|
||||
<path class="cls-1" d="m218.5,32.55v73.05h-27.45V32.55h27.45Zm-26.7-19.35c0-3.7,1.27-6.83,3.83-9.38,2.55-2.55,5.67-3.83,9.38-3.83s6.82,1.27,9.38,3.83c2.55,2.55,3.82,5.68,3.82,9.38s-1.27,6.82-3.82,9.38c-2.55,2.55-5.68,3.82-9.38,3.82s-6.83-1.27-9.38-3.82c-2.55-2.55-3.83-5.67-3.83-9.38Z"/>
|
||||
<path class="cls-1" d="m298.73,70.43c-.8,10.6-4.88,19.25-12.22,25.95-7.35,6.7-15.93,10.05-25.72,10.05-10.4,0-19.33-3.75-26.78-11.25-7.45-7.5-11.17-16.5-11.17-27s3.72-19.47,11.17-26.92c7.45-7.45,16.37-11.18,26.78-11.18,8.9,0,16.85,2.8,23.85,8.4,7,5.6,11.45,13.05,13.35,22.35l-28.2.9c-2.2-3.1-5.2-4.65-9-4.65-3,0-5.58,1.1-7.73,3.3-2.15,2.2-3.22,4.8-3.22,7.8s1.07,5.62,3.22,7.88c2.15,2.25,4.73,3.38,7.73,3.38,2.4,0,4.57-.7,6.52-2.1,1.95-1.4,3.27-3.35,3.98-5.85l27.45-1.05Z"/>
|
||||
<path class="cls-1" d="m330.5,4.73v100.05h-27.45V4.73h27.45Zm42,27l-13.5,26.55,19.95,46.5h-30.3l-17.1-47.7,12.45-25.35h28.5Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
15
src/assets/images/icon2.svg
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 125.55 149.28">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #063;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="_Слой_14_копия_" data-name="Слой 14 (копия)">
|
||||
<path class="cls-1" d="m49.05,149.28v-54.97c0-8.91-3.55-13.36-10.65-13.36-2.8,0-5.28.94-7.42,2.82-2.15,1.88-3.23,4.11-3.23,6.68,0,2.76,1.02,5.1,3.08,7.03,2.05,1.93,4.47,2.89,7.27,2.89q2.4,0,6.75,0v25.36c-2,.28-4,.41-6,.41-10.8,0-19.98-3.42-27.52-10.26-7.55-6.84-11.33-15.18-11.33-25s3.75-17.98,11.25-24.73c7.5-6.75,16.7-10.13,27.6-10.13s19.77,3.42,26.92,10.26c7.15,6.84,10.73,15.87,10.73,27.07v55.93h-27.45Z"/>
|
||||
<path class="cls-1" d="m76.5,103.05h-27.45v-60.9c0-11.9,3.57-21.65,10.73-29.25,7.15-7.6,16.12-11.4,26.92-11.4s20.1,3.68,27.6,11.03c7.5,7.35,11.25,16.33,11.25,26.92s-3.78,19.65-11.33,27.15c-7.55,7.5-16.53,11.25-26.92,11.25-2.2,0-4.4-.2-6.6-.6l-.03-27.73c5.66.11,5.67.31,8.47.06,3.2-.29,3.65-.95,5.65-3,2-2.05,3-4.58,3-7.58,0-2.8-1.05-5.22-3.15-7.27-2.1-2.05-4.6-3.07-7.5-3.07-7.1,0-10.65,4.85-10.65,14.55v59.85Z"/>
|
||||
<rect class="cls-1" x="49.06" width="27.45" height="40.44"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/logo200x50.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
393
src/assets/images/logoo.svg
Normal file
@ -0,0 +1,393 @@
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="100%" viewBox="0 0 1361 994" enable-background="new 0 0 1361 994" xml:space="preserve">
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M924.000000,995.000000
|
||||
C616.000000,995.000000 308.500000,995.000000 1.000000,995.000000
|
||||
C1.000000,663.666687 1.000000,332.333344 1.000000,1.000000
|
||||
C454.666656,1.000000 908.333313,1.000000 1362.000000,1.000000
|
||||
C1362.000000,332.333344 1362.000000,663.666687 1362.000000,995.000000
|
||||
C1216.166626,995.000000 1070.333374,995.000000 924.000000,995.000000
|
||||
M728.989990,853.301086
|
||||
C727.660339,860.509888 725.273438,867.716858 725.260681,874.928040
|
||||
C725.243652,884.584717 724.203247,894.186462 726.651306,904.063110
|
||||
C730.147217,918.166931 735.140015,930.643677 746.893738,939.842468
|
||||
C752.026611,943.859741 755.042725,944.063965 757.792786,938.152283
|
||||
C762.947083,927.072327 767.573425,915.726379 771.943542,904.308838
|
||||
C775.020386,896.270020 777.801880,888.048889 779.821228,879.693054
|
||||
C782.074341,870.370178 784.071411,860.862793 784.828918,851.328430
|
||||
C786.111450,835.185120 786.823792,818.958313 786.853943,802.764954
|
||||
C786.880981,788.240540 785.792542,773.706482 784.945007,759.191345
|
||||
C784.544128,752.326721 783.557983,745.496338 782.833313,738.650757
|
||||
C782.385132,734.416443 782.053101,730.165100 781.450745,725.952637
|
||||
C780.388733,718.526367 779.183350,711.120239 777.994507,703.712646
|
||||
C776.703369,695.667725 775.394226,687.625366 774.034424,679.591858
|
||||
C772.729492,671.882751 771.344360,664.187256 770.004211,656.484131
|
||||
C767.743958,643.492615 765.486145,630.500610 763.238586,617.506958
|
||||
C762.592407,613.770996 761.984924,610.028381 761.262390,605.706726
|
||||
C771.752930,607.339478 781.810303,605.161133 792.225708,607.549988
|
||||
C802.523804,609.911865 813.648865,608.700500 824.412903,608.990662
|
||||
C838.174622,609.361633 851.939514,609.988403 865.700745,609.933838
|
||||
C895.464111,609.815796 925.225708,609.301941 954.988647,609.013733
|
||||
C970.996033,608.858704 986.919861,608.765015 1002.878784,606.246277
|
||||
C1017.884766,603.877991 1033.335083,605.185974 1048.293335,601.151917
|
||||
C1056.276245,598.999023 1064.687012,598.475281 1072.860107,596.973083
|
||||
C1081.011597,595.474976 1089.128906,593.770386 1097.219360,591.968811
|
||||
C1102.287964,590.840210 1107.211548,588.921509 1112.319824,588.137329
|
||||
C1123.220337,586.464111 1133.314819,582.318726 1143.596802,578.721008
|
||||
C1149.720337,576.578369 1155.808716,574.331116 1161.875854,572.033081
|
||||
C1165.530273,570.648865 1169.234741,569.313599 1172.703735,567.539856
|
||||
C1179.920898,563.849792 1187.016113,559.918579 1194.124634,556.019409
|
||||
C1201.035156,552.228882 1208.093872,548.659546 1214.731812,544.434326
|
||||
C1221.838013,539.910950 1228.586426,534.813293 1235.382080,529.818115
|
||||
C1240.351318,526.165405 1245.455200,522.606140 1249.945801,518.412598
|
||||
C1257.423584,511.429657 1264.552979,504.063110 1271.642090,496.678558
|
||||
C1275.703369,492.447968 1279.421387,487.885315 1283.246094,483.431030
|
||||
C1286.208374,479.981262 1289.007202,476.386688 1292.062988,473.023956
|
||||
C1293.198120,471.774841 1294.857300,471.001587 1296.278564,470.012970
|
||||
C1297.165161,469.396271 1298.491333,468.979523 1298.871338,468.135712
|
||||
C1301.684326,461.888947 1304.766357,455.705414 1306.868896,449.212219
|
||||
C1309.111938,442.284515 1310.506592,435.066864 1312.005249,427.920013
|
||||
C1312.707520,424.571350 1313.100220,421.090454 1313.088867,417.671295
|
||||
C1313.044434,404.164825 1313.803589,390.541565 1312.263550,377.192474
|
||||
C1311.146851,367.512299 1307.173096,358.092316 1303.894409,348.759674
|
||||
C1302.199097,343.933350 1299.442749,339.431274 1296.806763,334.996185
|
||||
C1293.573730,329.556885 1290.131836,324.221985 1286.458984,319.070984
|
||||
C1284.111938,315.779266 1281.348755,312.735657 1278.473022,309.882141
|
||||
C1275.011353,306.447144 1271.270630,303.287628 1267.579224,300.091400
|
||||
C1264.407471,297.345245 1261.325317,294.433167 1257.862793,292.100037
|
||||
C1252.692627,288.616089 1247.332886,285.374390 1241.854126,282.396851
|
||||
C1234.520264,278.411133 1227.249023,274.109161 1219.488525,271.160095
|
||||
C1209.791992,267.475311 1199.756958,264.421478 1189.623779,262.218842
|
||||
C1179.759277,260.074585 1169.590576,259.315918 1159.545044,258.030151
|
||||
C1157.739502,257.799072 1155.869751,258.099548 1154.052856,257.920502
|
||||
C1144.596680,256.988647 1135.161255,255.355667 1125.693237,255.152359
|
||||
C1112.777466,254.875015 1099.813843,255.294540 1086.919800,256.152985
|
||||
C1080.160278,256.603058 1073.439941,258.361542 1066.818970,260.001862
|
||||
C1056.885986,262.462769 1047.011719,265.189606 1037.196655,268.088440
|
||||
C1029.895630,270.244812 1022.505798,272.345551 1015.557495,275.388947
|
||||
C1006.983276,279.144501 998.700439,283.628113 990.525513,288.213928
|
||||
C983.215698,292.314392 976.208191,296.956635 969.096130,301.405792
|
||||
C963.749756,304.750366 958.253235,307.901459 953.182434,311.627014
|
||||
C948.033813,315.409790 943.369751,319.845947 938.409729,323.893311
|
||||
C934.398987,327.166107 930.079712,330.080322 926.226379,333.522034
|
||||
C920.239136,338.869720 914.432190,344.430511 908.738647,350.091980
|
||||
C904.680481,354.127350 900.898865,358.444427 897.057678,362.693573
|
||||
C891.786255,368.524872 886.544800,374.383972 881.349182,380.282837
|
||||
C877.799316,384.313202 874.257996,388.357788 870.885864,392.535645
|
||||
C868.435913,395.570892 866.369812,398.913971 863.954773,401.979736
|
||||
C859.131165,408.103027 854.069336,414.040833 849.322571,420.221649
|
||||
C844.464966,426.546844 839.693970,432.953705 835.207947,439.544586
|
||||
C831.416565,445.114899 828.210999,451.080566 824.521973,456.724701
|
||||
C819.731689,464.053772 814.474731,471.086121 809.866699,478.523743
|
||||
C804.520508,487.152832 799.675964,496.092041 794.584106,504.879517
|
||||
C790.060852,512.685852 785.468018,520.451965 780.958862,528.266357
|
||||
C775.604675,537.545227 770.146057,546.769653 765.046997,556.187805
|
||||
C762.123474,561.587585 759.823425,567.324951 757.088135,573.244812
|
||||
C756.382263,572.611694 755.467285,572.193970 755.292358,571.569092
|
||||
C754.109131,567.340881 753.173523,563.043335 751.986755,558.816223
|
||||
C749.045288,548.338684 746.118774,537.854736 742.984436,527.434082
|
||||
C740.128784,517.939819 737.028015,508.518951 733.998230,499.077606
|
||||
C730.374390,487.785126 726.952271,476.419769 722.990845,465.246246
|
||||
C719.663696,455.861633 715.723389,446.692688 711.988770,437.454834
|
||||
C709.055786,430.200043 706.109680,422.948242 703.014038,415.761993
|
||||
C697.781738,403.615753 692.439636,391.516663 687.115417,379.410187
|
||||
C685.468994,375.666443 683.917419,371.863739 681.999573,368.259766
|
||||
C676.416809,357.768555 670.686951,347.355347 664.982422,336.929260
|
||||
C661.669922,330.874939 658.487000,324.737915 654.903137,318.846558
|
||||
C649.648010,310.207947 644.198120,301.681763 638.613953,293.251617
|
||||
C635.103943,287.952667 631.168518,282.936920 627.475281,277.757568
|
||||
C623.960938,272.829132 620.570251,267.811890 617.022400,262.908081
|
||||
C612.114258,256.124084 607.190063,249.348450 602.112061,242.691879
|
||||
C599.651917,239.467010 596.806458,236.537796 594.169983,233.445236
|
||||
C590.347412,228.961288 586.687500,224.330215 582.710144,219.989166
|
||||
C579.484436,216.468536 575.777039,213.393051 572.488647,209.925339
|
||||
C565.626953,202.689514 559.154236,195.066788 552.042603,188.091537
|
||||
C545.890991,182.057907 539.142639,176.621735 532.538757,171.063156
|
||||
C525.101379,164.803055 517.668823,158.522232 509.974426,152.587128
|
||||
C503.665100,147.720398 497.007843,143.299759 490.445221,138.767685
|
||||
C483.003601,133.628601 475.680603,128.280991 467.960510,123.593040
|
||||
C461.268127,119.529137 454.142944,116.159836 447.119751,112.662949
|
||||
C435.958282,107.105614 424.833191,101.453026 413.477753,96.315819
|
||||
C406.375519,93.102753 398.973907,90.462471 391.536560,88.100693
|
||||
C381.166962,84.807755 370.706451,81.744347 360.156189,79.095146
|
||||
C351.807434,76.998756 343.297363,75.479935 334.799774,74.058327
|
||||
C325.462250,72.496216 316.084381,71.078850 306.672455,70.089653
|
||||
C299.454071,69.331009 292.156647,69.085472 284.892395,69.052971
|
||||
C270.714081,68.989525 256.546570,68.629211 242.513077,71.869461
|
||||
C233.799606,73.881340 224.761063,74.440506 215.943634,76.060966
|
||||
C208.764420,77.380371 201.712128,79.376671 194.576279,80.949127
|
||||
C184.219086,83.231453 174.097336,86.118301 164.471161,90.727135
|
||||
C158.011169,93.820076 150.857056,95.639404 144.768692,99.288544
|
||||
C136.858383,104.029686 128.836731,109.170578 122.412186,115.670601
|
||||
C112.276840,125.924995 103.200638,137.267776 94.119545,148.508102
|
||||
C88.008980,156.071594 82.284729,164.013397 77.085663,172.227737
|
||||
C72.260803,179.850845 67.724884,187.789703 64.208511,196.076172
|
||||
C59.254440,207.750626 54.846218,219.719467 51.183620,231.857834
|
||||
C48.612637,240.378448 47.409775,249.352509 46.101295,258.198822
|
||||
C45.259983,263.886749 44.812092,269.738342 45.119560,275.466583
|
||||
C45.610477,284.612610 44.970421,293.811096 47.791637,302.881439
|
||||
C49.703903,309.029510 49.183601,315.901550 50.775455,322.190552
|
||||
C52.565670,329.263245 55.461571,336.061127 57.962830,342.947174
|
||||
C59.845287,348.129669 61.309582,353.567230 63.939064,358.353363
|
||||
C69.177528,367.888306 75.296219,376.935883 80.671013,386.400757
|
||||
C87.364540,398.187866 96.410698,408.113068 105.431671,417.990570
|
||||
C113.557961,426.888428 122.454384,435.087860 131.097046,443.507141
|
||||
C135.596008,447.889862 140.059982,452.356232 144.942368,456.284424
|
||||
C149.941772,460.306824 155.473419,463.661560 160.699417,467.409882
|
||||
C168.307602,472.866943 175.651291,478.720184 183.481689,483.831665
|
||||
C190.322662,488.297272 197.325180,492.913849 204.895813,495.766663
|
||||
C215.344330,499.703888 226.362717,502.163361 237.195465,505.035187
|
||||
C245.660965,507.279480 254.259933,509.022308 262.717957,511.292175
|
||||
C271.332367,513.604004 279.810547,516.420837 288.414551,518.774597
|
||||
C298.902924,521.643860 309.433228,524.371399 319.994873,526.958252
|
||||
C332.745697,530.081421 345.536560,533.044678 358.335022,535.968079
|
||||
C362.927032,537.017029 367.643280,537.539856 372.211487,538.671631
|
||||
C380.097595,540.625427 387.858551,543.099854 395.770630,544.929260
|
||||
C405.422455,547.161072 415.181274,548.927795 424.883453,550.945557
|
||||
C429.498627,551.905396 434.064270,553.119629 438.697998,553.969971
|
||||
C444.946167,555.116699 451.307709,555.716553 457.493591,557.113342
|
||||
C464.784210,558.759583 471.889252,561.217957 479.166199,562.937012
|
||||
C487.232697,564.842712 495.388733,566.382812 503.531433,567.948669
|
||||
C511.045685,569.393677 518.619629,570.534851 526.118591,572.050659
|
||||
C531.529785,573.144348 536.819275,574.849609 542.237427,575.897339
|
||||
C551.829773,577.752441 561.478577,579.315430 571.104004,580.999146
|
||||
C579.767456,582.514587 588.439087,583.984436 597.092407,585.555359
|
||||
C604.937256,586.979431 612.741699,588.634277 620.601501,589.965942
|
||||
C629.447205,591.464661 638.346802,592.642822 647.201111,594.093750
|
||||
C656.683167,595.647522 666.135559,597.380981 675.608704,598.990295
|
||||
C683.641724,600.354919 691.656616,601.882629 699.733521,602.916687
|
||||
C707.383972,603.896118 715.116699,604.213440 722.790405,605.035950
|
||||
C728.997925,605.701294 735.171387,606.684814 742.121033,607.630798
|
||||
C738.610168,613.054688 735.857178,617.257446 733.155884,621.493225
|
||||
C729.485352,627.248657 725.932007,633.080444 722.177856,638.780273
|
||||
C719.869507,642.284973 717.132324,645.509094 714.856323,649.032654
|
||||
C712.335388,652.935242 710.275940,657.136780 707.742126,661.030090
|
||||
C701.249451,671.006470 694.401123,680.756042 688.075317,690.835083
|
||||
C680.876099,702.305603 673.917542,713.936584 667.187988,725.688904
|
||||
C663.179321,732.689453 659.947632,740.130249 656.117310,747.238770
|
||||
C652.525513,753.904724 648.161987,760.183838 644.930969,767.008667
|
||||
C639.751709,777.948853 635.154907,789.168579 630.456116,800.330872
|
||||
C628.136292,805.842102 626.118042,811.481201 624.000427,817.076477
|
||||
C621.327942,824.137695 618.618042,831.186523 616.095276,838.301270
|
||||
C615.461426,840.088928 615.681580,842.164551 615.163086,844.010620
|
||||
C613.133057,851.238342 610.132324,858.303589 609.040405,865.659058
|
||||
C607.362854,876.958801 606.870789,888.441650 606.070435,899.860413
|
||||
C605.805908,903.634583 605.944458,907.467590 606.261230,911.243286
|
||||
C606.580933,915.053711 609.682190,917.345215 612.024902,915.591675
|
||||
C620.215088,909.461426 628.420959,903.326111 636.254517,896.755920
|
||||
C640.487671,893.205566 644.384094,889.073914 647.699524,884.654724
|
||||
C651.856750,879.113464 655.577637,873.181091 658.908447,867.100586
|
||||
C662.633667,860.300171 666.225647,853.337769 668.940247,846.095276
|
||||
C672.343994,837.013977 674.888062,827.603088 677.628296,818.283081
|
||||
C679.504517,811.902100 681.213928,805.464905 682.764832,798.996948
|
||||
C685.658752,786.927490 688.199036,774.771057 691.232605,762.738037
|
||||
C693.929199,752.041443 696.928284,741.413147 700.098877,730.846191
|
||||
C703.389832,719.877747 706.844299,708.948547 710.614990,698.137390
|
||||
C713.139465,690.899170 716.181946,683.826782 719.282593,676.808289
|
||||
C722.446228,669.647156 725.918457,662.620239 729.338989,655.575073
|
||||
C733.518860,646.965759 737.626099,638.314758 742.079651,629.847351
|
||||
C744.430847,625.377258 747.451111,621.259033 750.223877,616.895935
|
||||
C751.553955,621.671692 753.507568,625.998108 753.858398,630.450806
|
||||
C754.908691,643.779053 755.781067,657.153076 755.886963,670.515869
|
||||
C756.021179,687.441406 755.664001,704.388977 754.868774,721.296509
|
||||
C754.432251,730.577576 752.851013,739.825378 751.431458,749.033508
|
||||
C750.217590,756.907288 748.590271,764.722229 746.971375,772.526978
|
||||
C745.817505,778.089722 744.316833,783.579529 743.073975,789.125000
|
||||
C741.332703,796.894470 739.717468,804.692261 737.992737,812.465515
|
||||
C736.162903,820.712463 734.263000,828.943970 732.403320,837.184326
|
||||
C731.259216,842.253845 730.132935,847.327393 728.989990,853.301086
|
||||
z"/>
|
||||
<path fill="#22B14C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M728.994263,852.850098
|
||||
C730.132935,847.327393 731.259216,842.253845 732.403320,837.184326
|
||||
C734.263000,828.943970 736.162903,820.712463 737.992737,812.465515
|
||||
C739.717468,804.692261 741.332703,796.894470 743.073975,789.125000
|
||||
C744.316833,783.579529 745.817505,778.089722 746.971375,772.526978
|
||||
C748.590271,764.722229 750.217590,756.907288 751.431458,749.033508
|
||||
C752.851013,739.825378 754.432251,730.577576 754.868774,721.296509
|
||||
C755.664001,704.388977 756.021179,687.441406 755.886963,670.515869
|
||||
C755.781067,657.153076 754.908691,643.779053 753.858398,630.450806
|
||||
C753.507568,625.998108 751.553955,621.671692 750.223877,616.895935
|
||||
C747.451111,621.259033 744.430847,625.377258 742.079651,629.847351
|
||||
C737.626099,638.314758 733.518860,646.965759 729.338989,655.575073
|
||||
C725.918457,662.620239 722.446228,669.647156 719.282593,676.808289
|
||||
C716.181946,683.826782 713.139465,690.899170 710.614990,698.137390
|
||||
C706.844299,708.948547 703.389832,719.877747 700.098877,730.846191
|
||||
C696.928284,741.413147 693.929199,752.041443 691.232605,762.738037
|
||||
C688.199036,774.771057 685.658752,786.927490 682.764832,798.996948
|
||||
C681.213928,805.464905 679.504517,811.902100 677.628296,818.283081
|
||||
C674.888062,827.603088 672.343994,837.013977 668.940247,846.095276
|
||||
C666.225647,853.337769 662.633667,860.300171 658.908447,867.100586
|
||||
C655.577637,873.181091 651.856750,879.113464 647.699524,884.654724
|
||||
C644.384094,889.073914 640.487671,893.205566 636.254517,896.755920
|
||||
C628.420959,903.326111 620.215088,909.461426 612.024902,915.591675
|
||||
C609.682190,917.345215 606.580933,915.053711 606.261230,911.243286
|
||||
C605.944458,907.467590 605.805908,903.634583 606.070435,899.860413
|
||||
C606.870789,888.441650 607.362854,876.958801 609.040405,865.659058
|
||||
C610.132324,858.303589 613.133057,851.238342 615.163086,844.010620
|
||||
C615.681580,842.164551 615.461426,840.088928 616.095276,838.301270
|
||||
C618.618042,831.186523 621.327942,824.137695 624.000427,817.076477
|
||||
C626.118042,811.481201 628.136292,805.842102 630.456116,800.330872
|
||||
C635.154907,789.168579 639.751709,777.948853 644.930969,767.008667
|
||||
C648.161987,760.183838 652.525513,753.904724 656.117310,747.238770
|
||||
C659.947632,740.130249 663.179321,732.689453 667.187988,725.688904
|
||||
C673.917542,713.936584 680.876099,702.305603 688.075317,690.835083
|
||||
C694.401123,680.756042 701.249451,671.006470 707.742126,661.030090
|
||||
C710.275940,657.136780 712.335388,652.935242 714.856323,649.032654
|
||||
C717.132324,645.509094 719.869507,642.284973 722.177856,638.780273
|
||||
C725.932007,633.080444 729.485352,627.248657 733.155884,621.493225
|
||||
C735.857178,617.257446 738.610168,613.054688 742.121033,607.630798
|
||||
C735.171387,606.684814 728.997925,605.701294 722.790405,605.035950
|
||||
C715.116699,604.213440 707.383972,603.896118 699.733521,602.916687
|
||||
C691.656616,601.882629 683.641724,600.354919 675.608704,598.990295
|
||||
C666.135559,597.380981 656.683167,595.647522 647.201111,594.093750
|
||||
C638.346802,592.642822 629.447205,591.464661 620.601501,589.965942
|
||||
C612.741699,588.634277 604.937256,586.979431 597.092407,585.555359
|
||||
C588.439087,583.984436 579.767456,582.514587 571.104004,580.999146
|
||||
C561.478577,579.315430 551.829773,577.752441 542.237427,575.897339
|
||||
C536.819275,574.849609 531.529785,573.144348 526.118591,572.050659
|
||||
C518.619629,570.534851 511.045685,569.393677 503.531433,567.948669
|
||||
C495.388733,566.382812 487.232697,564.842712 479.166199,562.937012
|
||||
C471.889252,561.217957 464.784210,558.759583 457.493591,557.113342
|
||||
C451.307709,555.716553 444.946167,555.116699 438.697998,553.969971
|
||||
C434.064270,553.119629 429.498627,551.905396 424.883453,550.945557
|
||||
C415.181274,548.927795 405.422455,547.161072 395.770630,544.929260
|
||||
C387.858551,543.099854 380.097595,540.625427 372.211487,538.671631
|
||||
C367.643280,537.539856 362.927032,537.017029 358.335022,535.968079
|
||||
C345.536560,533.044678 332.745697,530.081421 319.994873,526.958252
|
||||
C309.433228,524.371399 298.902924,521.643860 288.414551,518.774597
|
||||
C279.810547,516.420837 271.332367,513.604004 262.717957,511.292175
|
||||
C254.259933,509.022308 245.660965,507.279480 237.195465,505.035187
|
||||
C226.362717,502.163361 215.344330,499.703888 204.895813,495.766663
|
||||
C197.325180,492.913849 190.322662,488.297272 183.481689,483.831665
|
||||
C175.651291,478.720184 168.307602,472.866943 160.699417,467.409882
|
||||
C155.473419,463.661560 149.941772,460.306824 144.942368,456.284424
|
||||
C140.059982,452.356232 135.596008,447.889862 131.097046,443.507141
|
||||
C122.454384,435.087860 113.557961,426.888428 105.431671,417.990570
|
||||
C96.410698,408.113068 87.364540,398.187866 80.671013,386.400757
|
||||
C75.296219,376.935883 69.177528,367.888306 63.939064,358.353363
|
||||
C61.309582,353.567230 59.845287,348.129669 57.962830,342.947174
|
||||
C55.461571,336.061127 52.565670,329.263245 50.775455,322.190552
|
||||
C49.183601,315.901550 49.703903,309.029510 47.791637,302.881439
|
||||
C44.970421,293.811096 45.610477,284.612610 45.119560,275.466583
|
||||
C44.812092,269.738342 45.259983,263.886749 46.101295,258.198822
|
||||
C47.409775,249.352509 48.612637,240.378448 51.183620,231.857834
|
||||
C54.846218,219.719467 59.254440,207.750626 64.208511,196.076172
|
||||
C67.724884,187.789703 72.260803,179.850845 77.085663,172.227737
|
||||
C82.284729,164.013397 88.008980,156.071594 94.119545,148.508102
|
||||
C103.200638,137.267776 112.276840,125.924995 122.412186,115.670601
|
||||
C128.836731,109.170578 136.858383,104.029686 144.768692,99.288544
|
||||
C150.857056,95.639404 158.011169,93.820076 164.471161,90.727135
|
||||
C174.097336,86.118301 184.219086,83.231453 194.576279,80.949127
|
||||
C201.712128,79.376671 208.764420,77.380371 215.943634,76.060966
|
||||
C224.761063,74.440506 233.799606,73.881340 242.513077,71.869461
|
||||
C256.546570,68.629211 270.714081,68.989525 284.892395,69.052971
|
||||
C292.156647,69.085472 299.454071,69.331009 306.672455,70.089653
|
||||
C316.084381,71.078850 325.462250,72.496216 334.799774,74.058327
|
||||
C343.297363,75.479935 351.807434,76.998756 360.156189,79.095146
|
||||
C370.706451,81.744347 381.166962,84.807755 391.536560,88.100693
|
||||
C398.973907,90.462471 406.375519,93.102753 413.477753,96.315819
|
||||
C424.833191,101.453026 435.958282,107.105614 447.119751,112.662949
|
||||
C454.142944,116.159836 461.268127,119.529137 467.960510,123.593040
|
||||
C475.680603,128.280991 483.003601,133.628601 490.445221,138.767685
|
||||
C497.007843,143.299759 503.665100,147.720398 509.974426,152.587128
|
||||
C517.668823,158.522232 525.101379,164.803055 532.538757,171.063156
|
||||
C539.142639,176.621735 545.890991,182.057907 552.042603,188.091537
|
||||
C559.154236,195.066788 565.626953,202.689514 572.488647,209.925339
|
||||
C575.777039,213.393051 579.484436,216.468536 582.710144,219.989166
|
||||
C586.687500,224.330215 590.347412,228.961288 594.169983,233.445236
|
||||
C596.806458,236.537796 599.651917,239.467010 602.112061,242.691879
|
||||
C607.190063,249.348450 612.114258,256.124084 617.022400,262.908081
|
||||
C620.570251,267.811890 623.960938,272.829132 627.475281,277.757568
|
||||
C631.168518,282.936920 635.103943,287.952667 638.613953,293.251617
|
||||
C644.198120,301.681763 649.648010,310.207947 654.903137,318.846558
|
||||
C658.487000,324.737915 661.669922,330.874939 664.982422,336.929260
|
||||
C670.686951,347.355347 676.416809,357.768555 681.999573,368.259766
|
||||
C683.917419,371.863739 685.468994,375.666443 687.115417,379.410187
|
||||
C692.439636,391.516663 697.781738,403.615753 703.014038,415.761993
|
||||
C706.109680,422.948242 709.055786,430.200043 711.988770,437.454834
|
||||
C715.723389,446.692688 719.663696,455.861633 722.990845,465.246246
|
||||
C726.952271,476.419769 730.374390,487.785126 733.998230,499.077606
|
||||
C737.028015,508.518951 740.128784,517.939819 742.984436,527.434082
|
||||
C746.118774,537.854736 749.045288,548.338684 751.986755,558.816223
|
||||
C753.173523,563.043335 754.109131,567.340881 755.292358,571.569092
|
||||
C755.467285,572.193970 756.382263,572.611694 757.088135,573.244812
|
||||
C759.823425,567.324951 762.123474,561.587585 765.046997,556.187805
|
||||
C770.146057,546.769653 775.604675,537.545227 780.958862,528.266357
|
||||
C785.468018,520.451965 790.060852,512.685852 794.584106,504.879517
|
||||
C799.675964,496.092041 804.520508,487.152832 809.866699,478.523743
|
||||
C814.474731,471.086121 819.731689,464.053772 824.521973,456.724701
|
||||
C828.210999,451.080566 831.416565,445.114899 835.207947,439.544586
|
||||
C839.693970,432.953705 844.464966,426.546844 849.322571,420.221649
|
||||
C854.069336,414.040833 859.131165,408.103027 863.954773,401.979736
|
||||
C866.369812,398.913971 868.435913,395.570892 870.885864,392.535645
|
||||
C874.257996,388.357788 877.799316,384.313202 881.349182,380.282837
|
||||
C886.544800,374.383972 891.786255,368.524872 897.057678,362.693573
|
||||
C900.898865,358.444427 904.680481,354.127350 908.738647,350.091980
|
||||
C914.432190,344.430511 920.239136,338.869720 926.226379,333.522034
|
||||
C930.079712,330.080322 934.398987,327.166107 938.409729,323.893311
|
||||
C943.369751,319.845947 948.033813,315.409790 953.182434,311.627014
|
||||
C958.253235,307.901459 963.749756,304.750366 969.096130,301.405792
|
||||
C976.208191,296.956635 983.215698,292.314392 990.525513,288.213928
|
||||
C998.700439,283.628113 1006.983276,279.144501 1015.557495,275.388947
|
||||
C1022.505798,272.345551 1029.895630,270.244812 1037.196655,268.088440
|
||||
C1047.011719,265.189606 1056.885986,262.462769 1066.818970,260.001862
|
||||
C1073.439941,258.361542 1080.160278,256.603058 1086.919800,256.152985
|
||||
C1099.813843,255.294540 1112.777466,254.875015 1125.693237,255.152359
|
||||
C1135.161255,255.355667 1144.596680,256.988647 1154.052856,257.920502
|
||||
C1155.869751,258.099548 1157.739502,257.799072 1159.545044,258.030151
|
||||
C1169.590576,259.315918 1179.759277,260.074585 1189.623779,262.218842
|
||||
C1199.756958,264.421478 1209.791992,267.475311 1219.488525,271.160095
|
||||
C1227.249023,274.109161 1234.520264,278.411133 1241.854126,282.396851
|
||||
C1247.332886,285.374390 1252.692627,288.616089 1257.862793,292.100037
|
||||
C1261.325317,294.433167 1264.407471,297.345245 1267.579224,300.091400
|
||||
C1271.270630,303.287628 1275.011353,306.447144 1278.473022,309.882141
|
||||
C1281.348755,312.735657 1284.111938,315.779266 1286.458984,319.070984
|
||||
C1290.131836,324.221985 1293.573730,329.556885 1296.806763,334.996185
|
||||
C1299.442749,339.431274 1302.199097,343.933350 1303.894409,348.759674
|
||||
C1307.173096,358.092316 1311.146851,367.512299 1312.263550,377.192474
|
||||
C1313.803589,390.541565 1313.044434,404.164825 1313.088867,417.671295
|
||||
C1313.100220,421.090454 1312.707520,424.571350 1312.005249,427.920013
|
||||
C1310.506592,435.066864 1309.111938,442.284515 1306.868896,449.212219
|
||||
C1304.766357,455.705414 1301.684326,461.888947 1298.871338,468.135712
|
||||
C1298.491333,468.979523 1297.165161,469.396271 1296.278564,470.012970
|
||||
C1294.857300,471.001587 1293.198120,471.774841 1292.062988,473.023956
|
||||
C1289.007202,476.386688 1286.208374,479.981262 1283.246094,483.431030
|
||||
C1279.421387,487.885315 1275.703369,492.447968 1271.642090,496.678558
|
||||
C1264.552979,504.063110 1257.423584,511.429657 1249.945801,518.412598
|
||||
C1245.455200,522.606140 1240.351318,526.165405 1235.382080,529.818115
|
||||
C1228.586426,534.813293 1221.838013,539.910950 1214.731812,544.434326
|
||||
C1208.093872,548.659546 1201.035156,552.228882 1194.124634,556.019409
|
||||
C1187.016113,559.918579 1179.920898,563.849792 1172.703735,567.539856
|
||||
C1169.234741,569.313599 1165.530273,570.648865 1161.875854,572.033081
|
||||
C1155.808716,574.331116 1149.720337,576.578369 1143.596802,578.721008
|
||||
C1133.314819,582.318726 1123.220337,586.464111 1112.319824,588.137329
|
||||
C1107.211548,588.921509 1102.287964,590.840210 1097.219360,591.968811
|
||||
C1089.128906,593.770386 1081.011597,595.474976 1072.860107,596.973083
|
||||
C1064.687012,598.475281 1056.276245,598.999023 1048.293335,601.151917
|
||||
C1033.335083,605.185974 1017.884766,603.877991 1002.878784,606.246277
|
||||
C986.919861,608.765015 970.996033,608.858704 954.988647,609.013733
|
||||
C925.225708,609.301941 895.464111,609.815796 865.700745,609.933838
|
||||
C851.939514,609.988403 838.174622,609.361633 824.412903,608.990662
|
||||
C813.648865,608.700500 802.523804,609.911865 792.225708,607.549988
|
||||
C781.810303,605.161133 771.752930,607.339478 761.262390,605.706726
|
||||
C761.984924,610.028381 762.592407,613.770996 763.238586,617.506958
|
||||
C765.486145,630.500610 767.743958,643.492615 770.004211,656.484131
|
||||
C771.344360,664.187256 772.729492,671.882751 774.034424,679.591858
|
||||
C775.394226,687.625366 776.703369,695.667725 777.994507,703.712646
|
||||
C779.183350,711.120239 780.388733,718.526367 781.450745,725.952637
|
||||
C782.053101,730.165100 782.385132,734.416443 782.833313,738.650757
|
||||
C783.557983,745.496338 784.544128,752.326721 784.945007,759.191345
|
||||
C785.792542,773.706482 786.880981,788.240540 786.853943,802.764954
|
||||
C786.823792,818.958313 786.111450,835.185120 784.828918,851.328430
|
||||
C784.071411,860.862793 782.074341,870.370178 779.821228,879.693054
|
||||
C777.801880,888.048889 775.020386,896.270020 771.943542,904.308838
|
||||
C767.573425,915.726379 762.947083,927.072327 757.792786,938.152283
|
||||
C755.042725,944.063965 752.026611,943.859741 746.893738,939.842468
|
||||
C735.140015,930.643677 730.147217,918.166931 726.651306,904.063110
|
||||
C724.203247,894.186462 725.243652,884.584717 725.260681,874.928040
|
||||
C725.273438,867.716858 727.660339,860.509888 728.994263,852.850098
|
||||
z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 26 KiB |
20
src/assets/images/logosmove.svg
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 184.57 176.52">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #fff;
|
||||
}
|
||||
|
||||
.cls-2 {
|
||||
fill: #063;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="_Слой_18" data-name="Слой 18">
|
||||
<path class="cls-2" d="m145.41,176.52H39.17c-21.63,0-39.17-16.77-39.17-37.46V37.46C0,16.77,17.54,0,39.17,0h106.24c21.63,0,39.17,16.77,39.17,37.46v101.6c0,20.69-17.54,37.46-39.17,37.46Z"/>
|
||||
<path class="cls-1" d="m78.55,160.28v-54.97c0-8.91-3.55-13.36-10.65-13.36-2.8,0-5.28.94-7.42,2.82-2.15,1.88-3.23,4.11-3.23,6.68,0,2.76,1.02,5.1,3.08,7.03,2.05,1.93,4.47,2.89,7.27,2.89q2.4,0,6.75,0v25.36c-2,.28-4,.41-6,.41-10.8,0-19.98-3.42-27.52-10.26-7.55-6.84-11.33-15.18-11.33-25s3.75-17.98,11.25-24.73c7.5-6.75,16.7-10.13,27.6-10.13s19.77,3.42,26.92,10.26c7.15,6.84,10.73,15.87,10.73,27.07v55.93h-27.45Z"/>
|
||||
<path class="cls-1" d="m106,121.05h-27.45v-60.9c0-11.9,3.57-21.65,10.73-29.25,7.15-7.6,16.12-11.4,26.92-11.4s20.1,3.68,27.6,11.03c7.5,7.35,11.25,16.33,11.25,26.92s-3.78,19.65-11.33,27.15c-7.55,7.5-16.53,11.25-26.92,11.25-2.2,0-4.4-.2-6.6-.6l-.03-27.73c5.66.11,5.67.31,8.47.06,3.2-.29,3.65-.95,5.65-3,2-2.05,3-4.58,3-7.58,0-2.8-1.05-5.22-3.15-7.27-2.1-2.05-4.6-3.07-7.5-3.07-7.1,0-10.65,4.85-10.65,14.55v59.85Z"/>
|
||||
<rect class="cls-1" x="78.56" y="17" width="27.45" height="40.44"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
531
src/assets/images/logotip.svg
Normal file
@ -0,0 +1,531 @@
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="100%" viewBox="0 0 975 752" enable-background="new 0 0 975 752" xml:space="preserve">
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M679.000000,753.000000
|
||||
C452.666748,753.000000 226.833466,753.000000 1.000151,753.000000
|
||||
C1.000101,502.333466 1.000101,251.666946 1.000051,1.000320
|
||||
C325.999756,1.000213 650.999512,1.000213 975.999451,1.000107
|
||||
C975.999634,251.666367 975.999634,502.332733 975.999817,752.999512
|
||||
C877.166687,753.000000 778.333313,753.000000 679.000000,753.000000
|
||||
M509.000000,374.250000
|
||||
C509.000000,373.500000 509.000000,372.750000 509.695190,371.886047
|
||||
C511.408936,367.860016 508.510986,362.320740 504.000000,360.250000
|
||||
C504.000000,359.500000 504.000000,358.750000 504.695526,357.885864
|
||||
C504.960419,356.933075 505.684998,355.817688 505.414886,355.054169
|
||||
C503.766388,350.394012 502.158356,345.687225 500.041687,341.231140
|
||||
C494.261688,329.062958 488.932709,316.604675 482.158783,305.000519
|
||||
C468.813385,282.138916 455.223633,259.371613 440.601532,237.316696
|
||||
C424.401062,212.881027 406.102600,189.943756 384.918854,169.536072
|
||||
C375.970886,160.915863 366.702759,152.564499 357.031433,144.771988
|
||||
C337.680389,129.180267 316.107300,117.149765 293.172638,107.748558
|
||||
C280.577789,102.585770 267.198425,99.985023 253.567612,98.990646
|
||||
C250.738831,98.784286 248.462891,99.102180 248.071182,102.970497
|
||||
C238.310394,103.352844 228.342163,102.613800 218.835907,104.372177
|
||||
C203.373077,107.232338 188.062439,111.365639 175.652145,122.081039
|
||||
C167.796844,128.863525 158.442245,134.539612 152.433609,142.684265
|
||||
C143.253525,155.127777 131.094727,164.047546 119.976540,174.115082
|
||||
C109.036797,184.021088 100.082291,195.185989 94.180580,208.395813
|
||||
C83.592278,232.095596 82.315170,256.940430 88.030518,282.137970
|
||||
C94.113319,308.955414 106.672897,332.359253 126.309486,351.656921
|
||||
C134.940033,360.138489 143.950668,368.364197 153.569031,375.680206
|
||||
C169.491913,387.791626 186.944717,397.752899 206.001328,403.784546
|
||||
C221.630615,408.731476 237.973999,411.454163 254.041779,414.976074
|
||||
C275.695099,419.722137 297.405426,424.208282 319.057404,428.960205
|
||||
C334.363312,432.319366 349.604095,435.974152 364.891510,439.419037
|
||||
C372.999268,441.246094 381.142181,442.917847 389.273315,444.640442
|
||||
C400.916260,447.107056 412.598450,449.401215 424.197235,452.059723
|
||||
C434.143921,454.339600 444.214111,455.229340 454.310425,456.431580
|
||||
C466.778503,457.916290 479.160614,459.003418 491.680603,459.000427
|
||||
C500.572906,458.998291 509.465179,459.000000 518.944092,459.000000
|
||||
C518.031494,460.623871 517.572449,461.657104 516.926758,462.556244
|
||||
C509.677887,472.650146 506.256561,483.986206 506.011780,496.324860
|
||||
C505.751648,509.440399 508.680573,521.471741 515.267761,533.186279
|
||||
C521.704590,544.633545 526.014709,557.283142 531.176758,569.439575
|
||||
C540.526672,591.458374 538.344116,613.372131 529.913391,634.975586
|
||||
C525.600403,646.027527 520.476013,656.735474 512.715698,666.010437
|
||||
C511.505035,667.457397 511.418823,671.622131 512.591064,672.904419
|
||||
C514.813354,675.335449 517.513245,673.971375 519.386902,671.219910
|
||||
C528.350281,658.057190 535.888000,644.208984 540.587402,628.898376
|
||||
C546.019592,611.200439 547.518799,593.152649 541.723206,575.565796
|
||||
C536.837463,560.739929 529.457092,546.754395 523.755127,532.172363
|
||||
C520.275391,523.273499 516.687378,514.130615 515.271118,504.775940
|
||||
C512.944153,489.406769 518.050415,475.296448 526.290100,462.314636
|
||||
C527.779114,459.968658 529.523071,458.861969 532.623596,458.896576
|
||||
C551.284180,459.104828 569.949097,459.098328 588.610413,458.925079
|
||||
C592.835632,458.885834 597.082520,458.071991 601.266541,457.320312
|
||||
C610.572876,455.648346 619.803955,453.520203 629.142090,452.070099
|
||||
C643.690857,449.810760 658.353638,448.264587 672.874756,445.854156
|
||||
C688.660583,443.233795 704.332031,439.929199 720.069885,437.012085
|
||||
C725.371155,436.029480 730.736511,435.396759 736.048889,434.468475
|
||||
C746.175781,432.698914 756.223145,430.260376 766.417908,429.145569
|
||||
C780.066589,427.653076 793.636658,425.612610 806.343079,420.600586
|
||||
C819.125671,415.558533 831.787354,409.793640 843.582947,402.796173
|
||||
C853.228699,397.074066 861.736755,389.324615 870.347290,382.001434
|
||||
C877.359558,376.037567 881.790710,367.928802 885.923523,359.849518
|
||||
C888.426636,354.956238 891.083435,349.723267 891.743347,344.403778
|
||||
C892.724915,336.492432 892.178711,328.364563 891.957886,320.337769
|
||||
C891.678101,310.168762 887.098816,301.515381 880.508484,294.292847
|
||||
C875.669922,288.990143 869.559326,284.809601 863.834656,280.362030
|
||||
C852.619080,271.648499 841.523804,262.744904 829.894836,254.611969
|
||||
C822.918762,249.733109 815.335754,245.393570 807.454895,242.235458
|
||||
C800.502319,239.449356 792.706177,238.836823 785.374084,236.915176
|
||||
C768.565186,232.509766 751.900452,235.376175 735.479431,238.528442
|
||||
C725.972595,240.353424 716.926331,244.644043 707.724976,247.969528
|
||||
C702.118652,249.995712 696.243530,251.658081 691.134155,254.602921
|
||||
C679.361694,261.388153 667.822876,268.614288 656.484131,276.107635
|
||||
C641.630005,285.924072 627.602356,296.696869 616.291931,310.782501
|
||||
C610.070007,318.531067 602.533691,325.208832 595.925049,332.666321
|
||||
C588.648254,340.877716 581.399048,349.161102 574.807312,357.917114
|
||||
C569.390991,365.111786 564.880188,372.998016 560.116638,380.669983
|
||||
C557.919373,384.208801 555.963501,387.911530 554.107544,391.644012
|
||||
C552.474670,394.927704 551.234131,398.405426 549.627441,401.703461
|
||||
C548.602478,403.807434 546.634094,405.600922 546.122192,407.776733
|
||||
C544.790405,413.438354 540.850769,417.901276 540.362305,424.237549
|
||||
C539.969482,429.332214 535.669373,434.125610 532.515320,438.594910
|
||||
C528.840454,427.717499 525.026489,416.883789 521.588135,405.932129
|
||||
C520.724548,403.181549 520.446350,400.519379 517.000000,399.333344
|
||||
C517.000000,398.888885 517.000000,398.444458 517.618225,397.678619
|
||||
C520.018982,395.159027 519.139038,394.082611 515.749390,393.410126
|
||||
C515.499573,392.606750 515.249817,391.803375 515.697632,390.884918
|
||||
C516.081299,390.419250 516.886475,389.813354 516.785278,389.509003
|
||||
C515.345825,385.181671 513.908752,380.842590 512.145569,376.643097
|
||||
C511.792969,375.803223 510.083679,375.532928 509.000000,374.250000
|
||||
z"/>
|
||||
<path fill="#B5E61D" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M533.102966,439.052673
|
||||
C535.669373,434.125610 539.969482,429.332214 540.362305,424.237549
|
||||
C540.850769,417.901276 544.790405,413.438354 546.122192,407.776733
|
||||
C546.634094,405.600922 548.602478,403.807434 549.627441,401.703461
|
||||
C551.234131,398.405426 552.474670,394.927704 554.107544,391.644012
|
||||
C555.963501,387.911530 557.919373,384.208801 560.116638,380.669983
|
||||
C564.880188,372.998016 569.390991,365.111786 574.807312,357.917114
|
||||
C581.399048,349.161102 588.648254,340.877716 595.925049,332.666321
|
||||
C602.533691,325.208832 610.070007,318.531067 616.291931,310.782501
|
||||
C627.602356,296.696869 641.630005,285.924072 656.484131,276.107635
|
||||
C667.822876,268.614288 679.361694,261.388153 691.134155,254.602921
|
||||
C696.243530,251.658081 702.118652,249.995712 707.724976,247.969528
|
||||
C716.926331,244.644043 725.972595,240.353424 735.479431,238.528442
|
||||
C751.900452,235.376175 768.565186,232.509766 785.374084,236.915176
|
||||
C792.706177,238.836823 800.502319,239.449356 807.454895,242.235458
|
||||
C815.335754,245.393570 822.918762,249.733109 829.894836,254.611969
|
||||
C841.523804,262.744904 852.619080,271.648499 863.834656,280.362030
|
||||
C869.559326,284.809601 875.669922,288.990143 880.508484,294.292847
|
||||
C887.098816,301.515381 891.678101,310.168762 891.957886,320.337769
|
||||
C892.178711,328.364563 892.724915,336.492432 891.743347,344.403778
|
||||
C891.083435,349.723267 888.426636,354.956238 885.923523,359.849518
|
||||
C881.790710,367.928802 877.359558,376.037567 870.347290,382.001434
|
||||
C861.736755,389.324615 853.228699,397.074066 843.582947,402.796173
|
||||
C831.787354,409.793640 819.125671,415.558533 806.343079,420.600586
|
||||
C793.636658,425.612610 780.066589,427.653076 766.417908,429.145569
|
||||
C756.223145,430.260376 746.175781,432.698914 736.048889,434.468475
|
||||
C730.736511,435.396759 725.371155,436.029480 720.069885,437.012085
|
||||
C704.332031,439.929199 688.660583,443.233795 672.874756,445.854156
|
||||
C658.353638,448.264587 643.690857,449.810760 629.142090,452.070099
|
||||
C619.803955,453.520203 610.572876,455.648346 601.266541,457.320312
|
||||
C597.082520,458.071991 592.835632,458.885834 588.610413,458.925079
|
||||
C569.949097,459.098328 551.284180,459.104828 532.623596,458.896576
|
||||
C529.523071,458.861969 527.779114,459.968658 526.290100,462.314636
|
||||
C518.050415,475.296448 512.944153,489.406769 515.271118,504.775940
|
||||
C516.687378,514.130615 520.275391,523.273499 523.755127,532.172363
|
||||
C529.457092,546.754395 536.837463,560.739929 541.723206,575.565796
|
||||
C547.518799,593.152649 546.019592,611.200439 540.587402,628.898376
|
||||
C535.888000,644.208984 528.350281,658.057190 519.386902,671.219910
|
||||
C517.513245,673.971375 514.813354,675.335449 512.591064,672.904419
|
||||
C511.418823,671.622131 511.505035,667.457397 512.715698,666.010437
|
||||
C520.476013,656.735474 525.600403,646.027527 529.913391,634.975586
|
||||
C538.344116,613.372131 540.526672,591.458374 531.176758,569.439575
|
||||
C526.014709,557.283142 521.704590,544.633545 515.267761,533.186279
|
||||
C508.680573,521.471741 505.751648,509.440399 506.011780,496.324860
|
||||
C506.256561,483.986206 509.677887,472.650146 516.926758,462.556244
|
||||
C517.572449,461.657104 518.031494,460.623871 518.944092,459.000000
|
||||
C509.465179,459.000000 500.572906,458.998291 491.680603,459.000427
|
||||
C479.160614,459.003418 466.778503,457.916290 454.310425,456.431580
|
||||
C444.214111,455.229340 434.143921,454.339600 424.197235,452.059723
|
||||
C412.598450,449.401215 400.916260,447.107056 389.273315,444.640442
|
||||
C381.142181,442.917847 372.999268,441.246094 364.891510,439.419037
|
||||
C349.604095,435.974152 334.363312,432.319366 319.057404,428.960205
|
||||
C297.405426,424.208282 275.695099,419.722137 254.041779,414.976074
|
||||
C237.973999,411.454163 221.630615,408.731476 206.001328,403.784546
|
||||
C186.944717,397.752899 169.491913,387.791626 153.569031,375.680206
|
||||
C143.950668,368.364197 134.940033,360.138489 126.309486,351.656921
|
||||
C106.672897,332.359253 94.113319,308.955414 88.030518,282.137970
|
||||
C82.315170,256.940430 83.592278,232.095596 94.180580,208.395813
|
||||
C100.082291,195.185989 109.036797,184.021088 119.976540,174.115082
|
||||
C131.094727,164.047546 143.253525,155.127777 152.433609,142.684265
|
||||
C158.442245,134.539612 167.796844,128.863525 175.652145,122.081039
|
||||
C188.062439,111.365639 203.373077,107.232338 218.835907,104.372177
|
||||
C228.342163,102.613800 238.310394,103.352844 248.960327,102.970634
|
||||
C258.217407,104.350349 266.585358,105.729927 275.133057,107.414597
|
||||
C276.874573,108.090912 278.436279,108.462143 280.320496,108.902924
|
||||
C281.080078,109.018524 281.517212,109.064575 282.149811,109.425446
|
||||
C291.304718,113.711227 300.340942,117.519882 309.196411,121.710487
|
||||
C315.052277,124.481613 321.067139,127.221451 326.281158,130.985916
|
||||
C340.685730,141.385864 354.707214,152.316376 369.025940,163.345291
|
||||
C372.125732,166.279221 375.240021,168.747879 378.000183,171.563675
|
||||
C383.611938,177.288620 389.150879,183.094833 394.502045,189.062851
|
||||
C401.312531,196.658478 408.459900,204.041519 414.481293,212.236801
|
||||
C427.571991,230.053604 440.735931,247.886887 452.558014,266.544678
|
||||
C463.276733,283.461090 472.549713,301.324951 481.892548,319.069946
|
||||
C487.507629,329.734680 492.138184,340.926575 497.006622,351.971680
|
||||
C499.212677,356.976654 501.070831,362.150330 502.823547,367.336426
|
||||
C506.040985,376.856384 509.063324,386.442291 512.114990,396.407288
|
||||
C512.376953,398.702362 512.411011,400.703064 513.106750,402.438477
|
||||
C513.546448,403.535309 514.973877,404.236145 515.991150,405.347198
|
||||
C516.023987,405.579834 516.167419,406.027222 516.099365,406.426208
|
||||
C516.221619,407.941589 516.271118,409.104919 516.625000,410.166840
|
||||
C519.083679,417.543640 521.520996,424.929596 524.140564,432.249908
|
||||
C525.583252,436.281555 527.366150,440.191467 529.222900,444.507233
|
||||
C530.005066,443.586090 530.559937,442.313995 531.449158,441.013794
|
||||
C532.223267,440.341370 532.663147,439.697021 533.102966,439.052673
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M274.953308,107.109505
|
||||
C266.585358,105.729927 258.217407,104.350349 249.424408,102.902084
|
||||
C248.462891,99.102180 250.738831,98.784286 253.567612,98.990646
|
||||
C267.198425,99.985023 280.577789,102.585770 293.172638,107.748558
|
||||
C316.107300,117.149765 337.680389,129.180267 357.031433,144.771988
|
||||
C366.702759,152.564499 375.970886,160.915863 384.918854,169.536072
|
||||
C406.102600,189.943756 424.401062,212.881027 440.601532,237.316696
|
||||
C455.223633,259.371613 468.813385,282.138916 482.158783,305.000519
|
||||
C488.932709,316.604675 494.261688,329.062958 500.041687,341.231140
|
||||
C502.158356,345.687225 503.766388,350.394012 505.414886,355.054169
|
||||
C505.684998,355.817688 504.960419,356.933075 504.072021,357.742859
|
||||
C501.965698,354.399902 500.482849,351.199951 499.251740,347.787720
|
||||
C499.068665,345.862915 498.918060,344.010437 498.154602,342.459656
|
||||
C491.417328,328.774536 484.597198,315.129822 477.705017,301.522034
|
||||
C477.182098,300.489532 475.919037,299.831879 475.000000,298.750000
|
||||
C475.000000,298.500000 475.000000,298.000000 474.963623,297.640991
|
||||
C473.284851,294.854675 471.642426,292.427338 470.000000,289.750000
|
||||
C470.000000,289.500000 470.000000,289.000000 469.966858,288.653503
|
||||
C468.955811,287.204681 467.977905,286.102356 467.000000,284.750000
|
||||
C467.000000,284.500000 467.000000,284.000000 466.966858,283.653503
|
||||
C465.955811,282.204681 464.977905,281.102325 464.000000,279.750000
|
||||
C464.000000,279.500000 464.000000,279.000000 463.966858,278.653503
|
||||
C462.955811,277.204651 461.977905,276.102325 461.000000,274.750000
|
||||
C461.000000,274.500000 461.000000,274.000000 460.966858,273.653503
|
||||
C459.955811,272.204651 458.977905,271.102325 458.000000,269.750000
|
||||
C458.000000,269.500000 458.000000,269.000000 457.965179,268.646545
|
||||
C456.286896,266.195374 454.643463,264.097687 453.000000,261.750000
|
||||
C453.000000,261.500000 453.000000,261.000000 452.965363,260.652161
|
||||
C448.485352,253.535095 444.096344,246.727600 439.543915,240.031158
|
||||
C438.700745,238.790924 437.198212,237.998901 436.000000,236.750000
|
||||
C436.000000,236.500000 436.000000,236.000000 435.958618,235.679199
|
||||
C435.278168,234.905609 434.639099,234.452805 434.000000,233.750000
|
||||
C434.000000,233.500000 434.000000,233.000000 433.958618,232.679199
|
||||
C433.278168,231.905609 432.639099,231.452805 432.000000,230.750000
|
||||
C432.000000,230.500000 432.000000,230.000000 431.958618,229.679199
|
||||
C431.278168,228.905609 430.639099,228.452805 429.780640,227.892090
|
||||
C429.287628,227.584732 429.100555,227.323334 428.994995,226.645966
|
||||
C428.326660,225.527939 427.663330,224.763962 426.733368,223.880493
|
||||
C425.977844,223.173996 425.488922,222.586990 424.994995,221.645966
|
||||
C424.326660,220.527954 423.663330,219.763977 422.780640,218.892105
|
||||
C422.287628,218.584732 422.100555,218.323334 421.994995,217.645966
|
||||
C421.326660,216.527939 420.663330,215.763962 419.780640,214.892090
|
||||
C419.287628,214.584732 419.100555,214.323334 418.994995,213.645966
|
||||
C418.326660,212.527954 417.663330,211.763977 416.719147,210.869720
|
||||
C415.625549,209.826294 414.812775,208.913147 413.994995,207.645950
|
||||
C413.326660,206.527939 412.663330,205.763977 411.733368,204.880524
|
||||
C410.977814,204.174026 410.488892,203.587021 409.994995,202.645966
|
||||
C409.326660,201.527939 408.663330,200.763977 407.706940,199.860168
|
||||
C405.942596,198.146896 404.471313,196.573441 402.994995,194.645950
|
||||
C402.326660,193.527939 401.663330,192.763962 400.706940,191.860184
|
||||
C398.942596,190.146912 397.471283,188.573456 395.994995,186.645966
|
||||
C395.326660,185.527939 394.663330,184.763977 394.000000,183.750000
|
||||
C394.000000,183.500000 394.000000,183.000000 393.958618,182.679199
|
||||
C393.278168,181.905609 392.639099,181.452805 391.711609,180.863770
|
||||
C390.282166,179.485031 389.141083,178.242523 387.947083,176.655426
|
||||
C386.929413,175.873886 385.964722,175.436935 384.702148,174.856720
|
||||
C382.269562,172.475647 380.134796,170.237823 377.947083,167.655411
|
||||
C376.929413,166.873901 375.964722,166.436951 374.719147,165.869720
|
||||
C373.625549,164.826294 372.812775,163.913147 371.963379,162.653381
|
||||
C365.580414,156.852402 359.660034,150.775345 352.794983,146.079224
|
||||
C340.285187,137.521744 327.463623,129.346283 314.291931,121.855812
|
||||
C305.423584,116.812553 295.758850,113.154366 286.371124,109.058235
|
||||
C285.140747,108.521378 283.438171,109.066589 281.954315,109.110626
|
||||
C281.517212,109.064575 281.080078,109.018524 280.257385,108.572586
|
||||
C278.232300,107.818291 276.592804,107.463898 274.953308,107.109505
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M434.000000,233.000000
|
||||
C434.000000,233.000000 434.000000,233.500000 434.041382,234.070786
|
||||
C434.721832,235.094376 435.360931,235.547180 436.000000,236.000000
|
||||
C436.000000,236.000000 436.000000,236.500000 436.036072,237.101685
|
||||
C438.223145,241.435455 440.061310,245.398666 442.604492,248.841019
|
||||
C445.765045,253.119049 449.508392,256.966553 453.000000,261.000000
|
||||
C453.000000,261.000000 453.000000,261.500000 453.034821,262.103455
|
||||
C454.713074,264.804626 456.356537,266.902313 458.000000,269.000000
|
||||
C458.000000,269.000000 458.000000,269.500000 458.033142,270.096497
|
||||
C459.044189,271.795319 460.022095,272.897675 461.000000,274.000000
|
||||
C461.000000,274.000000 461.000000,274.500000 461.033142,275.096497
|
||||
C462.044189,276.795319 463.022095,277.897644 464.000000,279.000000
|
||||
C464.000000,279.000000 464.000000,279.500000 464.033142,280.096497
|
||||
C465.044189,281.795349 466.022095,282.897675 467.000000,284.000000
|
||||
C467.000000,284.000000 467.000000,284.500000 467.033142,285.096497
|
||||
C468.044189,286.795319 469.022095,287.897675 470.000000,289.000000
|
||||
C470.000000,289.000000 470.000000,289.500000 470.036377,290.109009
|
||||
C471.715179,293.145325 473.357574,295.572662 475.000000,298.000000
|
||||
C475.000000,298.000000 475.000000,298.500000 475.036713,299.110535
|
||||
C483.048950,315.814056 491.024475,331.907043 499.000000,348.000000
|
||||
C500.482849,351.199951 501.965698,354.399902 503.724274,357.799927
|
||||
C504.000000,358.750000 504.000000,359.500000 504.005859,361.007416
|
||||
C505.674500,365.176575 507.337250,368.588287 509.000000,372.000000
|
||||
C509.000000,372.750000 509.000000,373.500000 509.005859,375.009583
|
||||
C511.007843,380.846069 513.003906,385.923035 515.000000,391.000000
|
||||
C515.249817,391.803375 515.499573,392.606750 515.874756,394.071106
|
||||
C516.333374,395.821411 516.666687,396.910706 517.000000,398.000000
|
||||
C517.000000,398.444458 517.000000,398.888885 516.750000,399.666687
|
||||
C516.500000,400.000000 516.000000,400.000000 515.735291,399.813721
|
||||
C514.369385,398.418518 513.268188,397.209625 512.166992,396.000702
|
||||
C509.063324,386.442291 506.040985,376.856384 502.823547,367.336426
|
||||
C501.070831,362.150330 499.212677,356.976654 497.006622,351.971680
|
||||
C492.138184,340.926575 487.507629,329.734680 481.892548,319.069946
|
||||
C472.549713,301.324951 463.276733,283.461090 452.558014,266.544678
|
||||
C440.735931,247.886887 427.571991,230.053604 414.481293,212.236801
|
||||
C408.459900,204.041519 401.312531,196.658478 394.502045,189.062851
|
||||
C389.150879,183.094833 383.611938,177.288620 378.000183,171.563675
|
||||
C375.240021,168.747879 372.125732,166.279221 369.415894,163.334381
|
||||
C370.440063,163.010193 371.220032,163.005096 372.000000,162.999985
|
||||
C372.812775,163.913147 373.625549,164.826294 374.860107,166.158936
|
||||
C376.187927,167.052292 377.093964,167.526138 378.000000,168.000000
|
||||
C380.134796,170.237823 382.269562,172.475647 384.843109,175.145966
|
||||
C386.187927,176.052307 387.093964,176.526154 388.000000,177.000015
|
||||
C389.141083,178.242523 390.282166,179.485031 391.752991,181.184570
|
||||
C392.721832,182.094391 393.360901,182.547195 394.000000,183.000000
|
||||
C394.000000,183.000000 394.000000,183.500000 394.025818,184.071243
|
||||
C394.701080,185.428329 395.350525,186.214157 396.000000,187.000000
|
||||
C397.471283,188.573456 398.942596,190.146912 400.732727,192.181427
|
||||
C401.701080,193.428314 402.350555,194.214157 403.000000,194.999985
|
||||
C404.471313,196.573441 405.942596,198.146896 407.732727,200.181427
|
||||
C408.701050,201.428329 409.350525,202.214172 410.000000,203.000000
|
||||
C410.488892,203.587021 410.977814,204.174026 411.759155,205.201752
|
||||
C412.701080,206.428329 413.350525,207.214157 414.000000,208.000000
|
||||
C414.812775,208.913147 415.625549,209.826294 416.744934,211.190964
|
||||
C417.701050,212.428329 418.350525,213.214172 419.000000,214.000000
|
||||
C419.100555,214.323334 419.287628,214.584732 419.806427,215.213348
|
||||
C420.701080,216.428314 421.350555,217.214157 422.000000,218.000000
|
||||
C422.100555,218.323334 422.287628,218.584732 422.806427,219.213348
|
||||
C423.701050,220.428329 424.350525,221.214172 425.000000,222.000000
|
||||
C425.488922,222.586990 425.977844,223.173996 426.759155,224.201752
|
||||
C427.701080,225.428329 428.350525,226.214157 429.000000,227.000000
|
||||
C429.100555,227.323334 429.287628,227.584732 429.821991,228.212891
|
||||
C430.721832,229.094391 431.360901,229.547195 432.000000,230.000000
|
||||
C432.000000,230.000000 432.000000,230.500000 432.041382,231.070801
|
||||
C432.721832,232.094391 433.360901,232.547195 434.000000,233.000000
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M516.000000,400.000000
|
||||
C516.000000,400.000000 516.500000,400.000000 516.750000,400.000000
|
||||
C520.446350,400.519379 520.724548,403.181549 521.588135,405.932129
|
||||
C525.026489,416.883789 528.840454,427.717499 532.809143,438.823792
|
||||
C532.663147,439.697021 532.223267,440.341370 531.096802,441.001526
|
||||
C529.940125,441.011536 529.470093,441.005768 528.722778,440.757507
|
||||
C525.274841,429.888275 522.155396,419.245605 518.854126,408.659637
|
||||
C518.525330,407.605408 517.089478,406.896423 516.167419,406.027222
|
||||
C516.167419,406.027222 516.023987,405.579834 516.003418,404.920868
|
||||
C515.988586,402.841278 515.994324,401.420624 516.000000,400.000000
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M515.348816,390.942444
|
||||
C513.003906,385.923035 511.007843,380.846069 509.005859,375.384583
|
||||
C510.083679,375.532928 511.792969,375.803223 512.145569,376.643097
|
||||
C513.908752,380.842590 515.345825,385.181671 516.785278,389.509003
|
||||
C516.886475,389.813354 516.081299,390.419250 515.348816,390.942444
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M509.347595,371.943024
|
||||
C507.337250,368.588287 505.674500,365.176575 504.005859,361.382416
|
||||
C508.510986,362.320740 511.408936,367.860016 509.347595,371.943024
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M517.309082,397.839294
|
||||
C516.666687,396.910706 516.333374,395.821411 516.000061,394.366058
|
||||
C519.139038,394.082611 520.018982,395.159027 517.309082,397.839294
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M371.963379,162.653381
|
||||
C371.220032,163.005096 370.440063,163.010193 369.270142,163.026215
|
||||
C354.707214,152.316376 340.685730,141.385864 326.281158,130.985916
|
||||
C321.067139,127.221451 315.052277,124.481613 309.196411,121.710487
|
||||
C300.340942,117.519882 291.304718,113.711227 282.149811,109.425446
|
||||
C283.438171,109.066589 285.140747,108.521378 286.371124,109.058235
|
||||
C295.758850,113.154366 305.423584,116.812553 314.291931,121.855812
|
||||
C327.463623,129.346283 340.285187,137.521744 352.794983,146.079224
|
||||
C359.660034,150.775345 365.580414,156.852402 371.963379,162.653381
|
||||
z"/>
|
||||
<path fill="#FFFFFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M516.099365,406.426208
|
||||
C517.089478,406.896423 518.525330,407.605408 518.854126,408.659637
|
||||
C522.155396,419.245605 525.274841,429.888275 528.722778,441.151733
|
||||
C528.998535,442.577759 528.997070,443.367035 528.995605,444.156281
|
||||
C527.366150,440.191467 525.583252,436.281555 524.140564,432.249908
|
||||
C521.520996,424.929596 519.083679,417.543640 516.625000,410.166840
|
||||
C516.271118,409.104919 516.221619,407.941589 516.099365,406.426208
|
||||
z"/>
|
||||
<path fill="#FFFFFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M515.735291,399.813721
|
||||
C515.994324,401.420624 515.988586,402.841278 515.970581,404.688232
|
||||
C514.973877,404.236145 513.546448,403.535309 513.106750,402.438477
|
||||
C512.411011,400.703064 512.376953,398.702362 512.114990,396.407288
|
||||
C513.268188,397.209625 514.369385,398.418518 515.735291,399.813721
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M275.133057,107.414597
|
||||
C276.592804,107.463898 278.232300,107.818291 279.934906,108.503029
|
||||
C278.436279,108.462143 276.874573,108.090912 275.133057,107.414597
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M529.222900,444.507233
|
||||
C528.997070,443.367035 528.998535,442.577759 529.000000,441.394257
|
||||
C529.470093,441.005768 529.940125,441.011536 530.762573,441.029602
|
||||
C530.559937,442.313995 530.005066,443.586090 529.222900,444.507233
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M499.251740,347.787720
|
||||
C491.024475,331.907043 483.048950,315.814056 475.036713,299.360535
|
||||
C475.919037,299.831879 477.182098,300.489532 477.705017,301.522034
|
||||
C484.597198,315.129822 491.417328,328.774536 498.154602,342.459656
|
||||
C498.918060,344.010437 499.068665,345.862915 499.251740,347.787720
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M452.965363,260.652161
|
||||
C449.508392,256.966553 445.765045,253.119049 442.604492,248.841019
|
||||
C440.061310,245.398666 438.223145,241.435455 436.036072,237.351669
|
||||
C437.198212,237.998901 438.700745,238.790924 439.543915,240.031158
|
||||
C444.096344,246.727600 448.485352,253.535095 452.965363,260.652161
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M474.963623,297.640991
|
||||
C473.357574,295.572662 471.715179,293.145325 470.036377,290.359009
|
||||
C471.642426,292.427338 473.284851,294.854675 474.963623,297.640991
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M457.965179,268.646545
|
||||
C456.356537,266.902313 454.713074,264.804626 453.034821,262.353455
|
||||
C454.643463,264.097687 456.286896,266.195374 457.965179,268.646545
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M469.966858,288.653503
|
||||
C469.022095,287.897675 468.044189,286.795319 467.033142,285.346497
|
||||
C467.977905,286.102356 468.955811,287.204681 469.966858,288.653503
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M466.966858,283.653503
|
||||
C466.022095,282.897675 465.044189,281.795349 464.033142,280.346497
|
||||
C464.977905,281.102325 465.955811,282.204681 466.966858,283.653503
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M463.966858,278.653503
|
||||
C463.022095,277.897644 462.044189,276.795319 461.033142,275.346497
|
||||
C461.977905,276.102325 462.955811,277.204651 463.966858,278.653503
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M460.966858,273.653503
|
||||
C460.022095,272.897675 459.044189,271.795319 458.033142,270.346497
|
||||
C458.977905,271.102325 459.955811,272.204651 460.966858,273.653503
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M428.994995,226.645966
|
||||
C428.350525,226.214157 427.701080,225.428329 427.025818,224.321243
|
||||
C427.663330,224.763962 428.326660,225.527939 428.994995,226.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M424.994995,221.645966
|
||||
C424.350525,221.214172 423.701050,220.428329 423.025818,219.321259
|
||||
C423.663330,219.763977 424.326660,220.527954 424.994995,221.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M421.994995,217.645966
|
||||
C421.350555,217.214157 420.701080,216.428314 420.025818,215.321243
|
||||
C420.663330,215.763962 421.326660,216.527939 421.994995,217.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M418.994995,213.645966
|
||||
C418.350525,213.214172 417.701050,212.428329 417.025818,211.321243
|
||||
C417.663330,211.763977 418.326660,212.527954 418.994995,213.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M413.994995,207.645966
|
||||
C413.350525,207.214157 412.701080,206.428329 412.025818,205.321243
|
||||
C412.663330,205.763977 413.326660,206.527939 413.994995,207.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M409.994995,202.645966
|
||||
C409.350525,202.214172 408.701050,201.428329 408.025818,200.321243
|
||||
C408.663330,200.763977 409.326660,201.527939 409.994995,202.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M402.994995,194.645950
|
||||
C402.350555,194.214157 401.701080,193.428314 401.025818,192.321228
|
||||
C401.663330,192.763962 402.326660,193.527939 402.994995,194.645950
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M395.994995,186.645966
|
||||
C395.350525,186.214157 394.701080,185.428329 394.025818,184.321243
|
||||
C394.663330,184.763977 395.326660,185.527939 395.994995,186.645966
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M387.947083,176.655426
|
||||
C387.093964,176.526154 386.187927,176.052307 385.140930,175.289215
|
||||
C385.964722,175.436935 386.929413,175.873886 387.947083,176.655426
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M377.947083,167.655426
|
||||
C377.093964,167.526138 376.187927,167.052292 375.140930,166.289215
|
||||
C375.964722,166.436951 376.929413,166.873901 377.947083,167.655426
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M435.958618,235.679199
|
||||
C435.360931,235.547180 434.721832,235.094376 434.041382,234.320786
|
||||
C434.639099,234.452805 435.278168,234.905609 435.958618,235.679199
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M433.958618,232.679199
|
||||
C433.360901,232.547195 432.721832,232.094391 432.041382,231.320801
|
||||
C432.639099,231.452805 433.278168,231.905609 433.958618,232.679199
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M431.958618,229.679199
|
||||
C431.360901,229.547195 430.721832,229.094391 430.041382,228.320801
|
||||
C430.639099,228.452805 431.278168,228.905609 431.958618,229.679199
|
||||
z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M393.958618,182.679199
|
||||
C393.360901,182.547195 392.721832,182.094391 392.041382,181.320801
|
||||
C392.639099,181.452805 393.278168,181.905609 393.958618,182.679199
|
||||
z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 29 KiB |
BIN
src/assets/images/logotip_just_circle.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
17
src/assets/images/qWick_white.svg
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="_Слой_2" data-name="Слой 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 378.95 128.55">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="_Слой_13_копия_" data-name="Слой 13 (копия)">
|
||||
<path class="cls-1" d="m49.05,128.55v-59.85c0-9.7-3.55-14.55-10.65-14.55-2.8,0-5.28,1.03-7.42,3.07-2.15,2.05-3.23,4.48-3.23,7.27,0,3,1.02,5.55,3.08,7.65,2.05,2.1,4.47,3.15,7.27,3.15,2.4,0,4.65-.85,6.75-2.55v30.15c-2,.3-4,.45-6,.45-10.8,0-19.98-3.72-27.52-11.17C3.77,84.73,0,75.65,0,64.95s3.75-19.58,11.25-26.92c7.5-7.35,16.7-11.03,27.6-11.03s19.77,3.73,26.92,11.18c7.15,7.45,10.73,17.28,10.73,29.48v60.9h-27.45Z"/>
|
||||
<path class="cls-1" d="m186.73,3.6v71.4c0,8.9-2.7,16.18-8.1,21.82-5.4,5.65-12.45,8.48-21.15,8.48-10.3,0-18.2-4.7-23.7-14.1-3.2,4.9-6.7,8.48-10.5,10.73-3.8,2.25-8.65,3.38-14.55,3.38-9,0-15.9-2.8-20.7-8.4-4.8-5.6-7.2-13.75-7.2-24.45V3.6h29.85v64.35c0,3,.23,5.08.67,6.23.45,1.15,1.47,1.73,3.08,1.73,3,0,4.5-2.5,4.5-7.5V3.6h29.7v64.35c0,3.1.27,5.2.83,6.3.55,1.1,1.58,1.65,3.08,1.65,2.9,0,4.35-2.65,4.35-7.95V3.6h29.85Z"/>
|
||||
<path class="cls-1" d="m218.5,32.55v73.05h-27.45V32.55h27.45Zm-26.7-19.35c0-3.7,1.27-6.83,3.83-9.38,2.55-2.55,5.67-3.83,9.38-3.83s6.82,1.27,9.38,3.83c2.55,2.55,3.82,5.68,3.82,9.38s-1.27,6.82-3.82,9.38c-2.55,2.55-5.68,3.82-9.38,3.82s-6.83-1.27-9.38-3.82c-2.55-2.55-3.83-5.67-3.83-9.38Z"/>
|
||||
<path class="cls-1" d="m298.73,70.43c-.8,10.6-4.88,19.25-12.22,25.95-7.35,6.7-15.93,10.05-25.72,10.05-10.4,0-19.33-3.75-26.78-11.25-7.45-7.5-11.17-16.5-11.17-27s3.72-19.47,11.17-26.92c7.45-7.45,16.37-11.18,26.78-11.18,8.9,0,16.85,2.8,23.85,8.4,7,5.6,11.45,13.05,13.35,22.35l-28.2.9c-2.2-3.1-5.2-4.65-9-4.65-3,0-5.58,1.1-7.73,3.3-2.15,2.2-3.22,4.8-3.22,7.8s1.07,5.62,3.22,7.88c2.15,2.25,4.73,3.38,7.73,3.38,2.4,0,4.57-.7,6.52-2.1,1.95-1.4,3.27-3.35,3.98-5.85l27.45-1.05Z"/>
|
||||
<path class="cls-1" d="m330.5,4.73v100.05h-27.45V4.73h27.45Zm42,27l-13.5,26.55,19.95,46.5h-30.3l-17.1-47.7,12.45-25.35h28.5Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
94
src/components/BufferLandingPage.js
Normal file
@ -0,0 +1,94 @@
|
||||
// import React from 'react';
|
||||
// import { Layout } from 'antd';
|
||||
// import MainSection from './MainSection';
|
||||
// import FourstepSection from './FourSteps';
|
||||
// import MakeEasier from './MakeEasier';
|
||||
// import Questions from './Questions';
|
||||
// import WorkInTeam from './WorkInTeam';
|
||||
// import PriceList from './PriceList';
|
||||
// import Udobno from './Udobno';
|
||||
// import Header from './Header';
|
||||
// import ContactBlock from './ContactBlock';
|
||||
|
||||
// import Footer from './Footer';
|
||||
|
||||
// const { Content } = Layout;
|
||||
|
||||
// const CustomLayout = () => (
|
||||
// <Layout
|
||||
// className="layout"
|
||||
// >
|
||||
// <Header />
|
||||
// <Content style={{ padding: '0 50px', background: '#ffffff' }}>
|
||||
|
||||
// <MainSection />
|
||||
|
||||
// <div style={{ background: '#fff', position: 'relative', minHeight: 'calc(100vh - 64px)' }}> {/* Вычитаем высоту header если он есть */}
|
||||
// <div >
|
||||
// <Udobno />
|
||||
|
||||
// <MakeEasier />
|
||||
|
||||
// <FourstepSection />
|
||||
|
||||
// <WorkInTeam />
|
||||
|
||||
// <PriceList />
|
||||
|
||||
// <Questions />
|
||||
|
||||
// <div className='mb-4'><ContactBlock /></div>
|
||||
|
||||
// </div>
|
||||
|
||||
// </div>
|
||||
|
||||
// </Content>
|
||||
|
||||
// <Footer />
|
||||
|
||||
// </Layout>
|
||||
// );
|
||||
|
||||
// export default CustomLayout;
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { Layout } from 'antd';
|
||||
import MainSection from './MainSection';
|
||||
import FourstepSection from './FourSteps';
|
||||
import MakeEasier from './MakeEasier';
|
||||
import Questions from './Questions';
|
||||
import WorkInTeam from './WorkInTeam';
|
||||
import PriceList from './PriceList';
|
||||
import Udobno from './Udobno';
|
||||
import Header from './Header';
|
||||
import ContactBlock from './ContactBlock';
|
||||
import Footer from './Footer';
|
||||
|
||||
const { Content } = Layout;
|
||||
|
||||
const CustomLayout = () => (
|
||||
<Layout className="layout">
|
||||
<Header />
|
||||
<Content style={{ padding: '0 50px', background: '#ffffff' }}>
|
||||
<MainSection />
|
||||
|
||||
<div className="relative w-full"> {/* Убрали ограничение высоты */}
|
||||
<div>
|
||||
<Udobno />
|
||||
<MakeEasier />
|
||||
<FourstepSection />
|
||||
<WorkInTeam />
|
||||
<PriceList />
|
||||
<Questions />
|
||||
<div className="w-full"><ContactBlock /></div> {/* Изменили mb-4 на w-full */}
|
||||
</div>
|
||||
</div>
|
||||
</Content>
|
||||
|
||||
<Footer />
|
||||
</Layout>
|
||||
);
|
||||
|
||||
export default CustomLayout;
|
||||
258
src/components/ContactBlock.js
Normal file
@ -0,0 +1,258 @@
|
||||
// import { useState } from "react"
|
||||
// import videoback from '../vids/backvideo2.webm'
|
||||
|
||||
// export default function Component() {
|
||||
// const [formData, setFormData] = useState({
|
||||
// name: '',
|
||||
// email: '',
|
||||
// message: ''
|
||||
// })
|
||||
|
||||
// const handleSubmit = (e) => {
|
||||
// e.preventDefault()
|
||||
// console.log('Form submitted:', formData)
|
||||
// }
|
||||
|
||||
// const handleChange = (e) => {
|
||||
// setFormData({
|
||||
// ...formData,
|
||||
// [e.target.name]: e.target.value
|
||||
// })
|
||||
// }
|
||||
|
||||
// return (
|
||||
// <div id="contacts-section" className="relative w-full min-h-[700px] bg-white">
|
||||
// <div className="relative flex justify-center items-center max-w-6xl mx-auto p-8 h-full">
|
||||
// {/* Main container with video background */}
|
||||
// <div className="w-full relative p-12 rounded-3xl overflow-hidden">
|
||||
// {/* Video background */}
|
||||
// <div className="absolute inset-0 z-0">
|
||||
// <video
|
||||
// autoPlay
|
||||
// loop
|
||||
// muted
|
||||
// playsInline
|
||||
// className="w-full h-full object-cover rounded-3xl"
|
||||
// >
|
||||
// <source src={videoback} type="video/webm" />
|
||||
// Your browser does not support the video tag.
|
||||
// </video>
|
||||
// {/* Optional overlay for better text visibility */}
|
||||
// <div
|
||||
// className="absolute inset-0 rounded-3xl"
|
||||
// style={{
|
||||
// background: 'linear-gradient(135deg, rgba(118, 184, 42, 0.3), rgba(144, 201, 92, 0.3))',
|
||||
// backdropFilter: 'blur(5px)',
|
||||
// }}
|
||||
// />
|
||||
// </div>
|
||||
|
||||
// {/* Content */}
|
||||
// <div className="relative z-10 flex justify-between items-center gap-12">
|
||||
// {/* Text content */}
|
||||
// <div className="w-1/2">
|
||||
// <h2 className="text-4xl font-extrabold mb-4 text-white drop-shadow-sm">
|
||||
// Остались вопросы?
|
||||
// </h2>
|
||||
// <p className="text-2xl font-bold text-white">
|
||||
// Свяжитесь с нами, мы постараемся вам помочь!
|
||||
// </p>
|
||||
// </div>
|
||||
|
||||
// {/* Form */}
|
||||
// <div className="w-[500px] bg-white/95 backdrop-blur-sm p-8 rounded-xl shadow-lg">
|
||||
// <h3 className="text-2xl font-bold text-center mb-6">Свяжитесь с нами!</h3>
|
||||
|
||||
// <form onSubmit={handleSubmit} className="space-y-6">
|
||||
// <div>
|
||||
// <label htmlFor="name" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
// Имя
|
||||
// </label>
|
||||
// <input
|
||||
// type="text"
|
||||
// id="name"
|
||||
// name="name"
|
||||
// value={formData.name}
|
||||
// onChange={handleChange}
|
||||
// placeholder="Введите свое имя"
|
||||
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
// required
|
||||
// />
|
||||
// </div>
|
||||
// <div>
|
||||
// <label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
// Почта
|
||||
// </label>
|
||||
// <input
|
||||
// type="email"
|
||||
// id="email"
|
||||
// name="email"
|
||||
// value={formData.email}
|
||||
// onChange={handleChange}
|
||||
// placeholder="Введите свою почту"
|
||||
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
// required
|
||||
// />
|
||||
// </div>
|
||||
// <div>
|
||||
// <label htmlFor="message" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
// Сообщение
|
||||
// </label>
|
||||
// <textarea
|
||||
// id="message"
|
||||
// name="message"
|
||||
// value={formData.message}
|
||||
// onChange={handleChange}
|
||||
// placeholder="Введите сообщение, которое хотите отправить"
|
||||
// rows={4}
|
||||
// className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
// required
|
||||
// />
|
||||
// </div>
|
||||
// <button
|
||||
// type="submit"
|
||||
// className="w-full bg-[#000000] text-white font-medium py-2 px-4 rounded-md hover:bg-[#90c95c] transition-colors duration-200"
|
||||
// >
|
||||
// Отправить
|
||||
// </button>
|
||||
// </form>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// )
|
||||
// }
|
||||
|
||||
|
||||
import { useState } from "react";
|
||||
import videoback from '../vids/backvideo2.webm';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
export default function ContactBlock() {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.contacts[language];
|
||||
|
||||
const [formData, setFormData] = useState({
|
||||
name: '',
|
||||
email: '',
|
||||
message: ''
|
||||
});
|
||||
|
||||
const handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
console.log('Form submitted:', formData);
|
||||
};
|
||||
|
||||
const handleChange = (e) => {
|
||||
setFormData({
|
||||
...formData,
|
||||
[e.target.name]: e.target.value
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div id="contacts-section" className="relative w-full min-h-[700px] bg-white">
|
||||
<div className="relative flex justify-center items-center max-w-6xl mx-auto p-8 h-full">
|
||||
{/* Main container with video background */}
|
||||
<div className="w-full relative p-12 rounded-3xl overflow-hidden">
|
||||
{/* Video background */}
|
||||
<div className="absolute inset-0 z-0">
|
||||
<video
|
||||
autoPlay
|
||||
loop
|
||||
muted
|
||||
playsInline
|
||||
className="w-full h-full object-cover rounded-3xl"
|
||||
>
|
||||
<source src={videoback} type="video/webm" />
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
{/* Optional overlay for better text visibility */}
|
||||
<div
|
||||
className="absolute inset-0 rounded-3xl"
|
||||
style={{
|
||||
background: 'linear-gradient(135deg, rgba(118, 184, 42, 0.3), rgba(144, 201, 92, 0.3))',
|
||||
backdropFilter: 'blur(5px)',
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Content */}
|
||||
<div className="relative z-10 flex justify-between items-center gap-12">
|
||||
{/* Text content */}
|
||||
<div className="w-1/2">
|
||||
<h2 className="text-4xl font-extrabold mb-4 text-white drop-shadow-sm">
|
||||
{t.title}
|
||||
</h2>
|
||||
<p className="text-2xl font-bold text-white">
|
||||
{t.subtitle}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Form */}
|
||||
<div className="w-[500px] bg-white/95 backdrop-blur-sm p-8 rounded-xl shadow-lg">
|
||||
<h3 className="text-2xl font-bold text-center mb-6">{t.formTitle}</h3>
|
||||
|
||||
<form onSubmit={handleSubmit} className="space-y-6">
|
||||
<div>
|
||||
<label htmlFor="name" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t.form.name.label}
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
id="name"
|
||||
name="name"
|
||||
value={formData.name}
|
||||
onChange={handleChange}
|
||||
placeholder={t.form.name.placeholder}
|
||||
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label htmlFor="email" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t.form.email.label}
|
||||
</label>
|
||||
<input
|
||||
type="email"
|
||||
id="email"
|
||||
name="email"
|
||||
value={formData.email}
|
||||
onChange={handleChange}
|
||||
placeholder={t.form.email.placeholder}
|
||||
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label htmlFor="message" className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t.form.message.label}
|
||||
</label>
|
||||
<textarea
|
||||
id="message"
|
||||
name="message"
|
||||
value={formData.message}
|
||||
onChange={handleChange}
|
||||
placeholder={t.form.message.placeholder}
|
||||
rows={4}
|
||||
className="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-500"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
|
||||
type="submit"
|
||||
className="w-full bg-[#000000] text-white font-medium py-2 px-4 rounded-md hover:bg-[#90c95c] transition-colors duration-200"
|
||||
>
|
||||
{t.form.submitButton}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
src/components/CustomLink.jsx
Normal file
@ -0,0 +1,32 @@
|
||||
import { Link, useNavigate } from 'react-router-dom';
|
||||
|
||||
export function CustomLink({ to, children, className, onClick, ...props }) {
|
||||
const navigate = useNavigate();
|
||||
|
||||
const handleClick = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
// Сначала выполняем плавную прокрутку
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
|
||||
// Затем с небольшой задержкой выполняем переход
|
||||
setTimeout(() => {
|
||||
navigate(to);
|
||||
if (onClick) onClick(e);
|
||||
}, 300); // Задержка должна быть меньше времени прокрутки
|
||||
};
|
||||
|
||||
return (
|
||||
<Link
|
||||
to={to}
|
||||
className={className}
|
||||
onClick={handleClick}
|
||||
{...props}
|
||||
>
|
||||
{children}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
145
src/components/DynamicPricing.js
Normal file
@ -0,0 +1,145 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Minus, Plus } from 'lucide-react';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const DynamicPricing = () => {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.dynamicPricing[language];
|
||||
const [accountCount, setAccountCount] = useState(5);
|
||||
const [isAnnual, setIsAnnual] = useState(true);
|
||||
|
||||
// Base prices per plan (for 5 accounts)
|
||||
const basePrices = {
|
||||
standard: 11.49,
|
||||
premium: 13.49,
|
||||
advanced: 15.49
|
||||
};
|
||||
|
||||
// Additional price per extra account
|
||||
const pricePerAccount = {
|
||||
standard: 0.5,
|
||||
premium: 0.75,
|
||||
advanced: 1.0
|
||||
};
|
||||
|
||||
const calculatePrice = (plan) => {
|
||||
const basePrice = basePrices[plan];
|
||||
const extraAccounts = Math.max(0, accountCount - 5);
|
||||
const extraCost = extraAccounts * pricePerAccount[plan];
|
||||
const totalPrice = basePrice + extraCost;
|
||||
|
||||
return isAnnual ? totalPrice : totalPrice * 1.15; // 15% more for monthly
|
||||
};
|
||||
|
||||
const decreaseAccounts = () => {
|
||||
if (accountCount > 5) {
|
||||
setAccountCount(prev => prev - 5);
|
||||
}
|
||||
};
|
||||
|
||||
const increaseAccounts = () => {
|
||||
setAccountCount(prev => prev + 5);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="w-full max-w-7xl mx-auto p-6">
|
||||
<div className="text-center mb-8">
|
||||
<h1 className="text-4xl font-bold mb-4">{t.compare}</h1>
|
||||
<p className="text-gray-600 mb-8">{t.choose}</p>
|
||||
|
||||
<div className="flex justify-center gap-4">
|
||||
<button
|
||||
href="http://app.qwickpost.com/"
|
||||
onClick={() => setIsAnnual(false)}
|
||||
className={`px-6 py-2 rounded-full border ${
|
||||
!isAnnual
|
||||
? 'border-green-500 bg-white text-black'
|
||||
: 'border-gray-200 text-gray-500'
|
||||
}`}
|
||||
>
|
||||
{t.monthly}
|
||||
</button>
|
||||
<button
|
||||
href="http://app.qwickpost.com/"
|
||||
onClick={() => setIsAnnual(true)}
|
||||
className={`px-6 py-2 rounded-full border ${
|
||||
isAnnual
|
||||
? 'border-green-500 bg-green-500 text-white'
|
||||
: 'border-gray-200 text-gray-500'
|
||||
}`}
|
||||
>
|
||||
{t.annual}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-center mb-12">
|
||||
<div className="flex items-center bg-gray-100 rounded-full p-2">
|
||||
<div className="flex items-center">
|
||||
<span className="mr-2">{t.accounts}</span>
|
||||
<button
|
||||
href="http://app.qwickpost.com/"
|
||||
onClick={decreaseAccounts}
|
||||
className="p-1 rounded-full hover:bg-white transition-colors"
|
||||
disabled={accountCount <= 5}
|
||||
>
|
||||
<Minus className="h-5 w-5" />
|
||||
</button>
|
||||
<span className="mx-4 font-semibold">{accountCount}</span>
|
||||
<button
|
||||
onClick={increaseAccounts}
|
||||
className="p-1 rounded-full hover:bg-white transition-colors"
|
||||
>
|
||||
<Plus className="h-5 w-5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="grid md:grid-cols-3 gap-8">
|
||||
{['standard', 'premium', 'advanced'].map((plan) => (
|
||||
<div key={plan} className="relative rounded-lg border border-gray-200 p-6">
|
||||
{plan === 'premium' && (
|
||||
<div className="absolute -top-3 right-4 bg-green-500 text-white px-3 py-1 rounded-full text-sm">
|
||||
{t.features.premium.popular}
|
||||
</div>
|
||||
)}
|
||||
<h3 className="text-2xl font-bold mb-2">
|
||||
{t.features[plan].title}
|
||||
</h3>
|
||||
<p className="text-gray-600 mb-6">
|
||||
{t.features[plan].description}
|
||||
</p>
|
||||
<div className="text-4xl font-bold mb-4">
|
||||
{calculatePrice(plan).toFixed(2)} $
|
||||
<span className="text-base font-normal text-gray-500 ml-1">
|
||||
{/* /{language === 'ru' ? 'мес' : 'month'} */}
|
||||
/{t.mounth}
|
||||
</span>
|
||||
</div>
|
||||
<button
|
||||
className="w-full py-3 px-4 rounded-lg bg-green-500 text-white font-medium mb-8"
|
||||
>
|
||||
{plan === 'premium' ? t.startButton : t.tryButton}
|
||||
</button>
|
||||
<ul className="space-y-3">
|
||||
{t.features[plan].features.map((feature, index) => (
|
||||
<li key={index} className="flex items-center gap-2">
|
||||
<svg className="w-5 h-5 text-green-500" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
|
||||
</svg>
|
||||
<span className="text-sm">{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* <h1 className="text-3xl text-center font-bold mb-4">{t.compareList}</h1> */}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default DynamicPricing;
|
||||
404
src/components/Footer.js
Normal file
@ -0,0 +1,404 @@
|
||||
// import React from 'react'
|
||||
// import { Facebook, Twitter, Instagram, Linkedin, Mail } from 'lucide-react'
|
||||
|
||||
|
||||
// export default function Footer() {
|
||||
// return (
|
||||
// <footer className="bg-gray-100 mt-8">
|
||||
// <div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
|
||||
// <div className="xl:grid xl:grid-cols-3 xl:gap-8">
|
||||
// <div className="space-y-8 xl:col-span-1">
|
||||
// <p className="text-gray-500 text-base">
|
||||
// Профессиональная платформа продвижения соц сетей. Упростите ваш социальный маркетинг с qWickPost.
|
||||
// </p>
|
||||
// <div className="flex space-x-6">
|
||||
// <a href="#" className="text-gray-400 hover:text-gray-500">
|
||||
// <span className="sr-only">Facebook</span>
|
||||
// <Facebook className="h-6 w-6" />
|
||||
// </a>
|
||||
// <a href="#" className="text-gray-400 hover:text-gray-500">
|
||||
// <span className="sr-only">Twitter</span>
|
||||
// <Twitter className="h-6 w-6" />
|
||||
// </a>
|
||||
// <a href="#" className="text-gray-400 hover:text-gray-500">
|
||||
// <span className="sr-only">Instagram</span>
|
||||
// <Instagram className="h-6 w-6" />
|
||||
// </a>
|
||||
// <a href="#" className="text-gray-400 hover:text-gray-500">
|
||||
// <span className="sr-only">LinkedIn</span>
|
||||
// <Linkedin className="h-6 w-6" />
|
||||
// </a>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
|
||||
// <div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
// <div>
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Решения</h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Планирование
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Аналитика
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Публикации
|
||||
// </a>
|
||||
// </li>
|
||||
// </ul>
|
||||
// </div>
|
||||
// <div className="mt-12 md:mt-0">
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Поддержка</h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Цены
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Документация
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Руководства
|
||||
// </a>
|
||||
// </li>
|
||||
// </ul>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
// <div>
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Компания</h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// О нас
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Блог
|
||||
// </a>
|
||||
// </li>
|
||||
// <li>
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// Партнеры
|
||||
// </a>
|
||||
// </li>
|
||||
// </ul>
|
||||
// </div>
|
||||
// <div className="mt-12 md:mt-0">
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">Контакты</h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// <li className="flex">
|
||||
// <Mail className="flex-shrink-0 h-6 w-6 text-gray-400" aria-hidden="true" />
|
||||
// <span className="ml-3 text-base text-gray-500">business@qwickpost.com</span>
|
||||
// </li>
|
||||
// <li className="flex">
|
||||
// <span className="ml-3 text-base text-gray-500">Уагадугу, Буркина-Фасо</span>
|
||||
// </li>
|
||||
// <li className="flex">
|
||||
// <span className="ml-3 text-base text-gray-500">Поддержка 24/7</span>
|
||||
// </li>
|
||||
// </ul>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div className="mt-12 border-t border-gray-200 pt-8">
|
||||
// <p className="text-base text-gray-400 xl:text-center">
|
||||
// © 2024 qWickPost. Все права защищены.
|
||||
// </p>
|
||||
// </div>
|
||||
// </div>
|
||||
// </footer>
|
||||
// )
|
||||
// }
|
||||
|
||||
|
||||
// import React from 'react';
|
||||
// import { Facebook, Twitter, Instagram, Linkedin} from 'lucide-react';
|
||||
// import translations from '../translations.json';
|
||||
// import { useLanguage } from '../contexts/LanguageContext';
|
||||
// import { Link } from 'react-router-dom';
|
||||
// import { CustomLink } from './CustomLink';
|
||||
// import { ScrollLink } from './ScrollLink';
|
||||
|
||||
// export default function Footer() {
|
||||
// const { language } = useLanguage();
|
||||
// const t = translations.footer[language];
|
||||
|
||||
// const socialIcons = {
|
||||
// facebook: Facebook,
|
||||
// twitter: Twitter,
|
||||
// instagram: Instagram,
|
||||
// linkedin: Linkedin
|
||||
// };
|
||||
|
||||
// const renderSupportLink = (key, value) => {
|
||||
// if (key === 'pricing') {
|
||||
// return (
|
||||
// <CustomLink to="/pricing" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// {value}
|
||||
// </CustomLink>
|
||||
// );
|
||||
// }
|
||||
// if (key === 'documentation') {
|
||||
// return (
|
||||
// <a href="/#contacts-section" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// {value}
|
||||
// </a>
|
||||
// );
|
||||
// }
|
||||
// return (
|
||||
// <a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// {value}
|
||||
// </a>
|
||||
// );
|
||||
// };
|
||||
|
||||
// return (
|
||||
// <footer className="bg-gray-100 mt-8">
|
||||
// <div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
|
||||
// <div className="xl:grid xl:grid-cols-3 xl:gap-8">
|
||||
// <div className="space-y-8 xl:col-span-1">
|
||||
// <p className="text-gray-500 text-base">
|
||||
// {t.description}
|
||||
// </p>
|
||||
// <div className="flex space-x-6">
|
||||
// {Object.entries(t.socials).map(([key, value]) => {
|
||||
// const Icon = socialIcons[key];
|
||||
// return (
|
||||
// <a key={key} href="#" className="text-gray-400 hover:text-gray-500">
|
||||
// <span className="sr-only">{value}</span>
|
||||
// <Icon className="h-6 w-6" />
|
||||
// </a>
|
||||
// );
|
||||
// })}
|
||||
// </div>
|
||||
// </div>
|
||||
|
||||
// <div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
|
||||
// <div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
// <div>
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
// {t.sections.solutions.title}
|
||||
// </h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// {Object.entries(t.sections.solutions.links).map(([key, value]) => (
|
||||
// <li key={key}>
|
||||
// <a href="/#usability-section" className="text-base text-gray-500 hover:text-gray-900">
|
||||
// {value}
|
||||
// </a>
|
||||
// </li>
|
||||
// ))}
|
||||
// </ul>
|
||||
// </div>
|
||||
// <div className="mt-12 md:mt-0">
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
// {t.sections.support.title}
|
||||
// </h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// {Object.entries(t.sections.support.links).map(([key, value]) => (
|
||||
// <li key={key}>
|
||||
// {renderSupportLink(key, value)}
|
||||
// </li>
|
||||
// ))}
|
||||
// </ul>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
// <div className="mt-12 md:mt-0">
|
||||
// <h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
// {t.sections.contacts.title}
|
||||
// </h3>
|
||||
// <ul role="list" className="mt-4 space-y-4">
|
||||
// <li className="flex">
|
||||
// {/* <Mail className="flex-shrink-0 h-6 w-6 text-gray-400" aria-hidden="true" /> */}
|
||||
// <span className="ml-3 text-base text-gray-500">
|
||||
// {t.sections.contacts.email}
|
||||
// </span>
|
||||
// </li>
|
||||
// <li className="flex">
|
||||
// <span className="ml-3 text-base text-gray-500">
|
||||
// {t.sections.contacts.address}
|
||||
// </span>
|
||||
// </li>
|
||||
// <li className="flex">
|
||||
// <span className="ml-3 text-base text-gray-500">
|
||||
// {t.sections.contacts.support}
|
||||
// </span>
|
||||
// </li>
|
||||
// </ul>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div className="mt-12 border-t border-gray-200 pt-8">
|
||||
// <p className="text-base text-gray-400 xl:text-center">
|
||||
// {t.copyright}
|
||||
// </p>
|
||||
// </div>
|
||||
// </div>
|
||||
// </footer>
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { Facebook, Twitter, Instagram, Linkedin} from 'lucide-react';
|
||||
import { FacebookFilled, XOutlined, InstagramOutlined, SendOutlined } from '@ant-design/icons';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
import { CustomLink } from './CustomLink';
|
||||
|
||||
export default function Footer() {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.footer[language];
|
||||
|
||||
const socialIcons = {
|
||||
facebook: FacebookFilled,
|
||||
twitter: XOutlined,
|
||||
instagram: InstagramOutlined,
|
||||
telegramm: SendOutlined
|
||||
};
|
||||
|
||||
// Здесь можно будет настроить URL-адреса социальных сетей
|
||||
const socialLinks = {
|
||||
facebook: "https://www.facebook.com/profile.php?id=61566725398725", // Заменить на реальный URL Facebook
|
||||
twitter: "https://x.com/home", // Заменить на реальный URL Twitter
|
||||
instagram: "https://www.instagram.com/qwick_post", // Заменить на реальный URL Instagram
|
||||
telegramm: "https://web.telegram.org/" // Заменить на реальный URL LinkedIn
|
||||
};
|
||||
|
||||
const renderSupportLink = (key, value) => {
|
||||
if (key === 'pricing') {
|
||||
return (
|
||||
<CustomLink to="/pricing" className="text-base text-gray-500 hover:text-gray-900">
|
||||
{value}
|
||||
</CustomLink>
|
||||
);
|
||||
}
|
||||
if (key === 'documentation') {
|
||||
return (
|
||||
<a href="/#contacts-section" className="text-base text-gray-500 hover:text-gray-900">
|
||||
{value}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<a href="#" className="text-base text-gray-500 hover:text-gray-900">
|
||||
{value}
|
||||
</a>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<footer className="bg-gray-100 mt-8">
|
||||
<div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
|
||||
<div className="xl:grid xl:grid-cols-3 xl:gap-8">
|
||||
<div className="space-y-8 xl:col-span-1">
|
||||
<p className="text-gray-500 text-base">
|
||||
{t.description}
|
||||
</p>
|
||||
<div className="flex space-x-6">
|
||||
{Object.entries(t.socials).map(([key, value]) => {
|
||||
const Icon = socialIcons[key];
|
||||
return (
|
||||
<a
|
||||
key={key}
|
||||
href={socialLinks[key]}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-gray-400 hover:text-gray-500"
|
||||
title={value}
|
||||
>
|
||||
<span className="sr-only">{value}</span>
|
||||
<Icon className="h-6 w-6" />
|
||||
</a>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-12 grid grid-cols-2 gap-8 xl:mt-0 xl:col-span-2">
|
||||
<div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
{t.sections.solutions.title}
|
||||
</h3>
|
||||
<ul role="list" className="mt-4 space-y-4">
|
||||
{Object.entries(t.sections.solutions.links).map(([key, value]) => (
|
||||
<li key={key}>
|
||||
<a href="/solutions" className="text-base text-gray-500 hover:text-gray-900">
|
||||
{value}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div className="mt-12 md:mt-0">
|
||||
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
{t.sections.support.title}
|
||||
</h3>
|
||||
<ul role="list" className="mt-4 space-y-4">
|
||||
{Object.entries(t.sections.support.links).map(([key, value]) => (
|
||||
<li key={key}>
|
||||
{renderSupportLink(key, value)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div className="md:grid md:grid-cols-2 md:gap-8">
|
||||
<div className="mt-12 md:mt-0">
|
||||
<h3 className="text-sm font-semibold text-gray-400 tracking-wider uppercase">
|
||||
{t.sections.contacts.title}
|
||||
</h3>
|
||||
<ul role="list" className="mt-4 space-y-4">
|
||||
<li className="flex">
|
||||
<a
|
||||
href={`mailto:${t.sections.contacts.email}`}
|
||||
className="ml-3 text-base text-gray-500 hover:text-gray-900"
|
||||
>
|
||||
{t.sections.contacts.email}
|
||||
</a>
|
||||
</li>
|
||||
<li className="flex">
|
||||
<a
|
||||
href="https://www.google.com/maps/place/%D0%91%D1%83%D1%80%D0%BA%D0%B8%D0%BD%D0%B0-%D0%A4%D0%B0%D1%81%D0%BE/@12.2400091,-4.1961905,7z/data=!3m1!4b1!4m6!3m5!1s0xe2dca26d5a6709b:0x27930aed46836dab!8m2!3d12.238333!4d-1.561593!16zL20vMDE2OTk?entry=ttu&g_ep=EgoyMDI0MTExOS4yIKXMDSoASAFQAw%3D%3D" // Заменить на реальный URL карты
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="ml-3 text-base text-gray-500 hover:text-gray-900"
|
||||
>
|
||||
{t.sections.contacts.address}
|
||||
</a>
|
||||
</li>
|
||||
<li className="flex">
|
||||
{/* <a
|
||||
className="ml-3 text-base text-gray-500 hover:text-gray-900"
|
||||
>
|
||||
{t.sections.contacts.support}
|
||||
</a> */}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-12 border-t border-gray-200 pt-8">
|
||||
<p className="text-base text-gray-400 xl:text-center">
|
||||
{t.copyright}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
261
src/components/FourSteps.js
Normal file
@ -0,0 +1,261 @@
|
||||
// import firstimage from '../images/foursteps/login.png'
|
||||
// import secondimage from '../images/foursteps/iphoneves.jpg'
|
||||
// import thirdimage from '../images/foursteps/analyzeandoptimize.jpg'
|
||||
// import fourthimage from '../images/foursteps/telefonvruke.jpg'
|
||||
// import React, { useRef, useEffect, useState } from 'react'
|
||||
// import { motion, AnimatePresence } from 'framer-motion'
|
||||
|
||||
// export default function FourSteps() {
|
||||
// const [activeStep, setActiveStep] = useState(0)
|
||||
// const timeoutRef = useRef(null)
|
||||
|
||||
// const steps = [
|
||||
// {
|
||||
// title: "Подключите свой аккаунт",
|
||||
// description: "Планируйте, создавайте и публикуйте ваш контент для всех социальных сетей из одного места.",
|
||||
// image: firstimage,
|
||||
// icon: () => (
|
||||
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
// </svg>
|
||||
// )
|
||||
// },
|
||||
// {
|
||||
// title: "Планируйте свой контент",
|
||||
// description: "Используйте наш интуитивно понятный календарь, чтобы планировать публикации и визуализировать свою контент-стратегию.",
|
||||
// image: secondimage,
|
||||
// icon: () => (
|
||||
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
|
||||
// </svg>
|
||||
// )
|
||||
// },
|
||||
// {
|
||||
// title: "Анализируйте и оптимизируйте",
|
||||
// description: "Отслеживайте свою производительность с помощью аналитики в реальном времени и получайте предложения по улучшению на основе ИИ.",
|
||||
// image: thirdimage,
|
||||
// icon: () => (
|
||||
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
|
||||
// </svg>
|
||||
// )
|
||||
// },
|
||||
// {
|
||||
// title: "Вовлекайтесь и развивайтесь",
|
||||
// description: "Взаимодействуйте со своей аудиторией и наблюдайте, как процветает ваше присутствие в социальных сетях.",
|
||||
// image: fourthimage,
|
||||
// icon: () => (
|
||||
// <svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
// <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
|
||||
// </svg>
|
||||
// )
|
||||
// }
|
||||
// ]
|
||||
|
||||
// useEffect(() => {
|
||||
// timeoutRef.current = window.setTimeout(() => {
|
||||
// setActiveStep((prevStep) => (prevStep + 1) % steps.length)
|
||||
// }, 5000)
|
||||
|
||||
// return () => {
|
||||
// if (timeoutRef.current !== null) {
|
||||
// window.clearTimeout(timeoutRef.current)
|
||||
// }
|
||||
// }
|
||||
// }, [activeStep])
|
||||
|
||||
// return (
|
||||
// <div className="bg-white py-16 overflow-hidden">
|
||||
// <div className="max-w-6xl mx-auto px-4">
|
||||
// <div className="mb-12">
|
||||
// <h2 className="text-3xl font-extrabold text-green-600 mb-4">
|
||||
// Работайте с легкостью
|
||||
// </h2>
|
||||
// <p className="text-lg text-gray-600">
|
||||
// Напрямую взаимодействуйте с площадками через удобный интерфейс
|
||||
// </p>
|
||||
// </div>
|
||||
|
||||
// <div className="grid grid-cols-1 md:grid-cols-2 gap-8 items-center">
|
||||
// <div className="space-y-4">
|
||||
// {steps.map((step, index) => (
|
||||
// <motion.div
|
||||
// key={index}
|
||||
// initial={{ opacity: 0, y: 20 }}
|
||||
// animate={{ opacity: 1, y: 0 }}
|
||||
// transition={{ duration: 0.5, delay: index * 0.1 }}
|
||||
// className={`transform transition-all duration-300 ${
|
||||
// activeStep === index
|
||||
// ? 'scale-102 bg-white shadow-md border-green-500'
|
||||
// : 'hover:bg-white hover:shadow-sm'
|
||||
// } rounded-xl border p-6 cursor-pointer`}
|
||||
// onClick={() => setActiveStep(index)}
|
||||
// >
|
||||
// <div className="flex items-start space-x-4">
|
||||
// <div className={`flex-shrink-0 p-3 rounded-lg ${
|
||||
// activeStep === index ? 'bg-green-100 text-green-600' : 'bg-gray-100 text-gray-500'
|
||||
// }`}>
|
||||
// {step.icon()}
|
||||
// </div>
|
||||
// <div className="flex-1">
|
||||
// <h3 className={`text-lg font-semibold mb-2 ${
|
||||
// activeStep === index ? 'text-green-600' : 'text-gray-900'
|
||||
// }`}>
|
||||
// {step.title}
|
||||
// </h3>
|
||||
// <p className="text-gray-600 text-sm leading-relaxed">
|
||||
// {step.description}
|
||||
// </p>
|
||||
// </div>
|
||||
// </div>
|
||||
// </motion.div>
|
||||
// ))}
|
||||
// </div>
|
||||
|
||||
// <div className="relative h-[400px] flex items-center justify-center overflow-hidden">
|
||||
// <AnimatePresence initial={false}>
|
||||
// <motion.img
|
||||
// key={activeStep}
|
||||
// src={steps[activeStep].image}
|
||||
// alt={steps[activeStep].title}
|
||||
// initial={{ opacity: 0, x: 300 }}
|
||||
// animate={{ opacity: 1, x: 0 }}
|
||||
// exit={{ opacity: 0, x: -300 }}
|
||||
// transition={{ type: "spring", stiffness: 300, damping: 30 }}
|
||||
// className="w-full h-full object-contain rounded-lg absolute"
|
||||
// />
|
||||
// </AnimatePresence>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// )
|
||||
// }
|
||||
|
||||
|
||||
|
||||
import firstimage from '../images/foursteps/login.png'
|
||||
import secondimage from '../images/foursteps/platform.png'
|
||||
import thirdimage from '../images/foursteps/analytics_steps.png'
|
||||
import fourthimage from '../images/foursteps/forfun.png'
|
||||
import React, { useRef, useEffect, useState } from 'react'
|
||||
import { motion, AnimatePresence } from 'framer-motion'
|
||||
import translations from '../translations.json'
|
||||
import { useLanguage } from '../contexts/LanguageContext'
|
||||
|
||||
export default function FourSteps() {
|
||||
const [activeStep, setActiveStep] = useState(0);
|
||||
const timeoutRef = useRef(null);
|
||||
const { language } = useLanguage();
|
||||
const t = translations.fourSteps[language];
|
||||
|
||||
const images = [firstimage, secondimage, thirdimage, fourthimage];
|
||||
|
||||
const icons = [
|
||||
() => (
|
||||
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
),
|
||||
() => (
|
||||
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
|
||||
</svg>
|
||||
),
|
||||
() => (
|
||||
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
|
||||
</svg>
|
||||
),
|
||||
() => (
|
||||
<svg className="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
|
||||
</svg>
|
||||
)
|
||||
];
|
||||
|
||||
const steps = t.steps.map((step, index) => ({
|
||||
...step,
|
||||
image: images[index],
|
||||
icon: icons[index]
|
||||
}));
|
||||
|
||||
useEffect(() => {
|
||||
timeoutRef.current = window.setTimeout(() => {
|
||||
setActiveStep((prevStep) => (prevStep + 1) % steps.length);
|
||||
}, 5000);
|
||||
|
||||
return () => {
|
||||
if (timeoutRef.current !== null) {
|
||||
window.clearTimeout(timeoutRef.current);
|
||||
}
|
||||
};
|
||||
}, [activeStep, steps.length]);
|
||||
|
||||
return (
|
||||
<div className="bg-white py-16 overflow-hidden">
|
||||
<div className="max-w-6xl mx-auto px-4">
|
||||
<div className="mb-12">
|
||||
<h2 className="text-3xl font-extrabold text-green-600 mb-4">
|
||||
{t.title}
|
||||
</h2>
|
||||
<p className="text-lg text-gray-600">
|
||||
{t.subtitle}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 items-center">
|
||||
<div className="space-y-4">
|
||||
{steps.map((step, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
initial={{ opacity: 0, y: 20 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.5, delay: index * 0.1 }}
|
||||
className={`transform transition-all duration-300 ${
|
||||
activeStep === index
|
||||
? 'scale-102 bg-white shadow-md border-green-500'
|
||||
: 'hover:bg-white hover:shadow-sm'
|
||||
} rounded-xl border p-6 cursor-pointer`}
|
||||
onClick={() => setActiveStep(index)}
|
||||
>
|
||||
<div className="flex items-start space-x-4">
|
||||
<div className={`flex-shrink-0 p-3 rounded-lg ${
|
||||
activeStep === index ? 'bg-green-100 text-green-600' : 'bg-gray-100 text-gray-500'
|
||||
}`}>
|
||||
{step.icon()}
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<h3 className={`text-lg font-semibold mb-2 ${
|
||||
activeStep === index ? 'text-green-600' : 'text-gray-900'
|
||||
}`}>
|
||||
{step.title}
|
||||
</h3>
|
||||
<p className="text-gray-600 text-sm leading-relaxed">
|
||||
{step.description}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="relative h-[400px] flex items-center justify-center overflow-hidden">
|
||||
<AnimatePresence initial={false}>
|
||||
<motion.img
|
||||
key={activeStep}
|
||||
src={steps[activeStep].image}
|
||||
alt={steps[activeStep].imageAlt}
|
||||
initial={{ opacity: 0, x: 300 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
exit={{ opacity: 0, x: -300 }}
|
||||
transition={{ type: "spring", stiffness: 300, damping: 30 }}
|
||||
className="w-full h-full object-contain rounded-lg absolute"
|
||||
/>
|
||||
</AnimatePresence>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
215
src/components/Header.js
Normal file
@ -0,0 +1,215 @@
|
||||
// import { useState, useEffect } from 'react'
|
||||
// import { Link } from 'react-router-dom'
|
||||
// import logo from '../assets/images/logo200x50.png'
|
||||
// import { ScrollRestoration } from 'react-router-dom';
|
||||
|
||||
// export default function Header() {
|
||||
// const [isScrolled, setIsScrolled] = useState(false)
|
||||
|
||||
// useEffect(() => {
|
||||
// const handleScroll = () => {
|
||||
// const isFullScreenPassed = window.scrollY > window.innerHeight
|
||||
// setIsScrolled(isFullScreenPassed)
|
||||
// }
|
||||
|
||||
// window.addEventListener('scroll', handleScroll)
|
||||
// return () => window.removeEventListener('scroll', handleScroll)
|
||||
// }, [])
|
||||
|
||||
// return (
|
||||
// <header
|
||||
// className={`
|
||||
// fixed top-0 left-0 w-full z-50
|
||||
// transition-all duration-300
|
||||
// ${isScrolled
|
||||
// ? 'bg-white bg-opacity-90 backdrop-blur-md'
|
||||
// : 'bg-transparent backdrop-blur-md bg-opacity-30'
|
||||
// }
|
||||
// `}
|
||||
// >
|
||||
// <div className="container mx-auto px-4">
|
||||
// <div className="flex items-center justify-between h-16">
|
||||
// <div className="flex items-center">
|
||||
// <a href="#">
|
||||
// <img
|
||||
// src={logo}
|
||||
// alt="Logo"
|
||||
// className="h-12 w-auto"
|
||||
// />
|
||||
// </a>
|
||||
// </div>
|
||||
|
||||
// <nav className="hidden md:flex space-x-8">
|
||||
// <Link
|
||||
// to="/pricing"
|
||||
// className={`text-lg font-light transition-colors duration-200 ${
|
||||
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
// }`}
|
||||
// >
|
||||
// Тарифный план
|
||||
// </Link>
|
||||
// <a
|
||||
// href="#contacts-section"
|
||||
// className={`text-lg font-light transition-colors duration-200 ${
|
||||
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
// }`}
|
||||
// >
|
||||
// Обратная связь
|
||||
// </a>
|
||||
// </nav>
|
||||
// </div>
|
||||
// </div>
|
||||
// </header>
|
||||
// )
|
||||
// }
|
||||
|
||||
// import { useState, useEffect } from 'react';
|
||||
// import { Link } from 'react-router-dom';
|
||||
// import logo from '../assets/images/logo200x50.png';
|
||||
// import translations from '../translations.json';
|
||||
// import { useLanguage } from '../contexts/LanguageContext';
|
||||
// import { CustomLink } from './CustomLink';
|
||||
|
||||
// export default function Header() {
|
||||
// const [isScrolled, setIsScrolled] = useState(false);
|
||||
// const { language, toggleLanguage } = useLanguage();
|
||||
// const t = translations.header[language];
|
||||
|
||||
// useEffect(() => {
|
||||
// const handleScroll = () => {
|
||||
// const isFullScreenPassed = window.scrollY > window.innerHeight;
|
||||
// setIsScrolled(isFullScreenPassed);
|
||||
// };
|
||||
|
||||
// window.addEventListener('scroll', handleScroll);
|
||||
// return () => window.removeEventListener('scroll', handleScroll);
|
||||
// }, []);
|
||||
|
||||
// return (
|
||||
// <header
|
||||
// className={`
|
||||
// fixed top-0 left-0 w-full z-50
|
||||
// transition-all duration-300
|
||||
// ${isScrolled
|
||||
// ? 'bg-white bg-opacity-90 backdrop-blur-md'
|
||||
// : 'bg-transparent backdrop-blur-md bg-opacity-30'
|
||||
// }
|
||||
// `}
|
||||
// >
|
||||
// <div className="container mx-auto px-4">
|
||||
// <div className="flex items-center justify-between h-16">
|
||||
// <div className="flex items-center">
|
||||
// <CustomLink to="/">
|
||||
// <img
|
||||
// src={logo}
|
||||
// alt="Logo"
|
||||
// className="h-12 w-auto"
|
||||
// />
|
||||
// </CustomLink>
|
||||
// </div>
|
||||
|
||||
// <nav className="hidden md:flex items-center space-x-8">
|
||||
// <CustomLink
|
||||
// to="/pricing"
|
||||
// className={`text-lg font-light transition-colors duration-200 ${
|
||||
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
// }`}
|
||||
// >
|
||||
// {t.pricing}
|
||||
// </CustomLink>
|
||||
// <a
|
||||
// href="#contacts-section"
|
||||
// className={`text-lg font-light transition-colors duration-200 ${
|
||||
// isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
// }`}
|
||||
// >
|
||||
// {t.feedback}
|
||||
// </a>
|
||||
// <button
|
||||
// onClick={toggleLanguage}
|
||||
// className={`text-lg font-semibold transition-colors duration-200 px-3 py-1 rounded-md border-2 ${
|
||||
// isScrolled
|
||||
// ? 'text-gray-800 hover:text-gray-600 border-gray-800'
|
||||
// : 'text-white hover:text-gray-200 border-white'
|
||||
// }`}
|
||||
// >
|
||||
// {t.langButton}
|
||||
// </button>
|
||||
// </nav>
|
||||
// </div>
|
||||
// </div>
|
||||
// </header>
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
import { useState, useEffect } from 'react';
|
||||
import logo from '../assets/images/logo200x50.png';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
import { CustomLink } from './CustomLink';
|
||||
import LanguageSwitcher from './LanguageSwitcher';
|
||||
import { ScrollLink } from './ScrollLink';
|
||||
|
||||
export default function Header() {
|
||||
const [isScrolled, setIsScrolled] = useState(false);
|
||||
const { language } = useLanguage();
|
||||
const t = translations.header[language];
|
||||
|
||||
useEffect(() => {
|
||||
const handleScroll = () => {
|
||||
const isFullScreenPassed = window.scrollY > window.innerHeight;
|
||||
setIsScrolled(isFullScreenPassed);
|
||||
};
|
||||
|
||||
window.addEventListener('scroll', handleScroll);
|
||||
return () => window.removeEventListener('scroll', handleScroll);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<header
|
||||
className={`
|
||||
fixed top-0 left-0 w-full z-50
|
||||
transition-all duration-300
|
||||
${isScrolled
|
||||
? 'bg-white bg-opacity-90 backdrop-blur-md'
|
||||
: 'bg-transparent backdrop-blur-md bg-opacity-30'
|
||||
}
|
||||
`}
|
||||
>
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="flex items-center justify-between h-16">
|
||||
<div className="flex items-center">
|
||||
<CustomLink to="/">
|
||||
<img
|
||||
src={logo}
|
||||
alt="Logo"
|
||||
className="h-12 w-auto"
|
||||
/>
|
||||
</CustomLink>
|
||||
</div>
|
||||
|
||||
<nav className="hidden md:flex items-center space-x-8">
|
||||
<CustomLink
|
||||
to="/pricing"
|
||||
className={`text-lg font-light transition-colors duration-200 ${
|
||||
isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
}`}
|
||||
>
|
||||
{t.pricing}
|
||||
</CustomLink>
|
||||
<ScrollLink
|
||||
to="#contacts-section"
|
||||
className={`text-lg font-light transition-colors duration-200 ${
|
||||
isScrolled ? 'text-gray-800 hover:text-gray-600' : 'text-white hover:text-gray-200'
|
||||
}`}
|
||||
>
|
||||
{t.feedback}
|
||||
</ScrollLink>
|
||||
<LanguageSwitcher isScrolled={isScrolled} />
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
76
src/components/LanguageSwitcher.js
Normal file
@ -0,0 +1,76 @@
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
import { ChevronDown } from 'lucide-react';
|
||||
|
||||
const LanguageSwitcher = ({ isScrolled }) => {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const { language, setLanguage } = useLanguage();
|
||||
const dropdownRef = useRef(null);
|
||||
|
||||
const languages = {
|
||||
ru: {
|
||||
name: 'Русский',
|
||||
flag: '🇷🇺'
|
||||
},
|
||||
en: {
|
||||
name: 'English',
|
||||
flag: '🇬🇧'
|
||||
},
|
||||
ar: {
|
||||
name: 'العربية',
|
||||
flag: '🇸🇦'
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const handleClickOutside = (event) => {
|
||||
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
||||
setIsOpen(false);
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('mousedown', handleClickOutside);
|
||||
return () => document.removeEventListener('mousedown', handleClickOutside);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="relative" ref={dropdownRef}>
|
||||
<button
|
||||
onClick={() => setIsOpen(!isOpen)}
|
||||
className={`flex items-center space-x-2 px-3 py-1 rounded-md border-2 ${
|
||||
isScrolled
|
||||
? 'text-gray-800 hover:text-gray-600 border-gray-800'
|
||||
: 'text-white hover:text-gray-200 border-white'
|
||||
}`}
|
||||
>
|
||||
<span className="text-lg">{languages[language].flag}</span>
|
||||
<span className="text-lg font-semibold">{languages[language].name}</span>
|
||||
<ChevronDown className={`w-4 h-4 transition-transform duration-200 ${isOpen ? 'rotate-180' : ''}`} />
|
||||
</button>
|
||||
|
||||
{isOpen && (
|
||||
<div className="absolute right-0 mt-2 w-48 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5">
|
||||
<div className="py-1">
|
||||
{Object.entries(languages).map(([code, { name, flag }]) => (
|
||||
<button
|
||||
key={code}
|
||||
onClick={() => {
|
||||
setLanguage(code);
|
||||
setIsOpen(false);
|
||||
}}
|
||||
className={`flex items-center w-full px-4 py-2 text-sm ${
|
||||
language === code ? 'bg-gray-100 text-gray-900' : 'text-gray-700'
|
||||
} hover:bg-gray-50`}
|
||||
>
|
||||
<span className="mr-2 text-lg">{flag}</span>
|
||||
<span>{name}</span>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default LanguageSwitcher;
|
||||
168
src/components/MainSection.js
Normal file
@ -0,0 +1,168 @@
|
||||
// import React from 'react';
|
||||
// import { Typography, Button } from 'antd';
|
||||
// import { ArrowRightOutlined } from '@ant-design/icons';
|
||||
// import VideoBackground from './VideoBackground';
|
||||
// import styled from 'styled-components';
|
||||
|
||||
// const { Title, Paragraph } = Typography;
|
||||
|
||||
|
||||
// const CustomFont = styled.div`
|
||||
// @font-face {
|
||||
// font-family: 'CustomFont';
|
||||
// src: url('../assets/fonts/ProtestStrike-Regular.ttf') format('truetype');
|
||||
// }
|
||||
// font-family: 'CustomFont', sans-serif;
|
||||
// `;
|
||||
|
||||
// const MainSection = () => {
|
||||
// return (
|
||||
// <div style={{
|
||||
// width: '100%',
|
||||
// height: '100vh',
|
||||
// overflow: 'hidden'
|
||||
// }}>
|
||||
// <div style={{
|
||||
// position: 'absolute',
|
||||
// top: 0,
|
||||
// left: 0,
|
||||
// width: '100%',
|
||||
// height: '100%',
|
||||
// zIndex: 1
|
||||
// }}>
|
||||
// <VideoBackground />
|
||||
// </div>
|
||||
|
||||
// <div style={{
|
||||
// position: 'relative',
|
||||
// zIndex: 2,
|
||||
// display: 'flex',
|
||||
// flexDirection: 'column',
|
||||
// justifyContent: 'center',
|
||||
// alignItems: 'center',
|
||||
// textAlign: 'center',
|
||||
// height: '100%',
|
||||
// padding: '20px',
|
||||
// backgroundColor: 'rgba(255, 255, 255, 0)'
|
||||
// }}>
|
||||
|
||||
// <CustomFont>
|
||||
// <Title style={{ color: '#ffffff', fontSize: '84px', marginBottom: '5px' }}>
|
||||
// <span style={{ fontWeight: '900' }}>
|
||||
// <p style={{marginBottom: '0px'}}>qWickPost</p>
|
||||
// </span>
|
||||
// </Title>
|
||||
// </CustomFont>
|
||||
|
||||
|
||||
// <Title level={2} style={{ color: '#ffffff', fontSize:'45px', marginBottom:'5px' }}>
|
||||
// <span style={{ fontWeight: 'bold' }}>Упростите ваш социальный маркетинг</span>
|
||||
// </Title>
|
||||
// <Paragraph style={{ fontSize: 20, color: '#ffffff', maxWidth: '800px', margin: '20px auto' }}>
|
||||
// Планируйте, создавайте и публикуйте ваш контент для всех социальных сетей из одного места.
|
||||
// Экономьте время и развивайте свой бренд в интернете.
|
||||
// </Paragraph>
|
||||
// <Button type="primary" size="large" style={{ background: 'rgba(255, 255, 255, 0)', borderWidth: 3, borderColor: '#ffffff', fontSize:'18px', fontWeight:900, marginTop: '20px' }}>
|
||||
// <p style = {{}}>Попробуйте бесплатно! </p>
|
||||
// <ArrowRightOutlined />
|
||||
// </Button>
|
||||
// </div>
|
||||
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
// export default MainSection;
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { Typography, Button } from 'antd';
|
||||
import { ArrowRightOutlined } from '@ant-design/icons';
|
||||
import VideoBackground from './VideoBackground';
|
||||
import styled from 'styled-components';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const { Title, Paragraph } = Typography;
|
||||
|
||||
|
||||
const CustomFont = styled.div`
|
||||
@font-face {
|
||||
font-family: 'CustomFont';
|
||||
src: url('../assets/fonts/ProtestStrike-Regular.ttf') format('truetype');
|
||||
}
|
||||
font-family: 'CustomFont', sans-serif;
|
||||
`;
|
||||
|
||||
const MainSection = () => {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.mainSection[language];
|
||||
|
||||
return (
|
||||
<div style={{
|
||||
width: '100%',
|
||||
height: '100vh',
|
||||
overflow: 'hidden'
|
||||
}}>
|
||||
<div style={{
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
zIndex: 1
|
||||
}}>
|
||||
<VideoBackground />
|
||||
</div>
|
||||
|
||||
<div style={{
|
||||
position: 'relative',
|
||||
zIndex: 2,
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
textAlign: 'center',
|
||||
height: '100%',
|
||||
padding: '20px',
|
||||
backgroundColor: 'rgba(255, 255, 255, 0)'
|
||||
}}>
|
||||
|
||||
<CustomFont>
|
||||
<Title style={{ color: '#ffffff', fontSize: '84px', marginBottom: '5px' }}>
|
||||
<span style={{ fontWeight: '900' }}>
|
||||
<p style={{marginBottom: '0px'}}>{t.title}</p>
|
||||
</span>
|
||||
</Title>
|
||||
</CustomFont>
|
||||
|
||||
<Title level={2} style={{ color: '#ffffff', fontSize:'30px', marginBottom:'-5px' }}>
|
||||
<span style={{ fontWeight: 'bold' }}>{t.subtitle}</span>
|
||||
</Title>
|
||||
<Title level={3} style={{ color: '#ffffff', fontSize:'45px', marginBottom:'0px' }}>
|
||||
<span style={{ fontWeight: 'bold' }}>{t.description}</span>
|
||||
</Title>
|
||||
<Paragraph style={{ fontSize: 20, color: '#ffffff', maxWidth: '800px', margin: '20px auto' }}>
|
||||
{t.descriptionn}
|
||||
</Paragraph>
|
||||
<Button
|
||||
href="http://app.qwickpost.com/"
|
||||
type="primary"
|
||||
size="large"
|
||||
style={{
|
||||
background: 'rgba(255, 255, 255, 0)',
|
||||
borderWidth: 3,
|
||||
borderColor: '#ffffff',
|
||||
fontSize:'18px',
|
||||
fontWeight: 900,
|
||||
marginTop: '20px'
|
||||
}}
|
||||
>
|
||||
<p>{t.tryButton}</p>
|
||||
<ArrowRightOutlined />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MainSection;
|
||||
207
src/components/MakeEasier.js
Normal file
@ -0,0 +1,207 @@
|
||||
// import { Calendar, BarChart2, Users, Share2, Lightbulb, Shield } from 'lucide-react'
|
||||
// import calendar from '../images/calendar.png'
|
||||
// import analytics from '../images/analytics.png'
|
||||
// import auditory from '../images/auditory.png'
|
||||
// import cross_platform from '../images/cross_platform.png'
|
||||
// import ai_recomendation from '../images/ai_recomendation.png'
|
||||
// import sequrity from '../images/sequrity.png'
|
||||
|
||||
// export default function Component() {
|
||||
// const features = [
|
||||
// {
|
||||
// icon: Calendar,
|
||||
// title: "Легкое планирование",
|
||||
// description: "Планируйте и составляйте расписание вашего контента для нескольких платформ с помощью нашего интуитивного календарного интерфейса.",
|
||||
// image: {
|
||||
// src: calendar,
|
||||
// alt: "Календарь с запланированными постами"
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// icon: BarChart2,
|
||||
// title: "Мощная аналитика",
|
||||
// description: "Получайте ценные идеи с помощью метрик производительности в реальном времени и действенных рекомендаций.",
|
||||
// image: {
|
||||
// src: analytics,
|
||||
// alt: "График аналитики социальных сетей"
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// icon: Users,
|
||||
// title: "Вовлечение аудитории",
|
||||
// description: "Взаимодействуйте с вашими подписчиками и выстраивайте значимые отношения с помощью централизованной панели управления.",
|
||||
// image: {
|
||||
// src: auditory,
|
||||
// alt: "Панель взаимодействия с аудиторией"
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// icon: Share2,
|
||||
// title: "Кросс-платформенные публикации",
|
||||
// description: "Легко публикуйте контент на нескольких платформах социальных сетей одним кликом.",
|
||||
// image: {
|
||||
// src: cross_platform,
|
||||
// alt: "Интерфейс публикации в социальные сети"
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// icon: Lightbulb,
|
||||
// title: "ИИ-рекомендации",
|
||||
// description: "Получайте интеллектуальные идеи для контента и советы по оптимизации для улучшения вашей работы в социальных сетях.",
|
||||
// image: {
|
||||
// src: ai_recomendation,
|
||||
// alt: "ИИ генерация рекомендаций"
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// icon: Shield,
|
||||
// title: "Безопасность и надежность",
|
||||
// description: "Будьте спокойны, зная, что ваши данные защищены мерами безопасности корпоративного уровня.",
|
||||
// image: {
|
||||
// src: sequrity,
|
||||
// alt: "Система безопасности и защиты данных"
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
|
||||
// return (
|
||||
// <div className="my-6 bg-white py-8 px-4 sm:px-6 lg:px-8">
|
||||
// <div className="max-w-5xl mx-auto">
|
||||
// <h2 className="text-4xl font-extrabold text-green-600 text-center mb-6">
|
||||
// Усильте ваше присутствие в социальных сетях
|
||||
// </h2>
|
||||
// <p className="text-xl text-gray-700 text-center mb-14 font-bold">
|
||||
// Используйте встроенный функционал, для достижения ваших целей
|
||||
// </p>
|
||||
|
||||
// <div className="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
|
||||
// {features.map((feature, index) => (
|
||||
// <div key={index} className="bg-white rounded-lg p-6 shadow-lg shadow-green-100 transition-all duration-300 hover:shadow-xl hover:shadow-green-200">
|
||||
// <div className="flex items-center mb-4">
|
||||
// <feature.icon className="h-8 w-8 text-green-600 mr-3" />
|
||||
// <h3 className="text-xl font-semibold text-gray-900">{feature.title}</h3>
|
||||
// </div>
|
||||
// <p className="text-gray-600 mb-4">{feature.description}</p>
|
||||
// <div className="bg-white rounded-lg overflow-hidden">
|
||||
// <div className="aspect-w-4 aspect-h-3">
|
||||
// <img
|
||||
// src={feature.image.src}
|
||||
// alt={feature.image.alt}
|
||||
// className="w-full h-full object-cover"
|
||||
// />
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// ))}
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// )
|
||||
// }
|
||||
|
||||
|
||||
import { Calendar, BarChart2, Users, Share2, Lightbulb, Shield } from 'lucide-react'
|
||||
import calendar from '../images/calendar.png'
|
||||
import analytics from '../images/analytics.png'
|
||||
import auditory from '../images/socialike.png'
|
||||
import cross_platform from '../images/cross_platform.png'
|
||||
import ai_recomendation from '../images/ai_recomendation.png'
|
||||
import sequrity from '../images/security.png'
|
||||
import translations from '../translations.json'
|
||||
import { useLanguage } from '../contexts/LanguageContext'
|
||||
|
||||
export default function Component() {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.makeEasier[language];
|
||||
|
||||
const features = [
|
||||
{
|
||||
icon: Calendar,
|
||||
title: t.features.planning.title,
|
||||
description: t.features.planning.description,
|
||||
image: {
|
||||
src: calendar,
|
||||
alt: t.features.planning.imageAlt
|
||||
}
|
||||
},
|
||||
{
|
||||
icon: BarChart2,
|
||||
title: t.features.analytics.title,
|
||||
description: t.features.analytics.description,
|
||||
image: {
|
||||
src: analytics,
|
||||
alt: t.features.analytics.imageAlt
|
||||
}
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: t.features.audience.title,
|
||||
description: t.features.audience.description,
|
||||
image: {
|
||||
src: auditory,
|
||||
alt: t.features.audience.imageAlt
|
||||
}
|
||||
},
|
||||
{
|
||||
icon: Share2,
|
||||
title: t.features.crossPlatform.title,
|
||||
description: t.features.crossPlatform.description,
|
||||
image: {
|
||||
src: cross_platform,
|
||||
alt: t.features.crossPlatform.imageAlt
|
||||
}
|
||||
},
|
||||
{
|
||||
icon: Lightbulb,
|
||||
title: t.features.aiRecommendations.title,
|
||||
description: t.features.aiRecommendations.description,
|
||||
image: {
|
||||
src: ai_recomendation,
|
||||
alt: t.features.aiRecommendations.imageAlt
|
||||
}
|
||||
},
|
||||
{
|
||||
icon: Shield,
|
||||
title: t.features.security.title,
|
||||
description: t.features.security.description,
|
||||
image: {
|
||||
src: sequrity,
|
||||
alt: t.features.security.imageAlt
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
return (
|
||||
<div id="usability-section" className="my-6 bg-white py-8 px-4 sm:px-6 lg:px-8">
|
||||
<div className="max-w-5xl mx-auto">
|
||||
<h2 className="text-4xl font-extrabold text-green-600 text-center mb-6">
|
||||
{t.title}
|
||||
</h2>
|
||||
<p className="text-xl text-gray-700 text-center mb-14 font-bold">
|
||||
{t.subtitle}
|
||||
</p>
|
||||
|
||||
<div className="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{features.map((feature, index) => (
|
||||
<div key={index} className="bg-white rounded-lg p-6 shadow-lg shadow-green-100 transition-all duration-300 hover:shadow-xl hover:shadow-green-200">
|
||||
<div className="flex items-center mb-4">
|
||||
<feature.icon className="h-8 w-8 text-green-600 mr-3" />
|
||||
<h3 className="text-xl font-semibold text-gray-900">{feature.title}</h3>
|
||||
</div>
|
||||
<p className="text-gray-600 mb-4">{feature.description}</p>
|
||||
<div className="bg-white rounded-lg overflow-hidden">
|
||||
<div className="aspect-w-4 aspect-h-3">
|
||||
<img
|
||||
src={feature.image.src}
|
||||
alt={feature.image.alt}
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
179
src/components/PriceList.js
Normal file
@ -0,0 +1,179 @@
|
||||
// import React from 'react';
|
||||
// import { Check } from "lucide-react";
|
||||
// import { Link } from 'react-router-dom';
|
||||
|
||||
// const PricingPlans = () => {
|
||||
// const plans = [
|
||||
// {
|
||||
// title: "Базовый",
|
||||
// description: "Для личных целей и маленьких проектов",
|
||||
// price: "990 ₽",
|
||||
// features: [
|
||||
// "Публикация постов и историй",
|
||||
// "Предпросмотр публикаций",
|
||||
// "Базовая аналитика",
|
||||
// "Работа в команде",
|
||||
// ],
|
||||
// popular: false,
|
||||
// },
|
||||
// {
|
||||
// title: "Премиальный",
|
||||
// description: "Идеально для вас",
|
||||
// price: "1090 ₽",
|
||||
// features: [
|
||||
// "Все функции Стандартного тарифа, а также:",
|
||||
// "Типограф",
|
||||
// "Мониторинг комментариев",
|
||||
// "Аналитика охватов, постов, аудитории",
|
||||
// ],
|
||||
// popular: true,
|
||||
// },
|
||||
// {
|
||||
// title: "Продвинутый",
|
||||
// description: "Для большой работы",
|
||||
// price: "1190 ₽",
|
||||
// features: [
|
||||
// "Все функции Премиального тарифа, а также:",
|
||||
// "AI помощник",
|
||||
// "Мониторинг сообщений",
|
||||
// "Репостер",
|
||||
// "Вотермарки",
|
||||
// ],
|
||||
// popular: false,
|
||||
// },
|
||||
// ];
|
||||
|
||||
// return (
|
||||
// <section className="w-full py-12 bg-white">
|
||||
// <div className="container px-4 md:px-6 mx-auto">
|
||||
// <div className="flex flex-col items-center justify-center space-y-4 text-center">
|
||||
// <h2 className="text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl text-green-600 mb-4">Тарифный план</h2>
|
||||
// <Link
|
||||
// to="/pricing"
|
||||
// className='text-lg font-medium transition-colors duration-200'
|
||||
// >
|
||||
// Узнать больше про тарифный план
|
||||
// </Link>
|
||||
// </div>
|
||||
// <div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto">
|
||||
// {plans.map((plan) => (
|
||||
// <div
|
||||
// key={plan.title}
|
||||
// className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
|
||||
// plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
|
||||
// } transition-all duration-200 hover:shadow-lg bg-white`}
|
||||
// >
|
||||
// {plan.popular && (
|
||||
// <div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
|
||||
// Популярный
|
||||
// </div>
|
||||
// )}
|
||||
// <div>
|
||||
// <h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
|
||||
// <p className="text-sm text-gray-500 mb-4">{plan.description}</p>
|
||||
// <div className="flex items-baseline mb-6">
|
||||
// <span className="text-4xl font-bold">{plan.price}</span>
|
||||
// <span className="text-gray-500 ml-2">/в месяц</span>
|
||||
// </div>
|
||||
// <ul className="space-y-3 mb-6">
|
||||
// {plan.features.map((feature) => (
|
||||
// <li key={feature} className="flex items-start">
|
||||
// <Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
|
||||
// <span className="text-gray-700 text-sm">{feature}</span>
|
||||
// </li>
|
||||
// ))}
|
||||
// </ul>
|
||||
// </div>
|
||||
// <button
|
||||
// className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
|
||||
// plan.popular
|
||||
// ? 'bg-green-500 text-white hover:bg-green-600'
|
||||
// : 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
|
||||
// }`}
|
||||
// >
|
||||
// Приобрести
|
||||
// </button>
|
||||
// </div>
|
||||
// ))}
|
||||
// </div>
|
||||
// </div>
|
||||
// </section>
|
||||
// );
|
||||
// };
|
||||
|
||||
// export default PricingPlans;
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { Check } from "lucide-react";
|
||||
import { Link } from 'react-router-dom';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
import { CustomLink } from './CustomLink';
|
||||
|
||||
const PricingPlans = () => {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.priceList[language];
|
||||
|
||||
return (
|
||||
<section className="w-full py-12 bg-white">
|
||||
<div className="container px-4 md:px-6 mx-auto">
|
||||
<div className="flex flex-col items-center justify-center space-y-4 text-center">
|
||||
<h2 className="text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl text-green-600 mb-4">
|
||||
{t.title}
|
||||
</h2>
|
||||
<CustomLink
|
||||
to="/pricing"
|
||||
className="text-lg font-medium transition-colors duration-200"
|
||||
>
|
||||
{t.learnMore}
|
||||
</CustomLink>
|
||||
</div>
|
||||
|
||||
<div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto">
|
||||
{t.plans.map((plan) => (
|
||||
<div
|
||||
key={plan.title}
|
||||
className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
|
||||
plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
|
||||
} transition-all duration-200 hover:shadow-lg bg-white`}
|
||||
>
|
||||
{plan.popular && (
|
||||
<div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
|
||||
{plan.popularLabel}
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
|
||||
<p className="text-sm text-gray-500 mb-4">{plan.description}</p>
|
||||
<div className="flex items-baseline mb-6">
|
||||
<span className="text-4xl font-bold">{plan.price}</span>
|
||||
<span className="text-gray-500 ml-2">{plan.period}</span>
|
||||
</div>
|
||||
<ul className="space-y-3 mb-6">
|
||||
{plan.features.map((feature) => (
|
||||
<li key={feature} className="flex items-start">
|
||||
<Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
|
||||
<span className="text-gray-700 text-sm">{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<button
|
||||
className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
|
||||
plan.popular
|
||||
? 'bg-green-500 text-white hover:bg-green-600'
|
||||
: 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
|
||||
}`}
|
||||
>
|
||||
{plan.buttonText}
|
||||
</button>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default PricingPlans;
|
||||
430
src/components/PricingFeatures.js
Normal file
@ -0,0 +1,430 @@
|
||||
import React, { useState } from 'react';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const PricingFeatures = () => {
|
||||
const [isAnnual, setIsAnnual] = useState(true);
|
||||
const { language } = useLanguage();
|
||||
const t = translations.pricingFeatures[language];
|
||||
|
||||
const features = {
|
||||
publications: {
|
||||
title: t.categories.publications.title,
|
||||
items: [
|
||||
{
|
||||
name: t.categories.publications.features.postsAndStories.name,
|
||||
description: t.categories.publications.features.postsAndStories.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.postVersions.name,
|
||||
description: t.categories.publications.features.postVersions.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.firstComment.name,
|
||||
description: t.categories.publications.features.firstComment.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.categories.name,
|
||||
description: t.categories.publications.features.categories.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.contentPlan.name,
|
||||
description: t.categories.publications.features.contentPlan.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.captions.name,
|
||||
description: t.categories.publications.features.captions.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.sharePublication.name,
|
||||
description: t.categories.publications.features.sharePublication.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.preview.name,
|
||||
description: t.categories.publications.features.preview.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.templates.name,
|
||||
description: t.categories.publications.features.templates.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.typography.name,
|
||||
description: t.categories.publications.features.typography.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.autoHashtags.name,
|
||||
description: t.categories.publications.features.autoHashtags.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.autoGeo.name,
|
||||
description: t.categories.publications.features.autoGeo.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.utmTags.name,
|
||||
description: t.categories.publications.features.utmTags.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.shortLinks.name,
|
||||
description: t.categories.publications.features.shortLinks.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.spellcheck.name,
|
||||
description: t.categories.publications.features.spellcheck.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.coverChoice.name,
|
||||
description: t.categories.publications.features.coverChoice.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.watermarks.name,
|
||||
description: t.categories.publications.features.watermarks.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.reposts.name,
|
||||
description: t.categories.publications.features.reposts.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.publications.features.repeatingPosts.name,
|
||||
description: t.categories.publications.features.repeatingPosts.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
}
|
||||
]
|
||||
},
|
||||
analytics: {
|
||||
title: t.categories.analytics.title,
|
||||
items: [
|
||||
{
|
||||
name: t.categories.analytics.features.basicAnalytics.name,
|
||||
description: t.categories.analytics.features.basicAnalytics.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.analytics.features.detailedEngagement.name,
|
||||
description: t.categories.analytics.features.detailedEngagement.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.analytics.features.reachAnalytics.name,
|
||||
description: t.categories.analytics.features.reachAnalytics.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.analytics.features.audienceAnalytics.name,
|
||||
description: t.categories.analytics.features.audienceAnalytics.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.analytics.features.postsAnalytics.name,
|
||||
description: t.categories.analytics.features.postsAnalytics.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
}
|
||||
]
|
||||
},
|
||||
team: {
|
||||
title: t.categories.team.title,
|
||||
items: [
|
||||
{
|
||||
name: t.categories.team.features.addUsers.name,
|
||||
description: t.categories.team.features.addUsers.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.team.features.accessControl.name,
|
||||
description: t.categories.team.features.accessControl.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.team.features.postApproval.name,
|
||||
description: t.categories.team.features.postApproval.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.team.features.discussPosts.name,
|
||||
description: t.categories.team.features.discussPosts.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
}
|
||||
]
|
||||
},
|
||||
modules: {
|
||||
title: t.categories.modules.title,
|
||||
items: [
|
||||
{
|
||||
name: t.categories.modules.features.yandexDisk.name,
|
||||
description: t.categories.modules.features.yandexDisk.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.modules.features.templates.name,
|
||||
description: t.categories.modules.features.templates.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.modules.features.leads.name,
|
||||
description: t.categories.modules.features.leads.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.modules.features.tasks.name,
|
||||
description: t.categories.modules.features.tasks.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.modules.features.aiAssistant.name,
|
||||
description: t.categories.modules.features.aiAssistant.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.modules.features.rssPublishing.name,
|
||||
description: t.categories.modules.features.rssPublishing.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
}
|
||||
]
|
||||
},
|
||||
monitoring: {
|
||||
title: t.categories.monitoring.title,
|
||||
items: [
|
||||
{
|
||||
name: t.categories.monitoring.features.monitoring.name,
|
||||
description: t.categories.monitoring.features.monitoring.description,
|
||||
standard: true,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.monitoring.features.quickReplies.name,
|
||||
description: t.categories.monitoring.features.quickReplies.description,
|
||||
standard: false,
|
||||
premium: true,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.monitoring.features.notifications.name,
|
||||
description: t.categories.monitoring.features.notifications.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
},
|
||||
{
|
||||
name: t.categories.monitoring.features.telegramReplies.name,
|
||||
description: t.categories.monitoring.features.telegramReplies.description,
|
||||
standard: false,
|
||||
premium: false,
|
||||
advanced: true
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
const plans = [
|
||||
{
|
||||
name: t.plans.standard.name,
|
||||
description: t.plans.standard.description,
|
||||
monthlyPrice: t.plans.standard.monthlyPrice,
|
||||
annualPrice: t.plans.standard.annualPrice,
|
||||
features: t.plans.standard.features
|
||||
},
|
||||
{
|
||||
name: t.plans.premium.name,
|
||||
description: t.plans.premium.description,
|
||||
monthlyPrice: t.plans.premium.monthlyPrice,
|
||||
annualPrice: t.plans.premium.annualPrice,
|
||||
features: t.plans.premium.features,
|
||||
popular: true
|
||||
},
|
||||
{
|
||||
name: t.plans.advanced.name,
|
||||
description: t.plans.advanced.description,
|
||||
monthlyPrice: t.plans.advanced.monthlyPrice,
|
||||
annualPrice: t.plans.advanced.annualPrice,
|
||||
features: t.plans.advanced.features
|
||||
}
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="max-w-7xl mx-auto px-4 py-10">
|
||||
<div className="text-center mb-10">
|
||||
{/* <h2 className="text-3xl font-bold mb-4">{t.title}</h2> */}
|
||||
{/* <p className="text-lg text-gray-600 mb-6">{t.subtitle}</p>
|
||||
<div className="flex justify-center gap-2 mb-10">
|
||||
<button
|
||||
onClick={() => setIsAnnual(true)}
|
||||
className={`px-5 py-2 rounded-lg border ${
|
||||
isAnnual ? 'bg-green-500 text-white border-green-500' : 'bg-white text-gray-700 border-green-300'
|
||||
}`}
|
||||
>
|
||||
{t.paymentButtons.annual}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setIsAnnual(false)}
|
||||
className={`px-5 py-2 rounded-lg border ${
|
||||
!isAnnual ? 'bg-green-500 text-white border-green-500' : 'bg-white text-gray-700 border-green-300'
|
||||
}`}
|
||||
>
|
||||
{t.paymentButtons.monthly}
|
||||
</button>
|
||||
</div> */}
|
||||
</div>
|
||||
|
||||
{/* <div className="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10">
|
||||
{plans.map((plan) => (
|
||||
<div
|
||||
key={plan.name}
|
||||
className={`relative p-6 rounded-lg border ${
|
||||
plan.popular ? 'border-green-500' : 'border-green-200'
|
||||
}`}
|
||||
>
|
||||
{plan.popular && (
|
||||
<div className="absolute -top-3 left-1/2 transform -translate-x-1/2 bg-green-500 text-white px-3 py-1 rounded-full text-sm">
|
||||
{t.popular}
|
||||
</div>
|
||||
)}
|
||||
<h3 className="text-2xl font-bold mb-2">{plan.name}</h3>
|
||||
<p className="text-gray-600 mb-4">{plan.description}</p>
|
||||
<div className="text-4xl font-bold mb-6">
|
||||
{isAnnual ? plan.annualPrice : plan.monthlyPrice} {t.cash}
|
||||
<span className="text-base font-normal text-gray-600">/{t.month}</span>
|
||||
</div>
|
||||
<button className="w-full py-3 px-4 rounded-lg bg-green-500 text-white font-medium hover:bg-green-600">
|
||||
{plan.popular ? t.startButton : t.tryButton}
|
||||
</button>
|
||||
</div>
|
||||
))}
|
||||
</div> */}
|
||||
|
||||
<div className="overflow-x-auto">
|
||||
<table className="w-full border-collapse">
|
||||
<tbody>
|
||||
{Object.entries(features).map(([key, category]) => (
|
||||
<React.Fragment key={key}>
|
||||
<tr className="bg-gray-50">
|
||||
<th className="w-1/2 px-6 py-4 text-left text-lg font-bold">
|
||||
{category.title}
|
||||
</th>
|
||||
{plans.map((plan) => (
|
||||
<th key={plan.name} className="px-6 py-4 text-gray-400 text-center font-medium">
|
||||
{plan.name}
|
||||
</th>
|
||||
))}
|
||||
</tr>
|
||||
{category.items.map((item, itemIndex) => (
|
||||
<tr key={itemIndex} className="border-b hover:bg-gray-50">
|
||||
<td className="px-6 py-4">
|
||||
<div className="flex items-center group">
|
||||
<span className="font-medium">{item.name}</span>
|
||||
<div className="relative ml-2">
|
||||
<div className="cursor-help w-5 h-5 bg-gray-200 rounded-full flex items-center justify-center text-gray-600 text-xs">
|
||||
?
|
||||
</div>
|
||||
<div className="hidden group-hover:block absolute z-10 left-full ml-2 w-64 bg-gray-800 text-white text-sm rounded-lg p-3">
|
||||
{item.description}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
{plans.map((plan) => (
|
||||
<td key={`${itemIndex}-${plan.name}`} className="px-6 py-4 text-center">
|
||||
{item[plan.features] ? (
|
||||
<span className="text-green-500 text-xl">✓</span>
|
||||
) : (
|
||||
<span className="text-gray-400 text-xl">−</span>
|
||||
)}
|
||||
</td>
|
||||
))}
|
||||
</tr>
|
||||
))}
|
||||
</React.Fragment>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default PricingFeatures;
|
||||
266
src/components/PricingPage.js
Normal file
@ -0,0 +1,266 @@
|
||||
// import React from 'react';
|
||||
// import { Check } from "lucide-react";
|
||||
// import { Link } from 'react-router-dom';
|
||||
// import PricingFeatures from './PricingFeatures';
|
||||
// import Footer from './Footer';
|
||||
|
||||
// const PricingPage = () => {
|
||||
// const plans = [
|
||||
// {
|
||||
// title: "Базовый",
|
||||
// description: "Для личных целей и маленьких проектов",
|
||||
// price: "990 ₽",
|
||||
// features: [
|
||||
// "Публикация постов и историй",
|
||||
// "Предпросмотр публикаций",
|
||||
// "Базовая аналитика",
|
||||
// "Работа в команде",
|
||||
// ],
|
||||
// popular: false,
|
||||
// },
|
||||
// {
|
||||
// title: "Премиальный",
|
||||
// description: "Идеально для вас",
|
||||
// price: "1090 ₽",
|
||||
// features: [
|
||||
// "Все функции Стандартного тарифа, а также:",
|
||||
// "Типограф",
|
||||
// "Мониторинг комментариев",
|
||||
// "Аналитика охватов, постов, аудитории",
|
||||
// ],
|
||||
// popular: true,
|
||||
// },
|
||||
// {
|
||||
// title: "Продвинутый",
|
||||
// description: "Для большой работы",
|
||||
// price: "1190 ₽",
|
||||
// features: [
|
||||
// "Все функции Премиального тарифа, а также:",
|
||||
// "AI помощник",
|
||||
// "Мониторинг сообщений",
|
||||
// "Репостер",
|
||||
// "Вотермарки",
|
||||
// ],
|
||||
// popular: false,
|
||||
// },
|
||||
// ];
|
||||
|
||||
// return (
|
||||
// <div className="min-h-screen bg-white">
|
||||
// <div className="container px-4 md:px-6 mx-auto pt-16">
|
||||
// {/* Navigation back to home */}
|
||||
// <Link
|
||||
// to="/"
|
||||
// className="inline-flex items-center text-green-600 hover:text-green-700 mb-8"
|
||||
// >
|
||||
// <svg
|
||||
// className="w-5 h-5 mr-2"
|
||||
// fill="none"
|
||||
// stroke="currentColor"
|
||||
// viewBox="0 0 24 24"
|
||||
// >
|
||||
// <path
|
||||
// strokeLinecap="round"
|
||||
// strokeLinejoin="round"
|
||||
// strokeWidth={2}
|
||||
// d="M15 19l-7-7 7-7"
|
||||
// />
|
||||
// </svg>
|
||||
// Вернуться на главную
|
||||
// </Link>
|
||||
|
||||
// {/* Header Section */}
|
||||
// <div className="flex flex-col items-center justify-center space-y-4 text-center mb-12">
|
||||
// <h1 className="text-4xl font-bold tracking-tighter sm:text-5xl md:text-6xl text-green-600">
|
||||
// Тарифный план
|
||||
// </h1>
|
||||
// <p className="max-w-[700px] text-gray-600 md:text-xl/relaxed">
|
||||
// Выберите подходящий тариф для вашего бизнеса
|
||||
// </p>
|
||||
// </div>
|
||||
|
||||
// {/* Pricing Cards */}
|
||||
// <div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto pb-16">
|
||||
// {plans.map((plan) => (
|
||||
// <div
|
||||
// key={plan.title}
|
||||
// className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
|
||||
// plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
|
||||
// } transition-all duration-200 hover:shadow-lg bg-white`}
|
||||
// >
|
||||
// {plan.popular && (
|
||||
// <div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
|
||||
// Популярный
|
||||
// </div>
|
||||
// )}
|
||||
// <div>
|
||||
// <h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
|
||||
// <p className="text-sm text-gray-500 mb-4">{plan.description}</p>
|
||||
// <div className="flex items-baseline mb-6">
|
||||
// <span className="text-4xl font-bold">{plan.price}</span>
|
||||
// <span className="text-gray-500 ml-2">/в месяц</span>
|
||||
// </div>
|
||||
// <ul className="space-y-3 mb-6">
|
||||
// {plan.features.map((feature) => (
|
||||
// <li key={feature} className="flex items-start">
|
||||
// <Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
|
||||
// <span className="text-gray-700 text-sm">{feature}</span>
|
||||
// </li>
|
||||
// ))}
|
||||
// </ul>
|
||||
// </div>
|
||||
// <button
|
||||
// className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
|
||||
// plan.popular
|
||||
// ? 'bg-green-500 text-white hover:bg-green-600'
|
||||
// : 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
|
||||
// }`}
|
||||
// >
|
||||
// Приобрести
|
||||
// </button>
|
||||
// </div>
|
||||
// ))}
|
||||
// </div>
|
||||
|
||||
// <PricingFeatures />
|
||||
|
||||
// <div className="text-center pb-16">
|
||||
// <h2 className="text-2xl font-bold text-gray-900 mb-4">
|
||||
// Остались вопросы?
|
||||
// </h2>
|
||||
// <p className="text-gray-600 mb-6">
|
||||
// Свяжитесь с нашей командой поддержки, и мы поможем выбрать оптимальный тариф для вас
|
||||
// </p>
|
||||
// <a
|
||||
// href="#"
|
||||
// className="text-green-600 hover:text-green-700 font-medium"
|
||||
// >
|
||||
// Связаться с поддержкой →
|
||||
// </a>
|
||||
// </div>
|
||||
|
||||
// </div>
|
||||
// <Footer />
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
|
||||
// export default PricingPage;
|
||||
|
||||
|
||||
import React from 'react';
|
||||
import { Check } from "lucide-react";
|
||||
import { Link } from 'react-router-dom';
|
||||
import PricingFeatures from './PricingFeatures';
|
||||
import Footer from './Footer';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
import DynamicPricing from './DynamicPricing';
|
||||
// import Header from './Header.js'
|
||||
|
||||
const PricingPage = () => {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.pricingPage[language];
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
{/* <Header /> */}
|
||||
<div className="container px-4 md:px-6 mx-auto pt-16">
|
||||
{/* Navigation back to home */}
|
||||
<Link
|
||||
to="/"
|
||||
className="inline-flex items-center text-green-600 hover:text-green-700 mb-8"
|
||||
>
|
||||
<svg
|
||||
className="w-5 h-5 mr-2"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M15 19l-7-7 7-7"
|
||||
/>
|
||||
</svg>
|
||||
{t.navigation.backToHome}
|
||||
</Link>
|
||||
|
||||
{/* <div className="flex flex-col items-center justify-center space-y-4 text-center mb-12">
|
||||
<h1 className="text-4xl font-bold tracking-tighter sm:text-5xl md:text-6xl text-green-600">
|
||||
{t.header.title}
|
||||
</h1>
|
||||
<p className="max-w-[700px] text-gray-600 md:text-xl/relaxed">
|
||||
{t.header.subtitle}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid lg:grid-cols-3 gap-8 mt-8 md:mt-12 max-w-6xl mx-auto pb-16">
|
||||
{t.plans.map((plan) => (
|
||||
<div
|
||||
key={plan.title}
|
||||
className={`relative flex flex-col justify-between p-6 rounded-lg shadow-md ${
|
||||
plan.popular ? 'border-2 border-green-500 shadow-lg scale-105' : 'border border-gray-200'
|
||||
} transition-all duration-200 hover:shadow-lg bg-white`}
|
||||
>
|
||||
{plan.popular && (
|
||||
<div className="absolute top-0 right-0 bg-green-500 text-white text-xs font-bold px-3 py-1 rounded-bl-lg rounded-tr-lg">
|
||||
{plan.popularLabel}
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<h3 className="text-2xl font-bold mb-2">{plan.title}</h3>
|
||||
<p className="text-sm text-gray-500 mb-4">{plan.description}</p>
|
||||
<div className="flex items-baseline mb-6">
|
||||
<span className="text-4xl font-bold">{plan.price}</span>
|
||||
<span className="text-gray-500 ml-2">{plan.period}</span>
|
||||
</div>
|
||||
<ul className="space-y-3 mb-6">
|
||||
{plan.features.map((feature) => (
|
||||
<li key={feature} className="flex items-start">
|
||||
<Check className="h-5 w-5 text-green-500 shrink-0 mr-2" />
|
||||
<span className="text-gray-700 text-sm">{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<button
|
||||
className={`w-full py-2 px-4 rounded-md text-lg font-semibold transition-colors ${
|
||||
plan.popular
|
||||
? 'bg-green-500 text-white hover:bg-green-600'
|
||||
: 'bg-white text-green-500 border border-green-500 hover:bg-green-50'
|
||||
}`}
|
||||
>
|
||||
{plan.buttonText}
|
||||
</button>
|
||||
</div>
|
||||
))}
|
||||
</div> */}
|
||||
|
||||
|
||||
<DynamicPricing />
|
||||
|
||||
<PricingFeatures />
|
||||
|
||||
<div className="text-center pb-16">
|
||||
<h2 className="text-2xl font-bold text-gray-900 mb-4">
|
||||
{t.supportSection.title}
|
||||
</h2>
|
||||
<p className="text-gray-600 mb-6">
|
||||
{t.supportSection.description}
|
||||
</p>
|
||||
<a
|
||||
href="/#contacts-section"
|
||||
className="text-green-600 hover:text-green-700 font-medium"
|
||||
>
|
||||
{t.supportSection.contactButton}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default PricingPage;
|
||||
156
src/components/Questions.js
Normal file
@ -0,0 +1,156 @@
|
||||
// import React, { useState } from 'react'
|
||||
// import { motion, AnimatePresence } from 'framer-motion'
|
||||
// import { ChevronDown } from 'lucide-react'
|
||||
|
||||
// const faqData = [
|
||||
// {
|
||||
// question: 'Что такое qWickPost?',
|
||||
// answer: 'qWickPost - это платформа для упрощения вашего социального маркетинга. Она позволяет планировать, создавать и публиковать контент для всех социальных сетей из одного места.'
|
||||
// },
|
||||
// {
|
||||
// question: 'Как qWickPost экономит мое время?',
|
||||
// answer: 'qWickPost автоматизирует процесс публикации в различных социальных сетях, позволяя вам создавать и планировать контент заранее. Это значительно сокращает время, затрачиваемое на управление вашими социальными медиа.'
|
||||
// },
|
||||
// {
|
||||
// question: 'С какими социальными сетями работает qWickPost?',
|
||||
// answer: 'qWickPost поддерживает все основные социальные платформы, включая Facebook, Instagram, X (Twitter), LinkedIn и другие. Мы постоянно расширяем список поддерживаемых платформ.'
|
||||
// },
|
||||
// {
|
||||
// question: 'Есть ли у qWickPost бесплатный пробный период?',
|
||||
// answer: 'Да, для вас имеется бесплатный пробный период в 7 дней, чтобы вы могли оценить все возможности qWickPost без каких-либо обязательств.'
|
||||
// }
|
||||
// ]
|
||||
|
||||
// const FAQItem = ({ question, answer }) => {
|
||||
// const [isOpen, setIsOpen] = useState(false)
|
||||
|
||||
// return (
|
||||
// <motion.div
|
||||
// initial={false}
|
||||
// animate={{ backgroundColor: isOpen ? 'rgb(250 251 252)' : 'white' }}
|
||||
// className="border border-green-100 rounded-lg shadow-sm mb-4 overflow-hidden"
|
||||
// >
|
||||
// <button
|
||||
// className="flex justify-between items-center w-full text-left p-6 focus:outline-none"
|
||||
// onClick={() => setIsOpen(!isOpen)}
|
||||
// >
|
||||
// <span className="text-lg font-medium text-gray-900">{question}</span>
|
||||
// <ChevronDown
|
||||
// className={`w-5 h-5 text-gray-500 transform transition-transform duration-200 ${
|
||||
// isOpen ? 'rotate-180' : ''
|
||||
// }`}
|
||||
// />
|
||||
// </button>
|
||||
// <AnimatePresence initial={false}>
|
||||
// {isOpen && (
|
||||
// <motion.div
|
||||
// initial={{ height: 0, opacity: 0 }}
|
||||
// animate={{ height: 'auto', opacity: 1 }}
|
||||
// exit={{ height: 0, opacity: 0 }}
|
||||
// transition={{ duration: 0.3 }}
|
||||
// >
|
||||
// <div className="px-6 pb-6 text-gray-600 leading-relaxed">
|
||||
// {answer}
|
||||
// </div>
|
||||
// </motion.div>
|
||||
// )}
|
||||
// </AnimatePresence>
|
||||
// </motion.div>
|
||||
// )
|
||||
// }
|
||||
|
||||
// export default function Questions() {
|
||||
// return (
|
||||
// <section className="py-16 bg-white mb-9">
|
||||
// <div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
// <div className="text-center mb-12">
|
||||
// <h2 className="text-3xl font-bold text-gray-900 mb-4">
|
||||
// Часто задаваемые вопросы
|
||||
// </h2>
|
||||
// <p className="text-lg text-gray-600">
|
||||
// Найдите ответы на популярные вопросы о qWickPost
|
||||
// </p>
|
||||
// </div>
|
||||
// <div className="space-y-4">
|
||||
// {faqData.map((faq, index) => (
|
||||
// <FAQItem key={index} question={faq.question} answer={faq.answer} />
|
||||
// ))}
|
||||
// </div>
|
||||
// </div>
|
||||
// </section>
|
||||
// )
|
||||
// }
|
||||
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { ChevronDown } from 'lucide-react';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const FAQItem = ({ question, answer }) => {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
initial={false}
|
||||
animate={{ backgroundColor: isOpen ? 'rgb(250 251 252)' : 'white' }}
|
||||
className="border border-green-100 rounded-lg shadow-sm mb-4 overflow-hidden"
|
||||
>
|
||||
<button
|
||||
className="flex justify-between items-center w-full text-left p-6 focus:outline-none"
|
||||
onClick={() => setIsOpen(!isOpen)}
|
||||
>
|
||||
<span className="text-lg font-medium text-gray-900">{question}</span>
|
||||
<ChevronDown
|
||||
className={`w-5 h-5 text-gray-500 transform transition-transform duration-200 ${
|
||||
isOpen ? 'rotate-180' : ''
|
||||
}`}
|
||||
/>
|
||||
</button>
|
||||
<AnimatePresence initial={false}>
|
||||
{isOpen && (
|
||||
<motion.div
|
||||
initial={{ height: 0, opacity: 0 }}
|
||||
animate={{ height: 'auto', opacity: 1 }}
|
||||
exit={{ height: 0, opacity: 0 }}
|
||||
transition={{ duration: 0.3 }}
|
||||
>
|
||||
<div className="px-6 pb-6 text-gray-600 leading-relaxed">
|
||||
{answer}
|
||||
</div>
|
||||
</motion.div>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
</motion.div>
|
||||
);
|
||||
};
|
||||
|
||||
export default function Questions() {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.questions[language];
|
||||
|
||||
return (
|
||||
<section className="py-16 bg-white mb-9">
|
||||
<div className="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl font-bold text-gray-900 mb-4">
|
||||
{t.title}
|
||||
</h2>
|
||||
<p className="text-lg text-gray-600">
|
||||
{t.subtitle}
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-4">
|
||||
{t.faq.map((faq, index) => (
|
||||
<FAQItem
|
||||
key={index}
|
||||
question={faq.question}
|
||||
answer={faq.answer}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
24
src/components/ScrollLink.jsx
Normal file
@ -0,0 +1,24 @@
|
||||
import React from 'react';
|
||||
|
||||
export function ScrollLink({ to, children, className }) {
|
||||
const handleClick = (e) => {
|
||||
e.preventDefault();
|
||||
const element = document.querySelector(to);
|
||||
if (element) {
|
||||
element.scrollIntoView({
|
||||
behavior: 'smooth',
|
||||
block: 'start',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<a
|
||||
href={to}
|
||||
className={className}
|
||||
onClick={handleClick}
|
||||
>
|
||||
{children}
|
||||
</a>
|
||||
);
|
||||
}
|
||||
17
src/components/ScrollToTop.jsx
Normal file
@ -0,0 +1,17 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
|
||||
function ScrollToTop() {
|
||||
const { pathname } = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
window.scrollTo({
|
||||
top: 0,
|
||||
behavior: 'smooth' // Для плавной прокрутки. Используйте 'auto' для мгновенной
|
||||
});
|
||||
}, [pathname]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default ScrollToTop;
|
||||
80
src/components/Udobno.js
Normal file
@ -0,0 +1,80 @@
|
||||
// import React from 'react';
|
||||
// import mac from '../images/maciphone.png';
|
||||
|
||||
// const Udobno = () => {
|
||||
// return (
|
||||
// <div>
|
||||
// <div className="container mx-auto px-4 py-24">
|
||||
// <div className="flex flex-col md:flex-row items-center justify-between gap-12">
|
||||
// {/* Текстовый контент */}
|
||||
// <div className="flex-1 max-w-xl">
|
||||
// <h2 className=" text-4xl font-extrabold text-green-600 mb-8 leading-tight">
|
||||
// Управляйте контентом в браузере или в приложении
|
||||
// </h2>
|
||||
// <p className="text-xl font-bold text-gray-700 leading-relaxed space-y-4">
|
||||
// Полный доступ к функционалу сервиса из любой точки мира.
|
||||
// Работайте через удобный веб-интерфейс или используйте
|
||||
// нативное приложение.
|
||||
// </p>
|
||||
// </div>
|
||||
|
||||
// {/* Изображение */}
|
||||
// <div className="flex-1 relative">
|
||||
// <div className="relative transform hover:scale-105 transition-transform duration-300">
|
||||
// <div className="absolute inset-0 opacity-10 rounded-2xl"></div>
|
||||
// <img
|
||||
// src={mac}
|
||||
// alt="Интерфейс qWick на различных устройствах"
|
||||
// className="relative z-10 max-w-full h-auto rounded-2xl"
|
||||
// />
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
|
||||
// export default Udobno;
|
||||
|
||||
import React from 'react';
|
||||
import mac from '../images/maciphone.png';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const Udobno = () => {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.udobno[language];
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="container mx-auto px-4 py-24">
|
||||
<div className="flex flex-col md:flex-row items-center justify-between gap-12">
|
||||
{/* Text content */}
|
||||
<div className="flex-1 max-w-xl">
|
||||
<h2 className="text-4xl font-extrabold text-green-600 mb-8 leading-tight">
|
||||
{t.title}
|
||||
</h2>
|
||||
<p className="text-xl font-bold text-gray-700 leading-relaxed space-y-4">
|
||||
{t.description}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Image */}
|
||||
<div className="flex-1 relative">
|
||||
<div className="relative transform hover:scale-105 transition-transform duration-300">
|
||||
<div className="absolute inset-0 opacity-10 rounded-2xl"></div>
|
||||
<img
|
||||
src={mac}
|
||||
alt={t.imageAlt}
|
||||
className="relative z-10 max-w-full h-auto rounded-2xl"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Udobno;
|
||||
21
src/components/VideoBackground.js
Normal file
@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import videoback from '../vids/video1.webm';
|
||||
const VideoBackground = () => {
|
||||
return (
|
||||
<video
|
||||
autoPlay
|
||||
loop
|
||||
muted
|
||||
style={{
|
||||
position: 'flex',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
objectFit: 'cover',
|
||||
zIndex: -1
|
||||
}}
|
||||
>
|
||||
<source src={videoback} type="video/webm" />
|
||||
</video>
|
||||
);
|
||||
};
|
||||
export default VideoBackground;
|
||||
130
src/components/WorkInTeam.js
Normal file
@ -0,0 +1,130 @@
|
||||
// import React from 'react'
|
||||
// import { Typography, Button, Image, Row, Col, Card } from 'antd'
|
||||
// import { TeamOutlined, SyncOutlined, RocketOutlined } from '@ant-design/icons'
|
||||
// import workimage from '../images/teamwork.png';
|
||||
|
||||
// const { Title, Paragraph } = Typography
|
||||
|
||||
// export default function WorkInTeam() {
|
||||
// return (
|
||||
// <Card className="border-white">
|
||||
// <Row gutter={[32, 32]} align="middle">
|
||||
// <Col xs={24} md={12}>
|
||||
// <img
|
||||
// src={workimage}
|
||||
// alt="Работа в команде"
|
||||
// className="w-full h-auto rounded-lg"
|
||||
// />
|
||||
// </Col>
|
||||
// <Col xs={24} md={12}>
|
||||
// <Title level={2} className="mb-4 ">
|
||||
// Работайте в команде!
|
||||
// </Title>
|
||||
// <Paragraph className="text-lg mb-6">
|
||||
// Эффективная командная работа - ключ к успеху любого проекта. Наша платформа предоставляет инструменты для seamless коллаборации и повышения продуктивности вашей команды.
|
||||
// </Paragraph>
|
||||
// <Row gutter={[16, 16]}>
|
||||
// <Col span={24}>
|
||||
// <Card size="small" className="flex items-center shadow-lg">
|
||||
// <TeamOutlined className="text-2xl mr-4 text-blue-500" />
|
||||
// <div>
|
||||
// <Title level={5} className="mb-1">Совместная работа</Title>
|
||||
// <Paragraph className="m-0">Легко делитесь задачами и информацией</Paragraph>
|
||||
// </div>
|
||||
// </Card>
|
||||
// </Col>
|
||||
// <Col span={24}>
|
||||
// <Card size="small" className="flex items-center shadow-lg">
|
||||
// <SyncOutlined className="text-2xl mr-4 text-green-500" />
|
||||
// <div>
|
||||
// <Title level={5} className="mb-1 ">Синхронизация в реальном времени</Title>
|
||||
// <Paragraph className="m-0">Всегда будьте в курсе последних изменений</Paragraph>
|
||||
// </div>
|
||||
// </Card>
|
||||
// </Col>
|
||||
// <Col span={24}>
|
||||
// <Card size="small" className="flex items-center shadow-lg">
|
||||
// <RocketOutlined className="text-2xl mr-4 text-red-500" />
|
||||
// <div>
|
||||
// <Title level={5} className="mb-1">Повышение эффективности</Title>
|
||||
// <Paragraph className="m-0">Достигайте целей быстрее вместе с командой</Paragraph>
|
||||
// </div>
|
||||
// </Card>
|
||||
// </Col>
|
||||
// </Row>
|
||||
// </Col>
|
||||
// </Row>
|
||||
// </Card>
|
||||
// )
|
||||
// }
|
||||
|
||||
import React from 'react';
|
||||
import { Typography, Row, Col, Card } from 'antd';
|
||||
import { TeamOutlined, WechatOutlined, SmileOutlined } from '@ant-design/icons';
|
||||
import workimage from '../images/teamwork.png';
|
||||
import translations from '../translations.json';
|
||||
import { useLanguage } from '../contexts/LanguageContext';
|
||||
|
||||
const { Title, Paragraph } = Typography;
|
||||
|
||||
export default function WorkInTeam() {
|
||||
const { language } = useLanguage();
|
||||
const t = translations.workInTeam[language];
|
||||
|
||||
const features = [
|
||||
{
|
||||
icon: WechatOutlined,
|
||||
key: 'collaboration',
|
||||
color: 'blue'
|
||||
},
|
||||
{
|
||||
icon: TeamOutlined,
|
||||
key: 'realTime',
|
||||
color: 'green'
|
||||
},
|
||||
{
|
||||
icon: SmileOutlined,
|
||||
key: 'efficiency',
|
||||
color: 'red'
|
||||
}
|
||||
];
|
||||
|
||||
return (
|
||||
<Card className="border-white">
|
||||
<Row gutter={[32, 32]} align="middle">
|
||||
<Col xs={24} md={12}>
|
||||
<img
|
||||
src={workimage}
|
||||
alt={t.imageAlt}
|
||||
className="w-full h-auto rounded-lg"
|
||||
/>
|
||||
</Col>
|
||||
<Col xs={24} md={12}>
|
||||
<Title level={2} className="mb-4">
|
||||
{t.title}
|
||||
</Title>
|
||||
<Paragraph className="text-lg mb-6">
|
||||
{t.description}
|
||||
</Paragraph>
|
||||
<Row gutter={[16, 16]}>
|
||||
{features.map((feature) => (
|
||||
<Col span={24} key={feature.key}>
|
||||
<Card size="small" className="flex items-center shadow-lg">
|
||||
<feature.icon className={`text-2xl mr-4 text-${feature.color}-500`} />
|
||||
<div>
|
||||
<Title level={5} className="mb-1">
|
||||
{t.features[feature.key].title}
|
||||
</Title>
|
||||
<Paragraph className="m-0">
|
||||
{t.features[feature.key].description}
|
||||
</Paragraph>
|
||||
</div>
|
||||
</Card>
|
||||
</Col>
|
||||
))}
|
||||
</Row>
|
||||
</Col>
|
||||
</Row>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
47
src/contexts/LanguageContext.js
Normal file
@ -0,0 +1,47 @@
|
||||
// import React, { createContext, useState, useContext } from 'react';
|
||||
|
||||
// const LanguageContext = createContext();
|
||||
|
||||
// export function LanguageProvider({ children }) {
|
||||
// const [language, setLanguage] = useState('ru');
|
||||
|
||||
// const toggleLanguage = () => {
|
||||
// setLanguage(prev => prev === 'ru' ? 'en' : 'ru');
|
||||
// };
|
||||
|
||||
// return (
|
||||
// <LanguageContext.Provider value={{ language, toggleLanguage }}>
|
||||
// {children}
|
||||
// </LanguageContext.Provider>
|
||||
// );
|
||||
// }
|
||||
|
||||
// export function useLanguage() {
|
||||
// const context = useContext(LanguageContext);
|
||||
// if (context === undefined) {
|
||||
// throw new Error('useLanguage must be used within a LanguageProvider');
|
||||
// }
|
||||
// return context;
|
||||
// }
|
||||
|
||||
import React, { createContext, useState, useContext } from 'react';
|
||||
|
||||
const LanguageContext = createContext();
|
||||
|
||||
export function LanguageProvider({ children }) {
|
||||
const [language, setLanguage] = useState('en');
|
||||
|
||||
return (
|
||||
<LanguageContext.Provider value={{ language, setLanguage }}>
|
||||
{children}
|
||||
</LanguageContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export function useLanguage() {
|
||||
const context = useContext(LanguageContext);
|
||||
if (context === undefined) {
|
||||
throw new Error('useLanguage must be used within a LanguageProvider');
|
||||
}
|
||||
return context;
|
||||
}
|
||||
21
src/contexts/RTLProvider.js
Normal file
@ -0,0 +1,21 @@
|
||||
import React from 'react';
|
||||
import { useLanguage } from './LanguageContext';
|
||||
|
||||
const RTLProvider = ({ children }) => {
|
||||
const { language } = useLanguage();
|
||||
|
||||
React.useEffect(() => {
|
||||
// Установка направления текста для всего документа
|
||||
document.documentElement.dir = language === 'ar' ? 'rtl' : 'ltr';
|
||||
// Добавление/удаление класса для RTL стилей
|
||||
document.documentElement.classList.toggle('rtl', language === 'ar');
|
||||
}, [language]);
|
||||
|
||||
return (
|
||||
<div className={`${language === 'ar' ? 'rtl' : ''}`}>
|
||||
{children}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default RTLProvider;
|
||||
BIN
src/images/adduser.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/images/ai_recomendation.png
Normal file
|
After Width: | Height: | Size: 854 KiB |
BIN
src/images/analysis.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
src/images/analytics.png
Normal file
|
After Width: | Height: | Size: 876 KiB |
BIN
src/images/analyze.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/images/auditory.png
Normal file
|
After Width: | Height: | Size: 966 KiB |
BIN
src/images/calendar.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/images/calendar.png
Normal file
|
After Width: | Height: | Size: 582 KiB |
BIN
src/images/clyaksa1.png
Normal file
|
After Width: | Height: | Size: 571 KiB |
BIN
src/images/cross_platform.png
Normal file
|
After Width: | Height: | Size: 1001 KiB |
BIN
src/images/desert_backgroud.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
src/images/desert_vert.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/images/desert_vert_2.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/images/fastanswers.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/images/foursteps/analytics_steps.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
src/images/foursteps/forfun.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
src/images/foursteps/login.png
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
src/images/foursteps/platform.png
Normal file
|
After Width: | Height: | Size: 924 KiB |
BIN
src/images/ii.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
src/images/mac_easy.png
Normal file
|
After Width: | Height: | Size: 688 KiB |
BIN
src/images/maciphone.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
src/images/monitoring.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/images/repost.jpg
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
src/images/security.png
Normal file
|
After Width: | Height: | Size: 1020 KiB |
BIN
src/images/sequrity.png
Normal file
|
After Width: | Height: | Size: 975 KiB |
BIN
src/images/socialike.png
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
BIN
src/images/tagging.webp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
src/images/teamwork.png
Normal file
|
After Width: | Height: | Size: 895 KiB |
BIN
src/images/workatteam.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
src/images/workwithmes.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
222
src/index.css
Normal file
@ -0,0 +1,222 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
/* @import url('https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap');
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-typography,
|
||||
.ant-card,
|
||||
.ant-btn,
|
||||
.ant-paragraph {
|
||||
font-family: 'Oswald', sans-serif !important;
|
||||
} */
|
||||
|
||||
|
||||
/* @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
font-family: 'Inter', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-typography,
|
||||
.ant-card,
|
||||
.ant-btn,
|
||||
.ant-paragraph {
|
||||
font-family: 'Inter', sans-serif !important;
|
||||
} */
|
||||
|
||||
|
||||
|
||||
|
||||
/* @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
font-family: 'Poppins', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-typography,
|
||||
.ant-card,
|
||||
.ant-btn,
|
||||
.ant-paragraph {
|
||||
font-family: 'Poppins', sans-serif !important;
|
||||
} */
|
||||
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;600;700&display=swap');
|
||||
|
||||
/* Вариант 1: Только Rubik */
|
||||
@layer base {
|
||||
* {
|
||||
font-family: 'Rubik', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-typography,
|
||||
.ant-card,
|
||||
.ant-btn,
|
||||
.ant-paragraph {
|
||||
font-family: 'Rubik', sans-serif !important;
|
||||
}
|
||||
/*
|
||||
.pricing-container {
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.pricing-header {
|
||||
text-align: center;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.pricing-header h2 {
|
||||
font-size: 36px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.pricing-header p {
|
||||
font-size: 18px;
|
||||
color: #666;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.pricing-toggle {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.pricing-toggle button {
|
||||
padding: 10px 20px;
|
||||
font-size: 16px;
|
||||
border: 1px solid #ccc;
|
||||
background-color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pricing-toggle button.active {
|
||||
background-color: #0070f3;
|
||||
color: #fff;
|
||||
border-color: #0070f3;
|
||||
}
|
||||
|
||||
.plans-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.plan-card {
|
||||
flex: 1;
|
||||
padding: 24px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.plan-card.popular {
|
||||
border-color: #0070f3;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.plan-card.popular::before {
|
||||
content: 'Популярный';
|
||||
position: absolute;
|
||||
top: -12px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background-color: #0070f3;
|
||||
color: #fff;
|
||||
padding: 4px 12px;
|
||||
border-radius: 12px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.plan-card h3 {
|
||||
font-size: 24px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.plan-card p {
|
||||
color: #666;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.plan-card .price {
|
||||
font-size: 36px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.plan-card button {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
font-size: 16px;
|
||||
background-color: #0070f3;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.features-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.features-table th,
|
||||
.features-table td {
|
||||
padding: 16px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.features-table .category-row th {
|
||||
background-color: #f7f7f7;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.tooltip-trigger {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-color: #ccc;
|
||||
color: #fff;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
line-height: 16px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
padding: 8px;
|
||||
border-radius: 4px;
|
||||
width: 200px;
|
||||
z-index: 1;
|
||||
bottom: 125%;
|
||||
left: 50%;
|
||||
margin-left: -100px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.tooltip-trigger:hover .tooltip {
|
||||
display: block;
|
||||
} */
|
||||
11
src/index.js
Normal file
@ -0,0 +1,11 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
|
||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
);
|
||||
93
src/styles/rtl.css
Normal file
@ -0,0 +1,93 @@
|
||||
/* styles/rtl.css */
|
||||
|
||||
/* Основные RTL стили */
|
||||
.rtl {
|
||||
direction: rtl;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Отзеркаливание отступов */
|
||||
.rtl .ml-1, .rtl .ml-2, .rtl .ml-3, .rtl .ml-4 {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.rtl .mr-1 { margin-left: 0.25rem; margin-right: 0; }
|
||||
.rtl .mr-2 { margin-left: 0.5rem; margin-right: 0; }
|
||||
.rtl .mr-3 { margin-left: 0.75rem; margin-right: 0; }
|
||||
.rtl .mr-4 { margin-left: 1rem; margin-right: 0; }
|
||||
|
||||
/* Отзеркаливание padding */
|
||||
.rtl .pl-1, .rtl .pl-2, .rtl .pl-3, .rtl .pl-4 {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.rtl .pr-1 { padding-left: 0.25rem; padding-right: 0; }
|
||||
.rtl .pr-2 { padding-left: 0.5rem; padding-right: 0; }
|
||||
.rtl .pr-3 { padding-left: 0.75rem; padding-right: 0; }
|
||||
.rtl .pr-4 { padding-left: 1rem; padding-right: 0; }
|
||||
|
||||
/* Отзеркаливание flexbox */
|
||||
/* .rtl .flex {
|
||||
flex-direction: row-reverse;
|
||||
} */
|
||||
|
||||
/* Отзеркаливание grid */
|
||||
.rtl .grid {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
/* Отзеркаливание позиционирования */
|
||||
.rtl .left-0 { right: 0; left: auto; }
|
||||
.rtl .right-0 { left: 0; right: auto; }
|
||||
|
||||
/* Отзеркаливание текстового выравнивания */
|
||||
.rtl .text-left { text-align: right; }
|
||||
.rtl .text-right { text-align: left; }
|
||||
|
||||
/* Отзеркаливание border-radius */
|
||||
.rtl .rounded-l { border-radius: 0 0.25rem 0.25rem 0; }
|
||||
.rtl .rounded-r { border-radius: 0.25rem 0 0 0.25rem; }
|
||||
|
||||
/* Специфичные стили для компонентов */
|
||||
.rtl .header-nav {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.rtl .dropdown-menu {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* Фиксы для иконок */
|
||||
.rtl .icon {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
/* Отзеркаливание анимаций */
|
||||
.rtl .slide-in {
|
||||
transform-origin: right center;
|
||||
}
|
||||
|
||||
/* Специальные стили для арабского текста */
|
||||
.rtl {
|
||||
font-family: "Dubai", "Segoe UI", Tahoma, sans-serif;
|
||||
}
|
||||
|
||||
/* Исправление специфических компонентов */
|
||||
.rtl .language-switcher .dropdown-content {
|
||||
left: auto;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.rtl .nav-links {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
/* Фиксы для мобильной версии */
|
||||
@media (max-width: 768px) {
|
||||
.rtl .mobile-menu {
|
||||
left: auto;
|
||||
right: 0;
|
||||
transform-origin: right;
|
||||
}
|
||||
}
|
||||
0
src/styles/tailwind.css
Normal file
1657
src/translations.json
Normal file
BIN
src/vids/back_for_contacts.webm
Normal file
BIN
src/vids/background_white.webm
Normal file
BIN
src/vids/backvideo2.webm
Normal file
BIN
src/vids/video1.webm
Normal file
BIN
src/vids/videovert.webm
Normal file
13
tailwind.config.js
Normal file
@ -0,0 +1,13 @@
|
||||
module.exports = {
|
||||
content: [
|
||||
"./src/**/*.{js,jsx,ts,tsx}",
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
'buffer-blue': '#1E40AF',
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
796
venv/Lib/site-packages/pip-24.2.dist-info/AUTHORS.txt
Normal file
@ -0,0 +1,796 @@
|
||||
@Switch01
|
||||
A_Rog
|
||||
Aakanksha Agrawal
|
||||
Abhinav Sagar
|
||||
ABHYUDAY PRATAP SINGH
|
||||
abs51295
|
||||
AceGentile
|
||||
Adam Chainz
|
||||
Adam Tse
|
||||
Adam Wentz
|
||||
admin
|
||||
Adolfo Ochagavía
|
||||
Adrien Morison
|
||||
Agus
|
||||
ahayrapetyan
|
||||
Ahilya
|
||||
AinsworthK
|
||||
Akash Srivastava
|
||||
Alan Yee
|
||||
Albert Tugushev
|
||||
Albert-Guan
|
||||
albertg
|
||||
Alberto Sottile
|
||||
Aleks Bunin
|
||||
Ales Erjavec
|
||||
Alethea Flowers
|
||||
Alex Gaynor
|
||||
Alex Grönholm
|
||||
Alex Hedges
|
||||
Alex Loosley
|
||||
Alex Morega
|
||||
Alex Stachowiak
|
||||
Alexander Shtyrov
|
||||
Alexandre Conrad
|
||||
Alexey Popravka
|
||||
Aleš Erjavec
|
||||
Alli
|
||||
Ami Fischman
|
||||
Ananya Maiti
|
||||
Anatoly Techtonik
|
||||
Anders Kaseorg
|
||||
Andre Aguiar
|
||||
Andreas Lutro
|
||||
Andrei Geacar
|
||||
Andrew Gaul
|
||||
Andrew Shymanel
|
||||
Andrey Bienkowski
|
||||
Andrey Bulgakov
|
||||
Andrés Delfino
|
||||
Andy Freeland
|
||||
Andy Kluger
|
||||
Ani Hayrapetyan
|
||||
Aniruddha Basak
|
||||
Anish Tambe
|
||||
Anrs Hu
|
||||
Anthony Sottile
|
||||
Antoine Musso
|
||||
Anton Ovchinnikov
|
||||
Anton Patrushev
|
||||
Antonio Alvarado Hernandez
|
||||
Antony Lee
|
||||
Antti Kaihola
|
||||
Anubhav Patel
|
||||
Anudit Nagar
|
||||
Anuj Godase
|
||||
AQNOUCH Mohammed
|
||||
AraHaan
|
||||
arena
|
||||
arenasys
|
||||
Arindam Choudhury
|
||||
Armin Ronacher
|
||||
Arnon Yaari
|
||||
Artem
|
||||
Arun Babu Neelicattu
|
||||
Ashley Manton
|
||||
Ashwin Ramaswami
|
||||
atse
|
||||
Atsushi Odagiri
|
||||
Avinash Karhana
|
||||
Avner Cohen
|
||||
Awit (Ah-Wit) Ghirmai
|
||||
Baptiste Mispelon
|
||||
Barney Gale
|
||||
barneygale
|
||||
Bartek Ogryczak
|
||||
Bastian Venthur
|
||||
Ben Bodenmiller
|
||||
Ben Darnell
|
||||
Ben Hoyt
|
||||
Ben Mares
|
||||
Ben Rosser
|
||||
Bence Nagy
|
||||
Benjamin Peterson
|
||||
Benjamin VanEvery
|
||||
Benoit Pierre
|
||||
Berker Peksag
|
||||
Bernard
|
||||
Bernard Tyers
|
||||
Bernardo B. Marques
|
||||
Bernhard M. Wiedemann
|
||||
Bertil Hatt
|
||||
Bhavam Vidyarthi
|
||||
Blazej Michalik
|
||||
Bogdan Opanchuk
|
||||
BorisZZZ
|
||||
Brad Erickson
|
||||
Bradley Ayers
|
||||
Branch Vincent
|
||||
Brandon L. Reiss
|
||||
Brandt Bucher
|
||||
Brannon Dorsey
|
||||
Brett Randall
|
||||
Brett Rosen
|
||||
Brian Cristante
|
||||
Brian Rosner
|
||||
briantracy
|
||||
BrownTruck
|
||||
Bruno Oliveira
|
||||
Bruno Renié
|
||||
Bruno S
|
||||
Bstrdsmkr
|
||||
Buck Golemon
|
||||
burrows
|
||||
Bussonnier Matthias
|
||||
bwoodsend
|
||||
c22
|
||||
Caleb Martinez
|
||||
Calvin Smith
|
||||
Carl Meyer
|
||||
Carlos Liam
|
||||
Carol Willing
|
||||
Carter Thayer
|
||||
Cass
|
||||
Chandrasekhar Atina
|
||||
Charlie Marsh
|
||||
Chih-Hsuan Yen
|
||||
Chris Brinker
|
||||
Chris Hunt
|
||||
Chris Jerdonek
|
||||
Chris Kuehl
|
||||
Chris Markiewicz
|
||||
Chris McDonough
|
||||
Chris Pawley
|
||||
Chris Pryer
|
||||
Chris Wolfe
|
||||
Christian Clauss
|
||||
Christian Heimes
|
||||
Christian Oudard
|
||||
Christoph Reiter
|
||||
Christopher Hunt
|
||||
Christopher Snyder
|
||||
chrysle
|
||||
cjc7373
|
||||
Clark Boylan
|
||||
Claudio Jolowicz
|
||||
Clay McClure
|
||||
Cody
|
||||
Cody Soyland
|
||||
Colin Watson
|
||||
Collin Anderson
|
||||
Connor Osborn
|
||||
Cooper Lees
|
||||
Cooper Ry Lees
|
||||
Cory Benfield
|
||||
Cory Wright
|
||||
Craig Kerstiens
|
||||
Cristian Sorinel
|
||||
Cristina
|
||||
Cristina Muñoz
|
||||
ctg123
|
||||
Curtis Doty
|
||||
cytolentino
|
||||
Daan De Meyer
|
||||
Dale
|
||||
Damian
|
||||
Damian Quiroga
|
||||
Damian Shaw
|
||||
Dan Black
|
||||
Dan Savilonis
|
||||
Dan Sully
|
||||
Dane Hillard
|
||||
daniel
|
||||
Daniel Collins
|
||||
Daniel Hahler
|
||||
Daniel Holth
|
||||
Daniel Jost
|
||||
Daniel Katz
|
||||
Daniel Shaulov
|
||||
Daniele Esposti
|
||||
Daniele Nicolodi
|
||||
Daniele Procida
|
||||
Daniil Konovalenko
|
||||
Danny Hermes
|
||||
Danny McClanahan
|
||||
Darren Kavanagh
|
||||
Dav Clark
|
||||
Dave Abrahams
|
||||
Dave Jones
|
||||
David Aguilar
|
||||
David Black
|
||||
David Bordeynik
|
||||
David Caro
|
||||
David D Lowe
|
||||
David Evans
|
||||
David Hewitt
|
||||
David Linke
|
||||
David Poggi
|
||||
David Poznik
|
||||
David Pursehouse
|
||||
David Runge
|
||||
David Tucker
|
||||
David Wales
|
||||
Davidovich
|
||||
ddelange
|
||||
Deepak Sharma
|
||||
Deepyaman Datta
|
||||
Denise Yu
|
||||
dependabot[bot]
|
||||
derwolfe
|
||||
Desetude
|
||||
Devesh Kumar Singh
|
||||
devsagul
|
||||
Diego Caraballo
|
||||
Diego Ramirez
|
||||
DiegoCaraballo
|
||||
Dimitri Merejkowsky
|
||||
Dimitri Papadopoulos
|
||||
Dirk Stolle
|
||||
Dmitry Gladkov
|
||||
Dmitry Volodin
|
||||
Domen Kožar
|
||||
Dominic Davis-Foster
|
||||
Donald Stufft
|
||||
Dongweiming
|
||||
doron zarhi
|
||||
Dos Moonen
|
||||
Douglas Thor
|
||||
DrFeathers
|
||||
Dustin Ingram
|
||||
Dustin Rodrigues
|
||||
Dwayne Bailey
|
||||
Ed Morley
|
||||
Edgar Ramírez
|
||||
Edgar Ramírez Mondragón
|
||||
Ee Durbin
|
||||
Efflam Lemaillet
|
||||
efflamlemaillet
|
||||
Eitan Adler
|
||||
ekristina
|
||||
elainechan
|
||||
Eli Schwartz
|
||||
Elisha Hollander
|
||||
Ellen Marie Dash
|
||||
Emil Burzo
|
||||
Emil Styrke
|
||||
Emmanuel Arias
|
||||
Endoh Takanao
|
||||
enoch
|
||||
Erdinc Mutlu
|
||||
Eric Cousineau
|
||||
Eric Gillingham
|
||||
Eric Hanchrow
|
||||
Eric Hopper
|
||||
Erik M. Bray
|
||||
Erik Rose
|
||||
Erwin Janssen
|
||||
Eugene Vereshchagin
|
||||
everdimension
|
||||
Federico
|
||||
Felipe Peter
|
||||
Felix Yan
|
||||
fiber-space
|
||||
Filip Kokosiński
|
||||
Filipe Laíns
|
||||
Finn Womack
|
||||
finnagin
|
||||
Flavio Amurrio
|
||||
Florian Briand
|
||||
Florian Rathgeber
|
||||
Francesco
|
||||
Francesco Montesano
|
||||
Fredrik Orderud
|
||||
Frost Ming
|
||||
Gabriel Curio
|
||||
Gabriel de Perthuis
|
||||
Garry Polley
|
||||
gavin
|
||||
gdanielson
|
||||
Geoffrey Sneddon
|
||||
George Song
|
||||
Georgi Valkov
|
||||
Georgy Pchelkin
|
||||
ghost
|
||||
Giftlin Rajaiah
|
||||
gizmoguy1
|
||||
gkdoc
|
||||
Godefroid Chapelle
|
||||
Gopinath M
|
||||
GOTO Hayato
|
||||
gousaiyang
|
||||
gpiks
|
||||
Greg Roodt
|
||||
Greg Ward
|
||||
Guilherme Espada
|
||||
Guillaume Seguin
|
||||
gutsytechster
|
||||
Guy Rozendorn
|
||||
Guy Tuval
|
||||
gzpan123
|
||||
Hanjun Kim
|
||||
Hari Charan
|
||||
Harsh Vardhan
|
||||
harupy
|
||||
Harutaka Kawamura
|
||||
hauntsaninja
|
||||
Henrich Hartzer
|
||||
Henry Schreiner
|
||||
Herbert Pfennig
|
||||
Holly Stotelmyer
|
||||
Honnix
|
||||
Hsiaoming Yang
|
||||
Hugo Lopes Tavares
|
||||
Hugo van Kemenade
|
||||
Hugues Bruant
|
||||
Hynek Schlawack
|
||||
Ian Bicking
|
||||
Ian Cordasco
|
||||
Ian Lee
|
||||
Ian Stapleton Cordasco
|
||||
Ian Wienand
|
||||
Igor Kuzmitshov
|
||||
Igor Sobreira
|
||||
Ikko Ashimine
|
||||
Ilan Schnell
|
||||
Illia Volochii
|
||||
Ilya Baryshev
|
||||
Inada Naoki
|
||||
Ionel Cristian Mărieș
|
||||
Ionel Maries Cristian
|
||||
Itamar Turner-Trauring
|
||||
Ivan Pozdeev
|
||||
J. Nick Koston
|
||||
Jacob Kim
|
||||
Jacob Walls
|
||||
Jaime Sanz
|
||||
jakirkham
|
||||
Jakub Kuczys
|
||||
Jakub Stasiak
|
||||
Jakub Vysoky
|
||||
Jakub Wilk
|
||||
James Cleveland
|
||||
James Curtin
|
||||
James Firth
|
||||
James Gerity
|
||||
James Polley
|
||||
Jan Pokorný
|
||||
Jannis Leidel
|
||||
Jarek Potiuk
|
||||
jarondl
|
||||
Jason Curtis
|
||||
Jason R. Coombs
|
||||
JasonMo
|
||||
JasonMo1
|
||||
Jay Graves
|
||||
Jean Abou Samra
|
||||
Jean-Christophe Fillion-Robin
|
||||
Jeff Barber
|
||||
Jeff Dairiki
|
||||
Jeff Widman
|
||||
Jelmer Vernooij
|
||||
jenix21
|
||||
Jeremy Fleischman
|
||||
Jeremy Stanley
|
||||
Jeremy Zafran
|
||||
Jesse Rittner
|
||||
Jiashuo Li
|
||||
Jim Fisher
|
||||
Jim Garrison
|
||||
Jinzhe Zeng
|
||||
Jiun Bae
|
||||
Jivan Amara
|
||||
Joe Bylund
|
||||
Joe Michelini
|
||||
John Paton
|
||||
John Sirois
|
||||
John T. Wodder II
|
||||
John-Scott Atlakson
|
||||
johnthagen
|
||||
Jon Banafato
|
||||
Jon Dufresne
|
||||
Jon Parise
|
||||
Jonas Nockert
|
||||
Jonathan Herbert
|
||||
Joonatan Partanen
|
||||
Joost Molenaar
|
||||
Jorge Niedbalski
|
||||
Joseph Bylund
|
||||
Joseph Long
|
||||
Josh Bronson
|
||||
Josh Cannon
|
||||
Josh Hansen
|
||||
Josh Schneier
|
||||
Joshua
|
||||
Juan Luis Cano Rodríguez
|
||||
Juanjo Bazán
|
||||
Judah Rand
|
||||
Julian Berman
|
||||
Julian Gethmann
|
||||
Julien Demoor
|
||||
Jussi Kukkonen
|
||||
jwg4
|
||||
Jyrki Pulliainen
|
||||
Kai Chen
|
||||
Kai Mueller
|
||||
Kamal Bin Mustafa
|
||||
kasium
|
||||
kaustav haldar
|
||||
keanemind
|
||||
Keith Maxwell
|
||||
Kelsey Hightower
|
||||
Kenneth Belitzky
|
||||
Kenneth Reitz
|
||||
Kevin Burke
|
||||
Kevin Carter
|
||||
Kevin Frommelt
|
||||
Kevin R Patterson
|
||||
Kexuan Sun
|
||||
Kit Randel
|
||||
Klaas van Schelven
|
||||
KOLANICH
|
||||
konstin
|
||||
kpinc
|
||||
Krishna Oza
|
||||
Kumar McMillan
|
||||
Kuntal Majumder
|
||||
Kurt McKee
|
||||
Kyle Persohn
|
||||
lakshmanaram
|
||||
Laszlo Kiss-Kollar
|
||||
Laurent Bristiel
|
||||
Laurent LAPORTE
|
||||
Laurie O
|
||||
Laurie Opperman
|
||||
layday
|
||||
Leon Sasson
|
||||
Lev Givon
|
||||
Lincoln de Sousa
|
||||
Lipis
|
||||
lorddavidiii
|
||||
Loren Carvalho
|
||||
Lucas Cimon
|
||||
Ludovic Gasc
|
||||
Luis Medel
|
||||
Lukas Geiger
|
||||
Lukas Juhrich
|
||||
Luke Macken
|
||||
Luo Jiebin
|
||||
luojiebin
|
||||
luz.paz
|
||||
László Kiss Kollár
|
||||
M00nL1ght
|
||||
Marc Abramowitz
|
||||
Marc Tamlyn
|
||||
Marcus Smith
|
||||
Mariatta
|
||||
Mark Kohler
|
||||
Mark McLoughlin
|
||||
Mark Williams
|
||||
Markus Hametner
|
||||
Martey Dodoo
|
||||
Martin Fischer
|
||||
Martin Häcker
|
||||
Martin Pavlasek
|
||||
Masaki
|
||||
Masklinn
|
||||
Matej Stuchlik
|
||||
Mathew Jennings
|
||||
Mathieu Bridon
|
||||
Mathieu Kniewallner
|
||||
Matt Bacchi
|
||||
Matt Good
|
||||
Matt Maker
|
||||
Matt Robenolt
|
||||
Matt Wozniski
|
||||
matthew
|
||||
Matthew Einhorn
|
||||
Matthew Feickert
|
||||
Matthew Gilliard
|
||||
Matthew Hughes
|
||||
Matthew Iversen
|
||||
Matthew Treinish
|
||||
Matthew Trumbell
|
||||
Matthew Willson
|
||||
Matthias Bussonnier
|
||||
mattip
|
||||
Maurits van Rees
|
||||
Max W Chase
|
||||
Maxim Kurnikov
|
||||
Maxime Rouyrre
|
||||
mayeut
|
||||
mbaluna
|
||||
mdebi
|
||||
memoselyk
|
||||
meowmeowcat
|
||||
Michael
|
||||
Michael Aquilina
|
||||
Michael E. Karpeles
|
||||
Michael Klich
|
||||
Michael Mintz
|
||||
Michael Williamson
|
||||
michaelpacer
|
||||
Michał Górny
|
||||
Mickaël Schoentgen
|
||||
Miguel Araujo Perez
|
||||
Mihir Singh
|
||||
Mike
|
||||
Mike Hendricks
|
||||
Min RK
|
||||
MinRK
|
||||
Miro Hrončok
|
||||
Monica Baluna
|
||||
montefra
|
||||
Monty Taylor
|
||||
morotti
|
||||
mrKazzila
|
||||
Muha Ajjan
|
||||
Nadav Wexler
|
||||
Nahuel Ambrosini
|
||||
Nate Coraor
|
||||
Nate Prewitt
|
||||
Nathan Houghton
|
||||
Nathaniel J. Smith
|
||||
Nehal J Wani
|
||||
Neil Botelho
|
||||
Nguyễn Gia Phong
|
||||
Nicholas Serra
|
||||
Nick Coghlan
|
||||
Nick Stenning
|
||||
Nick Timkovich
|
||||
Nicolas Bock
|
||||
Nicole Harris
|
||||
Nikhil Benesch
|
||||
Nikhil Ladha
|
||||
Nikita Chepanov
|
||||
Nikolay Korolev
|
||||
Nipunn Koorapati
|
||||
Nitesh Sharma
|
||||
Niyas Sait
|
||||
Noah
|
||||
Noah Gorny
|
||||
Nowell Strite
|
||||
NtaleGrey
|
||||
nvdv
|
||||
OBITORASU
|
||||
Ofek Lev
|
||||
ofrinevo
|
||||
Oliver Freund
|
||||
Oliver Jeeves
|
||||
Oliver Mannion
|
||||
Oliver Tonnhofer
|
||||
Olivier Girardot
|
||||
Olivier Grisel
|
||||
Ollie Rutherfurd
|
||||
OMOTO Kenji
|
||||
Omry Yadan
|
||||
onlinejudge95
|
||||
Oren Held
|
||||
Oscar Benjamin
|
||||
Oz N Tiram
|
||||
Pachwenko
|
||||
Patrick Dubroy
|
||||
Patrick Jenkins
|
||||
Patrick Lawson
|
||||
patricktokeeffe
|
||||
Patrik Kopkan
|
||||
Paul Ganssle
|
||||
Paul Kehrer
|
||||
Paul Moore
|
||||
Paul Nasrat
|
||||
Paul Oswald
|
||||
Paul van der Linden
|
||||
Paulus Schoutsen
|
||||
Pavel Safronov
|
||||
Pavithra Eswaramoorthy
|
||||
Pawel Jasinski
|
||||
Paweł Szramowski
|
||||
Pekka Klärck
|
||||
Peter Gessler
|
||||
Peter Lisák
|
||||
Peter Shen
|
||||
Peter Waller
|
||||
Petr Viktorin
|
||||
petr-tik
|
||||
Phaneendra Chiruvella
|
||||
Phil Elson
|
||||
Phil Freo
|
||||
Phil Pennock
|
||||
Phil Whelan
|
||||
Philip Jägenstedt
|
||||
Philip Molloy
|
||||
Philippe Ombredanne
|
||||
Pi Delport
|
||||
Pierre-Yves Rofes
|
||||
Pieter Degroote
|
||||
pip
|
||||
Prabakaran Kumaresshan
|
||||
Prabhjyotsing Surjit Singh Sodhi
|
||||
Prabhu Marappan
|
||||
Pradyun Gedam
|
||||
Prashant Sharma
|
||||
Pratik Mallya
|
||||
pre-commit-ci[bot]
|
||||
Preet Thakkar
|
||||
Preston Holmes
|
||||
Przemek Wrzos
|
||||
Pulkit Goyal
|
||||
q0w
|
||||
Qiangning Hong
|
||||
Qiming Xu
|
||||
Quentin Lee
|
||||
Quentin Pradet
|
||||
R. David Murray
|
||||
Rafael Caricio
|
||||
Ralf Schmitt
|
||||
Ran Benita
|
||||
Razzi Abuissa
|
||||
rdb
|
||||
Reece Dunham
|
||||
Remi Rampin
|
||||
Rene Dudfield
|
||||
Riccardo Magliocchetti
|
||||
Riccardo Schirone
|
||||
Richard Jones
|
||||
Richard Si
|
||||
Ricky Ng-Adam
|
||||
Rishi
|
||||
rmorotti
|
||||
RobberPhex
|
||||
Robert Collins
|
||||
Robert McGibbon
|
||||
Robert Pollak
|
||||
Robert T. McGibbon
|
||||
robin elisha robinson
|
||||
Roey Berman
|
||||
Rohan Jain
|
||||
Roman Bogorodskiy
|
||||
Roman Donchenko
|
||||
Romuald Brunet
|
||||
ronaudinho
|
||||
Ronny Pfannschmidt
|
||||
Rory McCann
|
||||
Ross Brattain
|
||||
Roy Wellington Ⅳ
|
||||
Ruairidh MacLeod
|
||||
Russell Keith-Magee
|
||||
Ryan Shepherd
|
||||
Ryan Wooden
|
||||
ryneeverett
|
||||
S. Guliaev
|
||||
Sachi King
|
||||
Salvatore Rinchiera
|
||||
sandeepkiran-js
|
||||
Sander Van Balen
|
||||
Savio Jomton
|
||||
schlamar
|
||||
Scott Kitterman
|
||||
Sean
|
||||
seanj
|
||||
Sebastian Jordan
|
||||
Sebastian Schaetz
|
||||
Segev Finer
|
||||
SeongSoo Cho
|
||||
Sergey Vasilyev
|
||||
Seth Michael Larson
|
||||
Seth Woodworth
|
||||
Shahar Epstein
|
||||
Shantanu
|
||||
shenxianpeng
|
||||
shireenrao
|
||||
Shivansh-007
|
||||
Shixian Sheng
|
||||
Shlomi Fish
|
||||
Shovan Maity
|
||||
Simeon Visser
|
||||
Simon Cross
|
||||
Simon Pichugin
|
||||
sinoroc
|
||||
sinscary
|
||||
snook92
|
||||
socketubs
|
||||
Sorin Sbarnea
|
||||
Srinivas Nyayapati
|
||||
Stavros Korokithakis
|
||||
Stefan Scherfke
|
||||
Stefano Rivera
|
||||
Stephan Erb
|
||||
Stephen Rosen
|
||||
stepshal
|
||||
Steve (Gadget) Barnes
|
||||
Steve Barnes
|
||||
Steve Dower
|
||||
Steve Kowalik
|
||||
Steven Myint
|
||||
Steven Silvester
|
||||
stonebig
|
||||
studioj
|
||||
Stéphane Bidoul
|
||||
Stéphane Bidoul (ACSONE)
|
||||
Stéphane Klein
|
||||
Sumana Harihareswara
|
||||
Surbhi Sharma
|
||||
Sviatoslav Sydorenko
|
||||
Sviatoslav Sydorenko (Святослав Сидоренко)
|
||||
Swat009
|
||||
Sylvain
|
||||
Takayuki SHIMIZUKAWA
|
||||
Taneli Hukkinen
|
||||
tbeswick
|
||||
Thiago
|
||||
Thijs Triemstra
|
||||
Thomas Fenzl
|
||||
Thomas Grainger
|
||||
Thomas Guettler
|
||||
Thomas Johansson
|
||||
Thomas Kluyver
|
||||
Thomas Smith
|
||||
Thomas VINCENT
|
||||
Tim D. Smith
|
||||
Tim Gates
|
||||
Tim Harder
|
||||
Tim Heap
|
||||
tim smith
|
||||
tinruufu
|
||||
Tobias Hermann
|
||||
Tom Forbes
|
||||
Tom Freudenheim
|
||||
Tom V
|
||||
Tomas Hrnciar
|
||||
Tomas Orsava
|
||||
Tomer Chachamu
|
||||
Tommi Enenkel | AnB
|
||||
Tomáš Hrnčiar
|
||||
Tony Beswick
|
||||
Tony Narlock
|
||||
Tony Zhaocheng Tan
|
||||
TonyBeswick
|
||||
toonarmycaptain
|
||||
Toshio Kuratomi
|
||||
toxinu
|
||||
Travis Swicegood
|
||||
Tushar Sadhwani
|
||||
Tzu-ping Chung
|
||||
Valentin Haenel
|
||||
Victor Stinner
|
||||
victorvpaulo
|
||||
Vikram - Google
|
||||
Viktor Szépe
|
||||
Ville Skyttä
|
||||
Vinay Sajip
|
||||
Vincent Philippon
|
||||
Vinicyus Macedo
|
||||
Vipul Kumar
|
||||
Vitaly Babiy
|
||||
Vladimir Fokow
|
||||
Vladimir Rutsky
|
||||
W. Trevor King
|
||||
Wil Tan
|
||||
Wilfred Hughes
|
||||
William Edwards
|
||||
William ML Leslie
|
||||
William T Olson
|
||||
William Woodruff
|
||||
Wilson Mo
|
||||
wim glenn
|
||||
Winson Luk
|
||||
Wolfgang Maier
|
||||
Wu Zhenyu
|
||||
XAMES3
|
||||
Xavier Fernandez
|
||||
Xianpeng Shen
|
||||
xoviat
|
||||
xtreak
|
||||
YAMAMOTO Takashi
|
||||
Yen Chi Hsuan
|
||||
Yeray Diaz Diaz
|
||||
Yoval P
|
||||
Yu Jian
|
||||
Yuan Jing Vincent Yan
|
||||
Yusuke Hayashi
|
||||
Zearin
|
||||
Zhiping Deng
|
||||
ziebam
|
||||
Zvezdan Petkovic
|
||||
Łukasz Langa
|
||||
Роман Донченко
|
||||
Семён Марьясин
|
||||
1
venv/Lib/site-packages/pip-24.2.dist-info/INSTALLER
Normal file
@ -0,0 +1 @@
|
||||
pip
|
||||
20
venv/Lib/site-packages/pip-24.2.dist-info/LICENSE.txt
Normal file
@ -0,0 +1,20 @@
|
||||
Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
89
venv/Lib/site-packages/pip-24.2.dist-info/METADATA
Normal file
@ -0,0 +1,89 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pip
|
||||
Version: 24.2
|
||||
Summary: The PyPA recommended tool for installing Python packages.
|
||||
Author-email: The pip developers <distutils-sig@python.org>
|
||||
License: MIT
|
||||
Project-URL: Homepage, https://pip.pypa.io/
|
||||
Project-URL: Documentation, https://pip.pypa.io
|
||||
Project-URL: Source, https://github.com/pypa/pip
|
||||
Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Topic :: Software Development :: Build Tools
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Requires-Python: >=3.8
|
||||
Description-Content-Type: text/x-rst
|
||||
License-File: LICENSE.txt
|
||||
License-File: AUTHORS.txt
|
||||
|
||||
pip - The Python Package Installer
|
||||
==================================
|
||||
|
||||
.. |pypi-version| image:: https://img.shields.io/pypi/v/pip.svg
|
||||
:target: https://pypi.org/project/pip/
|
||||
:alt: PyPI
|
||||
|
||||
.. |python-versions| image:: https://img.shields.io/pypi/pyversions/pip
|
||||
:target: https://pypi.org/project/pip
|
||||
:alt: PyPI - Python Version
|
||||
|
||||
.. |docs-badge| image:: https://readthedocs.org/projects/pip/badge/?version=latest
|
||||
:target: https://pip.pypa.io/en/latest
|
||||
:alt: Documentation
|
||||
|
||||
|pypi-version| |python-versions| |docs-badge|
|
||||
|
||||
pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
|
||||
|
||||
Please take a look at our documentation for how to install and use pip:
|
||||
|
||||
* `Installation`_
|
||||
* `Usage`_
|
||||
|
||||
We release updates regularly, with a new version every 3 months. Find more details in our documentation:
|
||||
|
||||
* `Release notes`_
|
||||
* `Release process`_
|
||||
|
||||
If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms:
|
||||
|
||||
* `Issue tracking`_
|
||||
* `Discourse channel`_
|
||||
* `User IRC`_
|
||||
|
||||
If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms:
|
||||
|
||||
* `GitHub page`_
|
||||
* `Development documentation`_
|
||||
* `Development IRC`_
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
Everyone interacting in the pip project's codebases, issue trackers, chat
|
||||
rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
|
||||
|
||||
.. _package installer: https://packaging.python.org/guides/tool-recommendations/
|
||||
.. _Python Package Index: https://pypi.org
|
||||
.. _Installation: https://pip.pypa.io/en/stable/installation/
|
||||
.. _Usage: https://pip.pypa.io/en/stable/
|
||||
.. _Release notes: https://pip.pypa.io/en/stable/news.html
|
||||
.. _Release process: https://pip.pypa.io/en/latest/development/release-process/
|
||||
.. _GitHub page: https://github.com/pypa/pip
|
||||
.. _Development documentation: https://pip.pypa.io/en/latest/development
|
||||
.. _Issue tracking: https://github.com/pypa/pip/issues
|
||||
.. _Discourse channel: https://discuss.python.org/c/packaging
|
||||
.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa
|
||||
.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev
|
||||
.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
|
||||
853
venv/Lib/site-packages/pip-24.2.dist-info/RECORD
Normal file
@ -0,0 +1,853 @@
|
||||
../../Scripts/pip.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
|
||||
../../Scripts/pip3.12.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
|
||||
../../Scripts/pip3.exe,sha256=DzsU73g1KQnShOC9jG65CJsjF8uNGgCJmvlKfMSJSVQ,108406
|
||||
pip-24.2.dist-info/AUTHORS.txt,sha256=KDa8Pd3GDeKSogF6yFW0l9A9eMneLDOFrcIDqkL8G8s,10868
|
||||
pip-24.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
pip-24.2.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093
|
||||
pip-24.2.dist-info/METADATA,sha256=PhzCxQxIhsnZ871cPUe3Hew9PhhpgflLbfqU3WizZqM,3624
|
||||
pip-24.2.dist-info/RECORD,,
|
||||
pip-24.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip-24.2.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
|
||||
pip-24.2.dist-info/entry_points.txt,sha256=eeIjuzfnfR2PrhbjnbzFU6MnSS70kZLxwaHHq6M-bD0,87
|
||||
pip-24.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
pip/__init__.py,sha256=EQxEGXUQIu-9fNJxVEK74ufx_fTk_HpYV9lAbw-WWbs,355
|
||||
pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854
|
||||
pip/__pip-runner__.py,sha256=cPPWuJ6NK_k-GzfvlejLFgwzmYUROmpAR6QC3Q-vkXQ,1450
|
||||
pip/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/__pycache__/__pip-runner__.cpython-312.pyc,,
|
||||
pip/_internal/__init__.py,sha256=MfcoOluDZ8QMCFYal04IqOJ9q6m2V7a0aOsnI-WOxUo,513
|
||||
pip/_internal/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/build_env.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/cache.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/configuration.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/exceptions.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/main.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/pyproject.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc,,
|
||||
pip/_internal/__pycache__/wheel_builder.cpython-312.pyc,,
|
||||
pip/_internal/build_env.py,sha256=QiusW8QEaj387y0hdRqVbuelHSHGYcT7WzVckbmMhR0,10420
|
||||
pip/_internal/cache.py,sha256=Jb698p5PNigRtpW5o26wQNkkUv4MnQ94mc471wL63A0,10369
|
||||
pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
|
||||
pip/_internal/cli/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/base_command.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/command_context.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/index_command.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/main.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/parser.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/req_command.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/spinners.cpython-312.pyc,,
|
||||
pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc,,
|
||||
pip/_internal/cli/autocompletion.py,sha256=Lli3Mr6aDNu7ZkJJFFvwD2-hFxNI6Avz8OwMyS5TVrs,6865
|
||||
pip/_internal/cli/base_command.py,sha256=F8nUcSM-Y-MQljJUe724-yxmc5viFXHyM_zH70NmIh4,8289
|
||||
pip/_internal/cli/cmdoptions.py,sha256=mDqBr0d0hoztbRJs-PWtcKpqNAc7khU6ZpoesZKocT8,30110
|
||||
pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774
|
||||
pip/_internal/cli/index_command.py,sha256=YIJ84cfYcbDBACnB8eoDgqjYJU6GpiWP2Rh7Ij-Xyak,5633
|
||||
pip/_internal/cli/main.py,sha256=BDZef-bWe9g9Jpr4OVs4dDf-845HJsKw835T7AqEnAc,2817
|
||||
pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338
|
||||
pip/_internal/cli/parser.py,sha256=QAkY6s8N-AD7w5D2PQm2Y8C2MIJSv7iuAeNjOMvDBUA,10811
|
||||
pip/_internal/cli/progress_bars.py,sha256=0FAf7eN67KnIv_gZQhTWSnKXXUzQko1ftGXEoLe5Yec,2713
|
||||
pip/_internal/cli/req_command.py,sha256=DqeFhmUMs6o6Ev8qawAcOoYNdAZsfyKS0MZI5jsJYwQ,12250
|
||||
pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118
|
||||
pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116
|
||||
pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882
|
||||
pip/_internal/commands/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/cache.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/check.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/completion.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/configuration.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/debug.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/download.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/freeze.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/hash.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/help.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/index.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/inspect.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/install.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/list.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/search.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/show.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc,,
|
||||
pip/_internal/commands/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/commands/cache.py,sha256=xg76_ZFEBC6zoQ3gXLRfMZJft4z2a0RwH4GEFZC6nnU,7944
|
||||
pip/_internal/commands/check.py,sha256=Hr_4eiMd9cgVDgEvjtIdw915NmL7ROIWW8enkr8slPQ,2268
|
||||
pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287
|
||||
pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766
|
||||
pip/_internal/commands/debug.py,sha256=DNDRgE9YsKrbYzU0s3VKi8rHtKF4X13CJ_br_8PUXO0,6797
|
||||
pip/_internal/commands/download.py,sha256=0qB0nys6ZEPsog451lDsjL5Bx7Z97t-B80oFZKhpzKM,5273
|
||||
pip/_internal/commands/freeze.py,sha256=2Vt72BYTSm9rzue6d8dNzt8idxWK4Db6Hd-anq7GQ80,3203
|
||||
pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703
|
||||
pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132
|
||||
pip/_internal/commands/index.py,sha256=RAXxmJwFhVb5S1BYzb5ifX3sn9Na8v2CCVYwSMP8pao,4731
|
||||
pip/_internal/commands/inspect.py,sha256=PGrY9TRTRCM3y5Ml8Bdk8DEOXquWRfscr4DRo1LOTPc,3189
|
||||
pip/_internal/commands/install.py,sha256=iqesiLIZc6Op9uihMQFYRhAA2DQRZUxbM4z1BwXoFls,29428
|
||||
pip/_internal/commands/list.py,sha256=RgaIV4kN-eMSpgUAXc-6bjnURzl0v3cRE11xr54O9Cg,12771
|
||||
pip/_internal/commands/search.py,sha256=hSGtIHg26LRe468Ly7oZ6gfd9KbTxBRZAAtJc9Um6S4,5628
|
||||
pip/_internal/commands/show.py,sha256=IG9L5uo8w6UA4tI_IlmaxLCoNKPa5JNJCljj3NWs0OE,7507
|
||||
pip/_internal/commands/uninstall.py,sha256=7pOR7enK76gimyxQbzxcG1OsyLXL3DvX939xmM8Fvtg,3892
|
||||
pip/_internal/commands/wheel.py,sha256=eJRhr_qoNNxWAkkdJCNiQM7CXd4E1_YyQhsqJnBPGGg,6414
|
||||
pip/_internal/configuration.py,sha256=XkAiBS0hpzsM-LF0Qu5hvPWO_Bs67-oQKRYFBuMbESs,14006
|
||||
pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858
|
||||
pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/distributions/__pycache__/base.cpython-312.pyc,,
|
||||
pip/_internal/distributions/__pycache__/installed.cpython-312.pyc,,
|
||||
pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc,,
|
||||
pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/distributions/base.py,sha256=QeB9qvKXDIjLdPBDE5fMgpfGqMMCr-govnuoQnGuiF8,1783
|
||||
pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842
|
||||
pip/_internal/distributions/sdist.py,sha256=PlcP4a6-R6c98XnOM-b6Lkb3rsvh9iG4ok8shaanrzs,6751
|
||||
pip/_internal/distributions/wheel.py,sha256=THBYfnv7VVt8mYhMYUtH13S1E7FDwtDyDfmUcl8ai0E,1317
|
||||
pip/_internal/exceptions.py,sha256=6qcW3QgmFVlRxlZvDSLUhSzKJ7_Tedo-lyqWA6NfdAU,25371
|
||||
pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30
|
||||
pip/_internal/index/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/index/__pycache__/collector.cpython-312.pyc,,
|
||||
pip/_internal/index/__pycache__/package_finder.cpython-312.pyc,,
|
||||
pip/_internal/index/__pycache__/sources.cpython-312.pyc,,
|
||||
pip/_internal/index/collector.py,sha256=RdPO0JLAlmyBWPAWYHPyRoGjz3GNAeTngCNkbGey_mE,16265
|
||||
pip/_internal/index/package_finder.py,sha256=yRC4xsyudwKnNoU6IXvNoyqYo5ScT7lB6Wa-z2eh7cs,37666
|
||||
pip/_internal/index/sources.py,sha256=dJegiR9f86kslaAHcv9-R5L_XBf5Rzm_FkyPteDuPxI,8688
|
||||
pip/_internal/locations/__init__.py,sha256=UaAxeZ_f93FyouuFf4p7SXYF-4WstXuEvd3LbmPCAno,14925
|
||||
pip/_internal/locations/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc,,
|
||||
pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc,,
|
||||
pip/_internal/locations/__pycache__/base.cpython-312.pyc,,
|
||||
pip/_internal/locations/_distutils.py,sha256=H9ZHK_35rdDV1Qsmi4QeaBULjFT4Mbu6QuoVGkJ6QHI,6009
|
||||
pip/_internal/locations/_sysconfig.py,sha256=IGzds60qsFneRogC-oeBaY7bEh3lPt_v47kMJChQXsU,7724
|
||||
pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556
|
||||
pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340
|
||||
pip/_internal/metadata/__init__.py,sha256=9pU3W3s-6HtjFuYhWcLTYVmSaziklPv7k2x8p7X1GmA,4339
|
||||
pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/metadata/__pycache__/_json.cpython-312.pyc,,
|
||||
pip/_internal/metadata/__pycache__/base.cpython-312.pyc,,
|
||||
pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc,,
|
||||
pip/_internal/metadata/_json.py,sha256=P0cAJrH_mtmMZvlZ16ZXm_-izA4lpr5wy08laICuiaA,2644
|
||||
pip/_internal/metadata/base.py,sha256=ft0K5XNgI4ETqZnRv2-CtvgYiMOMAeGMAzxT-f6VLJA,25298
|
||||
pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135
|
||||
pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc,,
|
||||
pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc,,
|
||||
pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc,,
|
||||
pip/_internal/metadata/importlib/_compat.py,sha256=c6av8sP8BBjAZuFSJow1iWfygUXNM3xRTCn5nqw6B9M,2796
|
||||
pip/_internal/metadata/importlib/_dists.py,sha256=anh0mLI-FYRPUhAdipd0Va3YJJc6HelCKQ0bFhY10a0,8017
|
||||
pip/_internal/metadata/importlib/_envs.py,sha256=JHjNfnk9RsjrcQw8dLBqdfBglOKSepEe9aq03B4nRpU,7431
|
||||
pip/_internal/metadata/pkg_resources.py,sha256=U07ETAINSGeSRBfWUG93E4tZZbaW_f7PGzEqZN0hulc,10542
|
||||
pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
|
||||
pip/_internal/models/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/candidate.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/direct_url.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/format_control.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/index.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/installation_report.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/link.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/scheme.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/search_scope.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/target_python.cpython-312.pyc,,
|
||||
pip/_internal/models/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/models/candidate.py,sha256=zzgFRuw_kWPjKpGw7LC0ZUMD2CQ2EberUIYs8izjdCA,753
|
||||
pip/_internal/models/direct_url.py,sha256=uBtY2HHd3TO9cKQJWh0ThvE5FRr-MWRYChRU4IG9HZE,6578
|
||||
pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486
|
||||
pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030
|
||||
pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818
|
||||
pip/_internal/models/link.py,sha256=jHax9O-9zlSzEwjBCDkx0OXjKXwBDwOuPwn-PsR8dCs,21034
|
||||
pip/_internal/models/scheme.py,sha256=PakmHJM3e8OOWSZFtfz1Az7f1meONJnkGuQxFlt3wBE,575
|
||||
pip/_internal/models/search_scope.py,sha256=67NEnsYY84784S-MM7ekQuo9KXLH-7MzFntXjapvAo0,4531
|
||||
pip/_internal/models/selection_prefs.py,sha256=qaFfDs3ciqoXPg6xx45N1jPLqccLJw4N0s4P0PyHTQ8,2015
|
||||
pip/_internal/models/target_python.py,sha256=2XaH2rZ5ZF-K5wcJbEMGEl7SqrTToDDNkrtQ2v_v_-Q,4271
|
||||
pip/_internal/models/wheel.py,sha256=Odc1NVWL5N-i6A3vFa50BfNvCRlGvGa4som60FQM198,3601
|
||||
pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50
|
||||
pip/_internal/network/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/auth.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/cache.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/download.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/session.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/utils.cpython-312.pyc,,
|
||||
pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc,,
|
||||
pip/_internal/network/auth.py,sha256=D4gASjUrqoDFlSt6gQ767KAAjv6PUyJU0puDlhXNVRE,20809
|
||||
pip/_internal/network/cache.py,sha256=48A971qCzKNFvkb57uGEk7-0xaqPS0HWj2711QNTxkU,3935
|
||||
pip/_internal/network/download.py,sha256=FLOP29dPYECBiAi7eEjvAbNkyzaKNqbyjOT2m8HPW8U,6048
|
||||
pip/_internal/network/lazy_wheel.py,sha256=2PXVduYZPCPZkkQFe1J1GbfHJWeCU--FXonGyIfw9eU,7638
|
||||
pip/_internal/network/session.py,sha256=XmanBKjVwPFmh1iJ58q6TDh9xabH37gREuQJ_feuZGA,18741
|
||||
pip/_internal/network/utils.py,sha256=Inaxel-NxBu4PQWkjyErdnfewsFCcgHph7dzR1-FboY,4088
|
||||
pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838
|
||||
pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/operations/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/operations/__pycache__/check.cpython-312.pyc,,
|
||||
pip/_internal/operations/__pycache__/freeze.cpython-312.pyc,,
|
||||
pip/_internal/operations/__pycache__/prepare.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc,,
|
||||
pip/_internal/operations/build/build_tracker.py,sha256=-ARW_TcjHCOX7D2NUOGntB4Fgc6b4aolsXkAK6BWL7w,4774
|
||||
pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422
|
||||
pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474
|
||||
pip/_internal/operations/build/metadata_legacy.py,sha256=8i6i1QZX9m_lKPStEFsHKM0MT4a-CD408JOw99daLmo,2190
|
||||
pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075
|
||||
pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417
|
||||
pip/_internal/operations/build/wheel_legacy.py,sha256=K-6kNhmj-1xDF45ny1yheMerF0ui4EoQCLzEoHh6-tc,3045
|
||||
pip/_internal/operations/check.py,sha256=L24vRL8VWbyywdoeAhM89WCd8zLTnjIbULlKelUgIec,5912
|
||||
pip/_internal/operations/freeze.py,sha256=V59yEyCSz_YhZuhH09-6aV_zvYBMrS_IxFFNqn2QzlA,9864
|
||||
pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51
|
||||
pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc,,
|
||||
pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/operations/install/editable_legacy.py,sha256=PoEsNEPGbIZ2yQphPsmYTKLOCMs4gv5OcCdzW124NcA,1283
|
||||
pip/_internal/operations/install/wheel.py,sha256=X5Iz9yUg5LlK5VNQ9g2ikc6dcRu8EPi_SUi5iuEDRgo,27615
|
||||
pip/_internal/operations/prepare.py,sha256=joWJwPkuqGscQgVNImLK71e9hRapwKvRCM8HclysmvU,28118
|
||||
pip/_internal/pyproject.py,sha256=rw4fwlptDp1hZgYoplwbAGwWA32sWQkp7ysf8Ju6iXc,7287
|
||||
pip/_internal/req/__init__.py,sha256=HxBFtZy_BbCclLgr26waMtpzYdO5T3vxePvpGAXSt5s,2653
|
||||
pip/_internal/req/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/req/__pycache__/constructors.cpython-312.pyc,,
|
||||
pip/_internal/req/__pycache__/req_file.cpython-312.pyc,,
|
||||
pip/_internal/req/__pycache__/req_install.cpython-312.pyc,,
|
||||
pip/_internal/req/__pycache__/req_set.cpython-312.pyc,,
|
||||
pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc,,
|
||||
pip/_internal/req/constructors.py,sha256=qXNZtUqhsXpHxkRaIQhp20_Kz6I88MDKM8SQR9fckIc,18424
|
||||
pip/_internal/req/req_file.py,sha256=hnC9Oz-trqGQpuDnCVWqwpJkAvtbCsk7-5k0EWVQhlQ,17687
|
||||
pip/_internal/req/req_install.py,sha256=yhT98NGDoAEk03jznTJnYCznzhiMEEA2ocgsUG_dcNU,35788
|
||||
pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858
|
||||
pip/_internal/req/req_uninstall.py,sha256=qzDIxJo-OETWqGais7tSMCDcWbATYABT-Tid3ityF0s,23853
|
||||
pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/resolution/__pycache__/base.cpython-312.pyc,,
|
||||
pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583
|
||||
pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc,,
|
||||
pip/_internal/resolution/legacy/resolver.py,sha256=3HZiJBRd1FTN6jQpI4qRO8-TbLYeIbUTS6PFvXnXs2w,24068
|
||||
pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc,,
|
||||
pip/_internal/resolution/resolvelib/base.py,sha256=DCf669FsqyQY5uqXeePDHQY1e4QO-pBzWH8O0s9-K94,5023
|
||||
pip/_internal/resolution/resolvelib/candidates.py,sha256=07CBc85ya3J19XqdvUsLQwtVIxiTYq9km9hbTRh0jb0,19823
|
||||
pip/_internal/resolution/resolvelib/factory.py,sha256=mTTq_nG1F9Eq3VnlYPH6Ap-mydcS-mxC5y5L-CLLp80,32459
|
||||
pip/_internal/resolution/resolvelib/found_candidates.py,sha256=9hrTyQqFvl9I7Tji79F1AxHv39Qh1rkJ_7deSHSMfQc,6383
|
||||
pip/_internal/resolution/resolvelib/provider.py,sha256=bcsFnYvlmtB80cwVdW1fIwgol8ZNr1f1VHyRTkz47SM,9935
|
||||
pip/_internal/resolution/resolvelib/reporter.py,sha256=00JtoXEkTlw0-rl_sl54d71avwOsJHt9GGHcrj5Sza0,3168
|
||||
pip/_internal/resolution/resolvelib/requirements.py,sha256=7JG4Z72e5Yk4vU0S5ulGvbqTy4FMQGYhY5zQhX9zTtY,8065
|
||||
pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592
|
||||
pip/_internal/self_outdated_check.py,sha256=pkjQixuWyQ1vrVxZAaYD6SSHgXuFUnHZybXEWTkh0S0,8145
|
||||
pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_internal/utils/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/_log.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/compat.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/datetime.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/encoding.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/glibc.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/hashes.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/logging.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/misc.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/packaging.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/retry.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/urls.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc,,
|
||||
pip/_internal/utils/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_internal/utils/_jaraco_text.py,sha256=M15uUPIh5NpP1tdUGBxRau6q1ZAEtI8-XyLEETscFfE,3350
|
||||
pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015
|
||||
pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665
|
||||
pip/_internal/utils/compat.py,sha256=ckkFveBiYQjRWjkNsajt_oWPS57tJvE8XxoC4OIYgCY,2399
|
||||
pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377
|
||||
pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242
|
||||
pip/_internal/utils/deprecation.py,sha256=k7Qg_UBAaaTdyq82YVARA6D7RmcGTXGv7fnfcgigj4Q,3707
|
||||
pip/_internal/utils/direct_url_helpers.py,sha256=r2MRtkVDACv9AGqYODBUC9CjwgtsUU1s68hmgfCJMtA,3196
|
||||
pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463
|
||||
pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169
|
||||
pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064
|
||||
pip/_internal/utils/filesystem.py,sha256=ajvA-q4ocliW9kPp8Yquh-4vssXbu-UKbo5FV9V4X64,4950
|
||||
pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716
|
||||
pip/_internal/utils/glibc.py,sha256=vUkWq_1pJuzcYNcGKLlQmABoUiisK8noYY1yc8Wq4w4,3734
|
||||
pip/_internal/utils/hashes.py,sha256=XGGLL0AG8-RhWnyz87xF6MFZ--BKadHU35D47eApCKI,4972
|
||||
pip/_internal/utils/logging.py,sha256=7BFKB1uFjdxD5crM-GtwA5T2qjbQ2LPD-gJDuJeDNTg,11606
|
||||
pip/_internal/utils/misc.py,sha256=HR_V97vNTHNzwq01JrnTZtsLLkWAOJ9_EeYfHJZSgDY,23745
|
||||
pip/_internal/utils/packaging.py,sha256=iI3LH43lVNR4hWBOqF6lFsZq4aycb2j0UcHlmDmcqUg,2109
|
||||
pip/_internal/utils/retry.py,sha256=mhFbykXjhTnZfgzeuy-vl9c8nECnYn_CMtwNJX2tYzQ,1392
|
||||
pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435
|
||||
pip/_internal/utils/subprocess.py,sha256=EsvqSRiSMHF98T8Txmu6NLU3U--MpTTQjtNgKP0P--M,8988
|
||||
pip/_internal/utils/temp_dir.py,sha256=5qOXe8M4JeY6vaFQM867d5zkp1bSwMZ-KT5jymmP0Zg,9310
|
||||
pip/_internal/utils/unpacking.py,sha256=eyDkSsk4nW8ZfiSjNzJduCznpHyaGHVv3ak_LMGsiEM,11951
|
||||
pip/_internal/utils/urls.py,sha256=qceSOZb5lbNDrHNsv7_S4L4Ytszja5NwPKUMnZHbYnM,1599
|
||||
pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456
|
||||
pip/_internal/utils/wheel.py,sha256=b442jkydFHjXzDy6cMR7MpzWBJ1Q82hR5F33cmcHV3g,4494
|
||||
pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596
|
||||
pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc,,
|
||||
pip/_internal/vcs/__pycache__/git.cpython-312.pyc,,
|
||||
pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc,,
|
||||
pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc,,
|
||||
pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc,,
|
||||
pip/_internal/vcs/bazaar.py,sha256=EKStcQaKpNu0NK4p5Q10Oc4xb3DUxFw024XrJy40bFQ,3528
|
||||
pip/_internal/vcs/git.py,sha256=3tpc9LQA_J4IVW5r5NvWaaSeDzcmJOrSFZN0J8vIKfU,18177
|
||||
pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249
|
||||
pip/_internal/vcs/subversion.py,sha256=ddTugHBqHzV3ebKlU5QXHPN4gUqlyXbOx8q8NgXKvs8,11735
|
||||
pip/_internal/vcs/versioncontrol.py,sha256=cvf_-hnTAjQLXJ3d17FMNhQfcO1AcKWUF10tfrYyP-c,22440
|
||||
pip/_internal/wheel_builder.py,sha256=DL3A8LKeRj_ACp11WS5wSgASgPFqeyAeXJKdXfmaWXU,11799
|
||||
pip/_vendor/__init__.py,sha256=JYuAXvClhInxIrA2FTp5p-uuWVL7WV6-vEpTs46-Qh4,4873
|
||||
pip/_vendor/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__init__.py,sha256=GiYoagwPEiJ_xR_lbwWGaoCiPtF_rz4isjfjdDAgHU4,676
|
||||
pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737
|
||||
pip/_vendor/cachecontrol/adapter.py,sha256=fByO_Pd_EOemjWbuocvBWdN85xT0q_TBm2lxS6vD4fk,6355
|
||||
pip/_vendor/cachecontrol/cache.py,sha256=OTQj72tUf8C1uEgczdl3Gc8vkldSzsTITKtDGKMx4z8,1952
|
||||
pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303
|
||||
pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc,,
|
||||
pip/_vendor/cachecontrol/caches/file_cache.py,sha256=9AlmmTJc6cslb6k5z_6q0sGPHVrMj8zv-uWy-simmfE,5406
|
||||
pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386
|
||||
pip/_vendor/cachecontrol/controller.py,sha256=o-ejGJlBmpKK8QQLyTPJj0t7siU8XVHXuV8MCybCxQ8,18575
|
||||
pip/_vendor/cachecontrol/filewrapper.py,sha256=STttGmIPBvZzt2b51dUOwoWX5crcMCpKZOisM3f5BNc,4292
|
||||
pip/_vendor/cachecontrol/heuristics.py,sha256=IYe4QmHERWsMvtxNrp920WeaIsaTTyqLB14DSheSbtY,4834
|
||||
pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/cachecontrol/serialize.py,sha256=HQd2IllQ05HzPkVLMXTF2uX5mjEQjDBkxCqUJUODpZk,5163
|
||||
pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417
|
||||
pip/_vendor/certifi/__init__.py,sha256=LHXz7E80YJYBzCBv6ZyidQ5-ciYSkSebpY2E5OM0l7o,94
|
||||
pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255
|
||||
pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/_vendor/certifi/__pycache__/core.cpython-312.pyc,,
|
||||
pip/_vendor/certifi/cacert.pem,sha256=SIupYGAr8HzGP073rsEIaS_sQYIPwzKKjj894DgUmu4,291528
|
||||
pip/_vendor/certifi/core.py,sha256=2SRT5rIcQChFDbe37BQa-kULxAgJ8qN6l1jfqTp4HIs,4486
|
||||
pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/distlib/__init__.py,sha256=hJKF7FHoqbmGckncDuEINWo_OYkDNiHODtYXSMcvjcc,625
|
||||
pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/database.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/index.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/util.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/version.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc,,
|
||||
pip/_vendor/distlib/compat.py,sha256=Un-uIBvy02w-D267OG4VEhuddqWgKj9nNkxVltAb75w,41487
|
||||
pip/_vendor/distlib/database.py,sha256=0V9Qvs0Vrxa2F_-hLWitIyVyRifJ0pCxyOI-kEOBwsA,51965
|
||||
pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797
|
||||
pip/_vendor/distlib/locators.py,sha256=o1r_M86_bRLafSpetmyfX8KRtFu-_Q58abvQrnOSnbA,51767
|
||||
pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168
|
||||
pip/_vendor/distlib/markers.py,sha256=n3DfOh1yvZ_8EW7atMyoYeZFXjYla0Nz0itQlojCd0A,5268
|
||||
pip/_vendor/distlib/metadata.py,sha256=pB9WZ9mBfmQxc9OVIldLS5CjOoQRvKAvUwwQyKwKQtQ,39693
|
||||
pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820
|
||||
pip/_vendor/distlib/scripts.py,sha256=8_gP9J7_tlNRicnWmPX4ZiDlP5wTwJKDeeg-8_qXUZU,18780
|
||||
pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792
|
||||
pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784
|
||||
pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032
|
||||
pip/_vendor/distlib/util.py,sha256=XSznxEi_i3T20UJuaVc0qXHz5ksGUCW1khYlBprN_QE,67530
|
||||
pip/_vendor/distlib/version.py,sha256=9pXkduchve_aN7JG6iL9VTYV_kqNSGoc2Dwl8JuySnQ,23747
|
||||
pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648
|
||||
pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448
|
||||
pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888
|
||||
pip/_vendor/distlib/wheel.py,sha256=FVQCve8u-L0QYk5-YTZc7s4WmNQdvjRWTK08KXzZVX4,43958
|
||||
pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981
|
||||
pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64
|
||||
pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/_vendor/distro/__pycache__/distro.cpython-312.pyc,,
|
||||
pip/_vendor/distro/distro.py,sha256=XqbefacAhDT4zr_trnbA15eY8vdK4GTghgmvUGrEM_4,49430
|
||||
pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849
|
||||
pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/codec.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/compat.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/core.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc,,
|
||||
pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc,,
|
||||
pip/_vendor/idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426
|
||||
pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321
|
||||
pip/_vendor/idna/core.py,sha256=lyhpoe2vulEaB_65xhXmoKgO-xUqFDvcwxu5hpNNO4E,12663
|
||||
pip/_vendor/idna/idnadata.py,sha256=dqRwytzkjIHMBa2R1lYvHDwACenZPt8eGVu1Y8UBE-E,78320
|
||||
pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881
|
||||
pip/_vendor/idna/package_data.py,sha256=Tkt0KnIeyIlnHddOaz9WSkkislNgokJAuE-p5GorMqo,21
|
||||
pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503
|
||||
pip/_vendor/msgpack/__init__.py,sha256=gsMP7JTECZNUSjvOyIbdhNOkpB9Z8BcGwabVGY2UcdQ,1077
|
||||
pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc,,
|
||||
pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc,,
|
||||
pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc,,
|
||||
pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
|
||||
pip/_vendor/msgpack/ext.py,sha256=fKp00BqDLjUtZnPd70Llr138zk8JsCuSpJkkZ5S4dt8,5629
|
||||
pip/_vendor/msgpack/fallback.py,sha256=wdUWJkWX2gzfRW9BBCTOuIE1Wvrf5PtBtR8ZtY7G_EE,33175
|
||||
pip/_vendor/packaging/__init__.py,sha256=dtw2bNmWCQ9WnMoK3bk_elL1svSlikXtLpZhCFIB9SE,496
|
||||
pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/__pycache__/version.cpython-312.pyc,,
|
||||
pip/_vendor/packaging/_elffile.py,sha256=_LcJW4YNKywYsl4169B2ukKRqwxjxst_8H0FRVQKlz8,3282
|
||||
pip/_vendor/packaging/_manylinux.py,sha256=Xo4V0PZz8sbuVCbTni0t1CR0AHeir_7ib4lTmV8scD4,9586
|
||||
pip/_vendor/packaging/_musllinux.py,sha256=p9ZqNYiOItGee8KcZFeHF_YcdhVwGHdK6r-8lgixvGQ,2694
|
||||
pip/_vendor/packaging/_parser.py,sha256=s_TvTvDNK0NrM2QB3VKThdWFM4Nc0P6JnkObkl3MjpM,10236
|
||||
pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
|
||||
pip/_vendor/packaging/_tokenizer.py,sha256=J6v5H7Jzvb-g81xp_2QACKwO7LxHQA6ikryMU7zXwN8,5273
|
||||
pip/_vendor/packaging/markers.py,sha256=dWKSqn5Sp-jDmOG-W3GfLHKjwhf1IsznbT71VlBoB5M,10671
|
||||
pip/_vendor/packaging/metadata.py,sha256=KINuSkJ12u-SyoKNTy_pHNGAfMUtxNvZ53qA1zAKcKI,32349
|
||||
pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/packaging/requirements.py,sha256=gYyRSAdbrIyKDY66ugIDUQjRMvxkH2ALioTmX3tnL6o,2947
|
||||
pip/_vendor/packaging/specifiers.py,sha256=HfGgfNJRvrzC759gnnoojHyiWs_DYmcw5PEh5jHH-YE,39738
|
||||
pip/_vendor/packaging/tags.py,sha256=y8EbheOu9WS7s-MebaXMcHMF-jzsA_C1Lz5XRTiSy4w,18883
|
||||
pip/_vendor/packaging/utils.py,sha256=NAdYUwnlAOpkat_RthavX8a07YuVxgGL_vwrx73GSDM,5287
|
||||
pip/_vendor/packaging/version.py,sha256=wE4sSVlF-d1H6HFC1vszEe35CwTig_fh4HHIFg95hFE,16210
|
||||
pip/_vendor/pkg_resources/__init__.py,sha256=jrhDRbOubP74QuPXxd7U7Po42PH2l-LZ2XfcO7llpZ4,124463
|
||||
pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__init__.py,sha256=FTA6LGNm40GwNZt3gG3uLAacWvf2E_2HTmH0rAALGR8,22285
|
||||
pip/_vendor/platformdirs/__main__.py,sha256=jBJ8zb7Mpx5ebcqF83xrpO94MaeCpNGHVf9cvDN2JLg,1505
|
||||
pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc,,
|
||||
pip/_vendor/platformdirs/android.py,sha256=xZXY9Jd46WOsxT2U6-5HsNtDZ-IQqxcEUrBLl3hYk4o,9016
|
||||
pip/_vendor/platformdirs/api.py,sha256=QBYdUac2eC521ek_y53uD1Dcq-lJX8IgSRVd4InC6uc,8996
|
||||
pip/_vendor/platformdirs/macos.py,sha256=wftsbsvq6nZ0WORXSiCrZNkRHz_WKuktl0a6mC7MFkI,5580
|
||||
pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/platformdirs/unix.py,sha256=Cci9Wqt35dAMsg6HT9nRGHSBW5obb0pR3AE1JJnsCXg,10643
|
||||
pip/_vendor/platformdirs/version.py,sha256=r7F76tZRjgQKzrpx_I0_ZMQOMU-PS7eGnHD7zEK3KB0,411
|
||||
pip/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125
|
||||
pip/_vendor/pygments/__init__.py,sha256=7N1oiaWulw_nCsTY4EEixYLz15pWY5u4uPAFFi-ielU,2983
|
||||
pip/_vendor/pygments/__main__.py,sha256=isIhBxLg65nLlXukG4VkMuPfNdd7gFzTZ_R_z3Q8diY,353
|
||||
pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/console.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/style.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/token.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/__pycache__/util.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/cmdline.py,sha256=LIVzmAunlk9sRJJp54O4KRy9GDIN4Wu13v9p9QzfGPM,23656
|
||||
pip/_vendor/pygments/console.py,sha256=yhP9UsLAVmWKVQf2446JJewkA7AiXeeTf4Ieg3Oi2fU,1718
|
||||
pip/_vendor/pygments/filter.py,sha256=_ADNPCskD8_GmodHi6_LoVgPU3Zh336aBCT5cOeTMs0,1910
|
||||
pip/_vendor/pygments/filters/__init__.py,sha256=RdedK2KWKXlKwR7cvkfr3NUj9YiZQgMgilRMFUg2jPA,40392
|
||||
pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatter.py,sha256=jDWBTndlBH2Z5IYZFVDnP0qn1CaTQjTWt7iAGtCnJEg,4390
|
||||
pip/_vendor/pygments/formatters/__init__.py,sha256=8No-NUs8rBTSSBJIv4hSEQt2M0cFB4hwAT0snVc2QGE,5385
|
||||
pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176
|
||||
pip/_vendor/pygments/formatters/bbcode.py,sha256=3JQLI45tcrQ_kRUMjuab6C7Hb0XUsbVWqqbSn9cMjkI,3320
|
||||
pip/_vendor/pygments/formatters/groff.py,sha256=M39k0PaSSZRnxWjqBSVPkF0mu1-Vr7bm6RsFvs-CNN4,5106
|
||||
pip/_vendor/pygments/formatters/html.py,sha256=SE2jc3YCqbMS3rZW9EAmDlAUhdVxJ52gA4dileEvCGU,35669
|
||||
pip/_vendor/pygments/formatters/img.py,sha256=MwA4xWPLOwh6j7Yc6oHzjuqSPt0M1fh5r-5BTIIUfsU,23287
|
||||
pip/_vendor/pygments/formatters/irc.py,sha256=dp1Z0l_ObJ5NFh9MhqLGg5ptG5hgJqedT2Vkutt9v0M,4981
|
||||
pip/_vendor/pygments/formatters/latex.py,sha256=XMmhOCqUKDBQtG5mGJNAFYxApqaC5puo5cMmPfK3944,19306
|
||||
pip/_vendor/pygments/formatters/other.py,sha256=56PMJOliin-rAUdnRM0i1wsV1GdUPd_dvQq0_UPfF9c,5034
|
||||
pip/_vendor/pygments/formatters/pangomarkup.py,sha256=y16U00aVYYEFpeCfGXlYBSMacG425CbfoG8oKbKegIg,2218
|
||||
pip/_vendor/pygments/formatters/rtf.py,sha256=ZT90dmcKyJboIB0mArhL7IhE467GXRN0G7QAUgG03To,11957
|
||||
pip/_vendor/pygments/formatters/svg.py,sha256=KKsiophPupHuxm0So-MsbQEWOT54IAiSF7hZPmxtKXE,7174
|
||||
pip/_vendor/pygments/formatters/terminal.py,sha256=AojNG4MlKq2L6IsC_VnXHu4AbHCBn9Otog6u45XvxeI,4674
|
||||
pip/_vendor/pygments/formatters/terminal256.py,sha256=kGkNUVo3FpwjytIDS0if79EuUoroAprcWt3igrcIqT0,11753
|
||||
pip/_vendor/pygments/lexer.py,sha256=TYHDt___gNW4axTl2zvPZff-VQi8fPaIh5OKRcVSjUM,35349
|
||||
pip/_vendor/pygments/lexers/__init__.py,sha256=pIlxyQJuu_syh9lE080cq8ceVbEVcKp0osAFU5fawJU,12115
|
||||
pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/lexers/_mapping.py,sha256=61-h3zr103m01OS5BUq_AfUiL9YI06Ves9ipQ7k4vr4,76097
|
||||
pip/_vendor/pygments/lexers/python.py,sha256=2J_YJrPTr_A6fJY_qKiKv0GpgPwHMrlMSeo59qN3fe4,53687
|
||||
pip/_vendor/pygments/modeline.py,sha256=gtRYZBS-CKOCDXHhGZqApboHBaZwGH8gznN3O6nuxj4,1005
|
||||
pip/_vendor/pygments/plugin.py,sha256=ioeJ3QeoJ-UQhZpY9JL7vbxsTVuwwM7BCu-Jb8nN0AU,1891
|
||||
pip/_vendor/pygments/regexopt.py,sha256=Hky4EB13rIXEHQUNkwmCrYqtIlnXDehNR3MztafZ43w,3072
|
||||
pip/_vendor/pygments/scanner.py,sha256=NDy3ofK_fHRFK4hIDvxpamG871aewqcsIb6sgTi7Fhk,3092
|
||||
pip/_vendor/pygments/sphinxext.py,sha256=iOptJBcqOGPwMEJ2p70PvwpZPIGdvdZ8dxvq6kzxDgA,7981
|
||||
pip/_vendor/pygments/style.py,sha256=rSCZWFpg1_DwFMXDU0nEVmAcBHpuQGf9RxvOPPQvKLQ,6420
|
||||
pip/_vendor/pygments/styles/__init__.py,sha256=qUk6_1z5KmT8EdJFZYgESmG6P_HJF_2vVrDD7HSCGYY,2042
|
||||
pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc,,
|
||||
pip/_vendor/pygments/styles/_mapping.py,sha256=6lovFUE29tz6EsV3XYY4hgozJ7q1JL7cfO3UOlgnS8w,3312
|
||||
pip/_vendor/pygments/token.py,sha256=qZwT7LSPy5YBY3JgDjut642CCy7JdQzAfmqD9NmT5j0,6226
|
||||
pip/_vendor/pygments/unistring.py,sha256=p5c1i-HhoIhWemy9CUsaN9o39oomYHNxXll0Xfw6tEA,63208
|
||||
pip/_vendor/pygments/util.py,sha256=2tj2nS1X9_OpcuSjf8dOET2bDVZhs8cEKd_uT6-Fgg8,10031
|
||||
pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491
|
||||
pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc,,
|
||||
pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc,,
|
||||
pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138
|
||||
pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920
|
||||
pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546
|
||||
pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc,,
|
||||
pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927
|
||||
pip/_vendor/requests/__init__.py,sha256=HlB_HzhrzGtfD_aaYUwUh1zWXLZ75_YCLyit75d0Vz8,5057
|
||||
pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/api.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/auth.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/certs.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/compat.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/help.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/models.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/packages.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/structures.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__pycache__/utils.cpython-312.pyc,,
|
||||
pip/_vendor/requests/__version__.py,sha256=FVfglgZmNQnmYPXpOohDU58F5EUb_-VnSTaAesS187g,435
|
||||
pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495
|
||||
pip/_vendor/requests/adapters.py,sha256=J7VeVxKBvawbtlX2DERVo05J9BXTcWYLMHNd1Baa-bk,27607
|
||||
pip/_vendor/requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449
|
||||
pip/_vendor/requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186
|
||||
pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575
|
||||
pip/_vendor/requests/compat.py,sha256=Mo9f9xZpefod8Zm-n9_StJcVTmwSukXR2p3IQyyVXvU,1485
|
||||
pip/_vendor/requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590
|
||||
pip/_vendor/requests/exceptions.py,sha256=D1wqzYWne1mS2rU43tP9CeN1G7QAy7eqL9o1god6Ejw,4272
|
||||
pip/_vendor/requests/help.py,sha256=hRKaf9u0G7fdwrqMHtF3oG16RKktRf6KiwtSq2Fo1_0,3813
|
||||
pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733
|
||||
pip/_vendor/requests/models.py,sha256=x4K4CmH-lC0l2Kb-iPfMN4dRXxHEcbOaEWBL_i09AwI,35483
|
||||
pip/_vendor/requests/packages.py,sha256=_ZQDCJTJ8SP3kVWunSqBsRZNPzj2c1WFVqbdr08pz3U,1057
|
||||
pip/_vendor/requests/sessions.py,sha256=ykTI8UWGSltOfH07HKollH7kTBGw4WhiBVaQGmckTw4,30495
|
||||
pip/_vendor/requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322
|
||||
pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912
|
||||
pip/_vendor/requests/utils.py,sha256=L79vnFbzJ3SFLKtJwpoWe41Tozi3RlZv94pY1TFIyow,33631
|
||||
pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537
|
||||
pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc,,
|
||||
pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156
|
||||
pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871
|
||||
pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601
|
||||
pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511
|
||||
pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963
|
||||
pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090
|
||||
pip/_vendor/rich/__main__.py,sha256=eO7Cq8JnrgG8zVoeImiAs92q3hXNMIfp0w5lMsO7Q2Y,8477
|
||||
pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/abc.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/align.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/bar.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/box.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/cells.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/color.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/columns.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/console.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/containers.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/control.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/errors.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/json.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/layout.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/live.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/logging.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/markup.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/measure.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/padding.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/pager.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/palette.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/panel.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/progress.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/region.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/repr.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/rule.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/scope.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/screen.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/segment.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/status.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/style.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/styled.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/table.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/text.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/theme.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/themes.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc,,
|
||||
pip/_vendor/rich/__pycache__/tree.cpython-312.pyc,,
|
||||
pip/_vendor/rich/_cell_widths.py,sha256=fbmeyetEdHjzE_Vx2l1uK7tnPOhMs2X1lJfO3vsKDpA,10209
|
||||
pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235
|
||||
pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064
|
||||
pip/_vendor/rich/_export_format.py,sha256=RI08pSrm5tBSzPMvnbTqbD9WIalaOoN5d4M1RTmLq1Y,2128
|
||||
pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265
|
||||
pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799
|
||||
pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695
|
||||
pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225
|
||||
pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236
|
||||
pip/_vendor/rich/_null_file.py,sha256=tGSXk_v-IZmbj1GAzHit8A3kYIQMiCpVsCFfsC-_KJ4,1387
|
||||
pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063
|
||||
pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423
|
||||
pip/_vendor/rich/_ratio.py,sha256=Zt58apszI6hAAcXPpgdWKpu3c31UBWebOeR4mbyptvU,5471
|
||||
pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919
|
||||
pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351
|
||||
pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417
|
||||
pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820
|
||||
pip/_vendor/rich/_windows.py,sha256=aBwaD_S56SbgopIvayVmpk0Y28uwY2C5Bab1wl3Bp-I,1925
|
||||
pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783
|
||||
pip/_vendor/rich/_wrap.py,sha256=FlSsom5EX0LVkA3KWy34yHnCfLtqX-ZIepXKh-70rpc,3404
|
||||
pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890
|
||||
pip/_vendor/rich/align.py,sha256=sCUkisXkQfoq-IQPyBELfJ8l7LihZJX3HbH8K7Cie-M,10368
|
||||
pip/_vendor/rich/ansi.py,sha256=iD6532QYqnBm6hADulKjrV8l8kFJ-9fEVooHJHH3hMg,6906
|
||||
pip/_vendor/rich/bar.py,sha256=ldbVHOzKJOnflVNuv1xS7g6dLX2E3wMnXkdPbpzJTcs,3263
|
||||
pip/_vendor/rich/box.py,sha256=nr5fYIUghB_iUCEq6y0Z3LlCT8gFPDrzN9u2kn7tJl4,10831
|
||||
pip/_vendor/rich/cells.py,sha256=aMmGK4BjXhgE6_JF1ZEGmW3O7mKkE8g84vUnj4Et4To,4780
|
||||
pip/_vendor/rich/color.py,sha256=bCRATVdRe5IClJ6Hl62de2PKQ_U4i2MZ4ugjUEg7Tao,18223
|
||||
pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054
|
||||
pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131
|
||||
pip/_vendor/rich/console.py,sha256=deFZIubq2M9A2MCsKFAsFQlWDvcOMsGuUA07QkOaHIw,99173
|
||||
pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288
|
||||
pip/_vendor/rich/containers.py,sha256=c_56TxcedGYqDepHBMTuZdUIijitAQgnox-Qde0Z1qo,5502
|
||||
pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630
|
||||
pip/_vendor/rich/default_styles.py,sha256=-Fe318kMVI_IwciK5POpThcO0-9DYJ67TZAN6DlmlmM,8082
|
||||
pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972
|
||||
pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501
|
||||
pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642
|
||||
pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683
|
||||
pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508
|
||||
pip/_vendor/rich/highlighter.py,sha256=6ZAjUcNhBRajBCo9umFUclyi2xL0-55JL7S0vYGUJu4,9585
|
||||
pip/_vendor/rich/json.py,sha256=vVEoKdawoJRjAFayPwXkMBPLy7RSTs-f44wSQDR2nJ0,5031
|
||||
pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252
|
||||
pip/_vendor/rich/layout.py,sha256=ajkSFAtEVv9EFTcFs-w4uZfft7nEXhNzL7ZVdgrT5rI,14004
|
||||
pip/_vendor/rich/live.py,sha256=vUcnJV2LMSK3sQNaILbm0-_B8BpAeiHfcQMAMLfpRe0,14271
|
||||
pip/_vendor/rich/live_render.py,sha256=zJtB471jGziBtEwxc54x12wEQtH4BuQr1SA8v9kU82w,3666
|
||||
pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903
|
||||
pip/_vendor/rich/markup.py,sha256=3euGKP5s41NCQwaSjTnJxus5iZMHjxpIM0W6fCxra38,8451
|
||||
pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305
|
||||
pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970
|
||||
pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828
|
||||
pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396
|
||||
pip/_vendor/rich/panel.py,sha256=2Fd1V7e1kHxlPFIusoHY5T7-Cs0RpkrihgVG9ZVqJ4g,10705
|
||||
pip/_vendor/rich/pretty.py,sha256=5oIHP_CGWnHEnD0zMdW5qfGC5kHqIKn7zH_eC4crULE,35848
|
||||
pip/_vendor/rich/progress.py,sha256=P02xi7T2Ua3qq17o83bkshe4c0v_45cg8VyTj6US6Vg,59715
|
||||
pip/_vendor/rich/progress_bar.py,sha256=L4jw8E6Qb_x-jhOrLVhkuMaPmiAhFIl8jHQbWFrKuR8,8164
|
||||
pip/_vendor/rich/prompt.py,sha256=wdOn2X8XTJKnLnlw6PoMY7xG4iUPp3ezt4O5gqvpV-E,11304
|
||||
pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391
|
||||
pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166
|
||||
pip/_vendor/rich/repr.py,sha256=5MZJZmONgC6kud-QW-_m1okXwL2aR6u6y-pUcUCJz28,4431
|
||||
pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602
|
||||
pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843
|
||||
pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591
|
||||
pip/_vendor/rich/segment.py,sha256=hU1ueeXqI6YeFa08K9DAjlF2QLxcJY9pwZx7RsXavlk,24246
|
||||
pip/_vendor/rich/spinner.py,sha256=15koCmF0DQeD8-k28Lpt6X_zJQUlzEhgo_6A6uy47lc,4339
|
||||
pip/_vendor/rich/status.py,sha256=kkPph3YeAZBo-X-4wPp8gTqZyU466NLwZBA4PZTTewo,4424
|
||||
pip/_vendor/rich/style.py,sha256=3hiocH_4N8vwRm3-8yFWzM7tSwjjEven69XqWasSQwM,27073
|
||||
pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258
|
||||
pip/_vendor/rich/syntax.py,sha256=TnZDuOD4DeHFbkaVEAji1gf8qgAlMU9Boe_GksMGCkk,35475
|
||||
pip/_vendor/rich/table.py,sha256=nGEvAZHF4dy1vT9h9Gj9O5qhSQO3ODAxJv0RY1vnIB8,39680
|
||||
pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370
|
||||
pip/_vendor/rich/text.py,sha256=5rQ3zvNrg5UZKNLecbh7fiw9v3HeFulNVtRY_CBDjjE,47312
|
||||
pip/_vendor/rich/theme.py,sha256=belFJogzA0W0HysQabKaHOc3RWH2ko3fQAJhoN-AFdo,3777
|
||||
pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102
|
||||
pip/_vendor/rich/traceback.py,sha256=CUpxYLjQWIb6vQQ6O72X0hvDV6caryGqU6UweHgOyCY,29601
|
||||
pip/_vendor/rich/tree.py,sha256=meAOUU6sYnoBEOX2ILrPLY9k5bWrWNQKkaiEFvHinXM,9167
|
||||
pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396
|
||||
pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc,,
|
||||
pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc,,
|
||||
pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc,,
|
||||
pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633
|
||||
pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943
|
||||
pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254
|
||||
pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26
|
||||
pip/_vendor/truststore/__init__.py,sha256=M-PhuLMIF7gxKXk7tpo2MD7dk6nqG1ae8GXWdNXbMdQ,403
|
||||
pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc,,
|
||||
pip/_vendor/truststore/_api.py,sha256=B9JIHipzBIS8pMP_J50-o1DHVZsvKZQUXTB0HQQ_UPg,10461
|
||||
pip/_vendor/truststore/_macos.py,sha256=VJ24avz5aEGYAs_kWvnGjMJtuIP4xJcYa459UQOQC3M,17608
|
||||
pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324
|
||||
pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130
|
||||
pip/_vendor/truststore/_windows.py,sha256=eldNViHNHeY5r3fiBoz_JFGD37atXB9S5yaRoPKEGAA,17891
|
||||
pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/typing_extensions.py,sha256=78hFl0HpDY-ylHUVCnWdU5nTHxUP2-S-3wEZk6CQmLk,134499
|
||||
pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333
|
||||
pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372
|
||||
pip/_vendor/urllib3/_version.py,sha256=cuJvnSrWxXGYgQ3-ZRoPMw8-qaN5tpw71jnH1t16dLA,64
|
||||
pip/_vendor/urllib3/connection.py,sha256=92k9td_y4PEiTIjNufCUa1NzMB3J3w0LEdyokYgXnW8,20300
|
||||
pip/_vendor/urllib3/connectionpool.py,sha256=Be6q65SR9laoikg-h_jmc_p8OWtEmwgq_Om_Xtig-2M,40285
|
||||
pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957
|
||||
pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632
|
||||
pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922
|
||||
pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036
|
||||
pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528
|
||||
pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081
|
||||
pip/_vendor/urllib3/contrib/securetransport.py,sha256=Fef1IIUUFHqpevzXiDPbIGkDKchY2FVKeVeLGR1Qq3g,34446
|
||||
pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097
|
||||
pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217
|
||||
pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579
|
||||
pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440
|
||||
pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417
|
||||
pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343
|
||||
pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665
|
||||
pip/_vendor/urllib3/poolmanager.py,sha256=aWyhXRtNO4JUnCSVVqKTKQd8EXTvUm1VN9pgs2bcONo,19990
|
||||
pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691
|
||||
pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641
|
||||
pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155
|
||||
pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc,,
|
||||
pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901
|
||||
pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605
|
||||
pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498
|
||||
pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997
|
||||
pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510
|
||||
pip/_vendor/urllib3/util/retry.py,sha256=Z6WEf518eTOXP5jr5QSQ9gqJI0DVYt3Xs3EKnYaTmus,22013
|
||||
pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177
|
||||
pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758
|
||||
pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895
|
||||
pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168
|
||||
pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296
|
||||
pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403
|
||||
pip/_vendor/vendor.txt,sha256=PxNaxxkkpBaw5zOTsDpHEY-zEaHjgkDgyrSxOuxg8nw,330
|
||||
pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286
|
||||
0
venv/Lib/site-packages/pip-24.2.dist-info/REQUESTED
Normal file
5
venv/Lib/site-packages/pip-24.2.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (71.1.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
pip = pip._internal.cli.main:main
|
||||
pip3 = pip._internal.cli.main:main
|
||||
1
venv/Lib/site-packages/pip-24.2.dist-info/top_level.txt
Normal file
@ -0,0 +1 @@
|
||||
pip
|
||||
13
venv/Lib/site-packages/pip/__init__.py
Normal file
@ -0,0 +1,13 @@
|
||||
from typing import List, Optional
|
||||
|
||||
__version__ = "24.2"
|
||||
|
||||
|
||||
def main(args: Optional[List[str]] = None) -> int:
|
||||
"""This is an internal API only meant for use by pip's own console scripts.
|
||||
|
||||
For additional details, see https://github.com/pypa/pip/issues/7498.
|
||||
"""
|
||||
from pip._internal.utils.entrypoints import _wrapper
|
||||
|
||||
return _wrapper(args)
|
||||
24
venv/Lib/site-packages/pip/__main__.py
Normal file
@ -0,0 +1,24 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Remove '' and current working directory from the first entry
|
||||
# of sys.path, if present to avoid using current directory
|
||||
# in pip commands check, freeze, install, list and show,
|
||||
# when invoked as python -m pip <command>
|
||||
if sys.path[0] in ("", os.getcwd()):
|
||||
sys.path.pop(0)
|
||||
|
||||
# If we are running from a wheel, add the wheel to sys.path
|
||||
# This allows the usage python pip-*.whl/pip install pip-*.whl
|
||||
if __package__ == "":
|
||||
# __file__ is pip-*.whl/pip/__main__.py
|
||||
# first dirname call strips of '/__main__.py', second strips off '/pip'
|
||||
# Resulting path is the name of the wheel itself
|
||||
# Add that to sys.path so we can import pip
|
||||
path = os.path.dirname(os.path.dirname(__file__))
|
||||
sys.path.insert(0, path)
|
||||
|
||||
if __name__ == "__main__":
|
||||
from pip._internal.cli.main import main as _main
|
||||
|
||||
sys.exit(_main())
|
||||
50
venv/Lib/site-packages/pip/__pip-runner__.py
Normal file
@ -0,0 +1,50 @@
|
||||
"""Execute exactly this copy of pip, within a different environment.
|
||||
|
||||
This file is named as it is, to ensure that this module can't be imported via
|
||||
an import statement.
|
||||
"""
|
||||
|
||||
# /!\ This version compatibility check section must be Python 2 compatible. /!\
|
||||
|
||||
import sys
|
||||
|
||||
# Copied from pyproject.toml
|
||||
PYTHON_REQUIRES = (3, 8)
|
||||
|
||||
|
||||
def version_str(version): # type: ignore
|
||||
return ".".join(str(v) for v in version)
|
||||
|
||||
|
||||
if sys.version_info[:2] < PYTHON_REQUIRES:
|
||||
raise SystemExit(
|
||||
"This version of pip does not support python {} (requires >={}).".format(
|
||||
version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES)
|
||||
)
|
||||
)
|
||||
|
||||
# From here on, we can use Python 3 features, but the syntax must remain
|
||||
# Python 2 compatible.
|
||||
|
||||
import runpy # noqa: E402
|
||||
from importlib.machinery import PathFinder # noqa: E402
|
||||
from os.path import dirname # noqa: E402
|
||||
|
||||
PIP_SOURCES_ROOT = dirname(dirname(__file__))
|
||||
|
||||
|
||||
class PipImportRedirectingFinder:
|
||||
@classmethod
|
||||
def find_spec(self, fullname, path=None, target=None): # type: ignore
|
||||
if fullname != "pip":
|
||||
return None
|
||||
|
||||
spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target)
|
||||
assert spec, (PIP_SOURCES_ROOT, fullname)
|
||||
return spec
|
||||
|
||||
|
||||
sys.meta_path.insert(0, PipImportRedirectingFinder())
|
||||
|
||||
assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module"
|
||||
runpy.run_module("pip", run_name="__main__", alter_sys=True)
|
||||
BIN
venv/Lib/site-packages/pip/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
venv/Lib/site-packages/pip/__pycache__/__main__.cpython-312.pyc
Normal file
18
venv/Lib/site-packages/pip/_internal/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pip._internal.utils import _log
|
||||
|
||||
# init_logging() must be called before any call to logging.getLogger()
|
||||
# which happens at import of most modules.
|
||||
_log.init_logging()
|
||||
|
||||
|
||||
def main(args: Optional[List[str]] = None) -> int:
|
||||
"""This is preserved for old console scripts that may still be referencing
|
||||
it.
|
||||
|
||||
For additional details, see https://github.com/pypa/pip/issues/7498.
|
||||
"""
|
||||
from pip._internal.utils.entrypoints import _wrapper
|
||||
|
||||
return _wrapper(args)
|
||||