├── LICENSE
├── README.md
├── export.py
└── output.html
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Max Base
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # GitHub Repository Export List
2 |
3 | A tiny script to get list of all repository of a GitHub user and generate HTML output with style.
4 |
5 | ## Features of github-repos-exporter
6 |
7 | - Auto get name from username
8 | - Auto detect number of repositories
9 | - Auto pagination to get list of all repos
10 | - Groupination repos by its main language name
11 | - Groupination non-language repo to other
12 | - Generate **HTML** output page
13 |
14 | ## Using GitHub export repositories
15 |
16 | Set your username at export.py file. then:
17 |
18 | ```bash
19 | $ git clone https://github.com/BaseMax/GitHub-Repository-Export-List/
20 | $ cd GitHub-Repository-Export-List
21 | $ python export.py > output.html
22 | ```
23 |
24 | You can watch/see example HTML generated in output.html at [here](https://basemax.github.io/GitHub-Repository-Export-List/output.html).
25 |
26 | ### Rate Limit
27 |
28 | Keep in mind that the GitHub server has limitations.
29 |
30 | While I was writing and testing, I seemed to be blocked and GitHub servers no longer answered, so I had to use the `torsocks` to continue the project.
31 |
32 | ### TODO
33 |
34 | - Get username from `$argv`
35 | - Move functions to a new class
36 | - Remove the example code from lib file (export.py)
37 | - Create examples and tests file
38 | - Publish the package to pip
39 | - Generate JSON output
40 | - Generate csv output
41 |
42 | © Copyright Max Base
43 |
--------------------------------------------------------------------------------
/export.py:
--------------------------------------------------------------------------------
1 | # Max Base
2 | # 2021-03-21
3 | # https://github.com/BaseMax/GitHub-Repository-Export-List
4 |
5 | import sys
6 | import time
7 | import json
8 | import math
9 | import requests
10 |
11 | def check_user(username):
12 | url = "https://api.github.com/users/" + username
13 | # Note: if you put a / at the end of url, this will not works!
14 | response = requests.get(url)
15 | json_data = json.loads(response.text)
16 | return json_data
17 |
18 | def get_repos(username, page):
19 | url = "https://api.github.com/users/" + username + "/repos?per_page=100&page=" + str(page)
20 | response = requests.get(url)
21 | json_data = json.loads(response.text)
22 |
23 | items = []
24 |
25 | for item in json_data:
26 | # {'id': 329726066, 'node_id': 'MDEwOlJlcG9zaXRvcnkzMjk3MjYwNjY=', 'name': 'GameNetSystemPHP', 'full_name': 'BaseMax/GameNetSystemPHP', 'private': False, 'owner': {'login': 'BaseMax', 'id': 2658040, 'node_id': 'MDQ6VXNlcjI2NTgwNDA=', 'avatar_url': 'https://avatars.githubusercontent.com/u/2658040?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/BaseMax', 'html_url': 'https://github.com/BaseMax', 'followers_url': 'https://api.github.com/users/BaseMax/followers', 'following_url': 'https://api.github.com/users/BaseMax/following{/other_user}', 'gists_url': 'https://api.github.com/users/BaseMax/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/BaseMax/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/BaseMax/subscriptions', 'organizations_url': 'https://api.github.com/users/BaseMax/orgs', 'repos_url': 'https://api.github.com/users/BaseMax/repos', 'events_url': 'https://api.github.com/users/BaseMax/events{/privacy}', 'received_events_url': 'https://api.github.com/users/BaseMax/received_events', 'type': 'User', 'site_admin': False}, 'html_url': 'https://github.com/BaseMax/GameNetSystemPHP', 'description': 'A complete system for game nets that can manage the category of console devices and also have control over rent and receiving money. (PHP + Ajax javascript JSON)', 'fork': False, 'url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP', 'forks_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/forks', 'keys_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/teams', 'hooks_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/hooks', 'issue_events_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/issues/events{/number}', 'events_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/events', 'assignees_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/assignees{/user}', 'branches_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/branches{/branch}', 'tags_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/tags', 'blobs_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/languages', 'stargazers_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/stargazers', 'contributors_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/contributors', 'subscribers_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/subscribers', 'subscription_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/subscription', 'commits_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/contents/{+path}', 'compare_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/merges', 'archive_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/downloads', 'issues_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/issues{/number}', 'pulls_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/labels{/name}', 'releases_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/releases{/id}', 'deployments_url': 'https://api.github.com/repos/BaseMax/GameNetSystemPHP/deployments', 'created_at': '2021-01-14T20:25:17Z', 'updated_at': '2021-03-06T11:49:23Z', 'pushed_at': '2021-03-06T11:49:20Z', 'git_url': 'git://github.com/BaseMax/GameNetSystemPHP.git', 'ssh_url': 'git@github.com:BaseMax/GameNetSystemPHP.git', 'clone_url': 'https://github.com/BaseMax/GameNetSystemPHP.git', 'svn_url': 'https://github.com/BaseMax/GameNetSystemPHP', 'homepage': '', 'size': 1953, 'stargazers_count': 0, 'watchers_count': 0, 'language': 'PHP', 'has_issues': True, 'has_projects': True, 'has_downloads': True, 'has_wiki': True, 'has_pages': False, 'forks_count': 0, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'gpl-3.0', 'name': 'GNU General Public License v3.0', 'spdx_id': 'GPL-3.0', 'url': 'https://api.github.com/licenses/gpl-3.0', 'node_id': 'MDc6TGljZW5zZTk='}, 'forks': 0, 'open_issues': 0, 'watchers': 0, 'default_branch': 'main'}
27 |
28 | link = "https://github.com/" + item["full_name"]
29 | description = item["description"]
30 | language = item["language"]
31 | name = item["name"]
32 |
33 | items.append({
34 | "name": name,
35 | "language": language,
36 | "description": description,
37 | "link": link,
38 | })
39 |
40 | return items
41 |
42 | def get_all_repos(username, public_repos):
43 | pages = math.ceil(public_repos / 100)
44 |
45 | items = []
46 |
47 | for page in range(pages): # page starts from 0
48 | res = get_repos(username, page+1)
49 | items.extend(res)
50 | time.sleep(3)
51 |
52 | return items
53 |
54 | def group_by_languages(repos):
55 | languages = {}
56 | for repo in repos:
57 | if repo["language"] == "" or repo["language"] == None:
58 | lang = "other"
59 | else:
60 | lang = str(repo["language"])
61 |
62 | if lang not in languages:
63 | languages[lang] = []
64 |
65 | # TODO: remove language field from repo
66 | languages[lang].append(repo)
67 |
68 | return languages
69 |
70 | def generate_html(profile, groups):
71 | if profile["name"] == None:
72 | profile["name"] = profile["login"]
73 |
74 | print("
" + profile["name"] + " GitHub")
75 | print("" + profile["name"] + " GitHub
\n")
76 |
77 | for language, repos in groups.items():
78 |
79 | print(""+ language +"") # TODO: upper-case first char of language name
80 | print("")
81 |
82 | for repo in repos:
83 | print(" - ")
84 | print(" " + str(repo["name"]) + ": ")
85 | print(" " + str(repo["description"]) + "")
86 | print("
")
87 |
88 | print("
\n")
89 |
90 | if __name__ == "__main__":
91 | # check args
92 | if len(sys.argv) != 2:
93 | username="basemax"
94 | else:
95 | username = sys.argv[1]
96 |
97 | profile = check_user(username)
98 | if profile == None or profile == "" or profile == {} or profile == []:
99 | print("Error: User not found!")
100 | exit()
101 | elif "message" in profile and profile["message"] == "Not Found":
102 | print("Error: User not found!")
103 | exit()
104 |
105 | try:
106 | public_repos = profile["public_repos"]
107 | except KeyError:
108 | public_repos = 0
109 |
110 | if public_repos:
111 | all_repos = get_all_repos(username, public_repos)
112 |
113 | groups = group_by_languages(all_repos)
114 |
115 | # generate HTML output
116 | generate_html(profile, groups)
117 | else:
118 | print("Error: No public repositories or maybe network problem!")
119 |
--------------------------------------------------------------------------------
/output.html:
--------------------------------------------------------------------------------
1 | Max Base GitHub
2 | Max Base GitHub
3 |
4 | JavaScript
5 |
6 | -
7 | AirplaneTicketFirefox:
8 | The firefox addon for analyzing the purchase of Airplane tickets.
9 |
10 | -
11 | BrowserFeaturesJs:
12 | Tiny Library for browser features detection.
13 |
14 | -
15 | ChangeNumbersJs:
16 | Tiny Library for change number from a language in other language.
17 |
18 | -
19 | ChessDesktopElectron:
20 | Chess game with two player based on electron. (SOON)
21 |
22 | -
23 | ChessWeb:
24 | Chess game with two player. (SOON)
25 |
26 | -
27 | CopyClipboardJs:
28 | Tiny Library for copy text in clipboard.
29 |
30 | -
31 | CustomWindowsFormElectron:
32 | Custom Windows Frame with toolbar based on the electron.
33 |
34 | -
35 | detect-svg:
36 | javascript: Detect a string or buffer is SVG or not.
37 |
38 | -
39 | edb-sqlite-nodejs:
40 | edb-sqlite: Easy Database SQLite NodeJs
41 |
42 | -
43 | ExampleReactNativeUserList:
44 | A tiny project and sample to display a list of some users with avatar to fetch data from internet using Json structure.
45 |
46 | -
47 | FilterInputJs:
48 | Tiny and Powerful Library for limit an entry (text box,input) as number,string or more...
49 |
50 | -
51 | first-nodejs-apollo-mongodb-graphql:
52 | Good example for starter and learning GraphQL + Apollo Server + MongoDB + NodeJS easily and fastly. (based on Babel, Just in 10 minutes)
53 |
54 | -
55 | first-nodejs-graphql:
56 | Good example for starter and learning GraphQL + NodeJS easily and fastly. (Just in 10 minutes)
57 |
58 | -
59 | FirstElectron:
60 | Begin point and Getting start of the electron using node js.
61 |
62 | -
63 | FirstPWA:
64 | First Progressive Web App using Nodejs, HTML, CSS, Javascript.
65 |
66 | -
67 | FirstReactNative:
68 | A sample application created using React Native.
69 |
70 | -
71 | FirstVueRouter:
72 | Good example for starter and learning VueJs + Vue-Router easily and fastly. (Just in 10 minutes)
73 |
74 | -
75 | FixLanguageTypeJs:
76 | Tiny Library for fix problem of language selection in type text.
77 |
78 | -
79 | GoScrollJs:
80 | Tiny and Powerful Library for change place of the scroll and focus on element.
81 |
82 | -
83 | JavascriptWebcamDemo:
84 | Get Webcam frames in javascript and Watch Webcam Stream in video tag.
85 |
86 | -
87 | ko-engine:
88 | JavaScript template engine in just 50 LOC with supporting replacing variable, and JavaScript commands such as: if, else
89 |
90 | -
91 | LeafletExample:
92 | A web page to select the origin and destination location in the Map using Leaflet library.
93 |
94 | -
95 | LoadJs:
96 | Tiny Library for import and load the javascript file(code).
97 |
98 | -
99 | MapboxWebExample:
100 | A web page to select the origin and destination location for requesting a taxi.
101 |
102 | -
103 | MySqlExpressNodeJS:
104 | A great and simple website based on express with MySQL using.
105 |
106 | -
107 | namifyUrlJs:
108 | namifyUrl is tiny function to normalize a URL address string for you.
109 |
110 | -
111 | POSSF:
112 | Persian Open Source Software Festival (possf.ir)
113 |
114 | -
115 | RandomProxyJs:
116 | Tiny Library for get random proxy (free).
117 |
118 | -
119 | react-theme-switcher:
120 | A ReactJS-based switch to change style of page from Light to Dark or vice versa.
121 |
122 | -
123 | reactjs-todo-list:
124 | Build A Todo List App with React from Scratch (Including Hooks, LocalStorage)
125 |
126 | -
127 | reactjs-todolist:
128 | Build A Todo List App with React with Class (Including Hooks)
129 |
130 | -
131 | reactjs-todolist-redux:
132 | Build A Todo List App with React with Class (Including Hooks, Redux)
133 |
134 | -
135 | RookPolynomial:
136 | Algorithm to solving the rook polynomial questions.
137 |
138 | -
139 | RunBenchmarkJs:
140 | Tiny Library for benchmark javascript code.
141 |
142 | -
143 | Sarrafchi:
144 | Sarrafchi: A free website to get live currency rates in Free Market. (VueJS, SPA)
145 |
146 | -
147 | SHA256HashGeneratorJS:
148 | A repository for a tool allows you to generate the SHA256 hash of any string using Javascript.
149 |
150 | -
151 | TelegramCommunicationJS:
152 | A pure script to communicate with Telegram server without any Third-party tools and library.
153 |
154 | -
155 | TelegramDataSerialization:
156 | A tiny library to Serialization and Deserialization of the JS objects for Telegram.
157 |
158 | -
159 | TinyTimerJs:
160 | Tiny and Powerful Library for show time counter.
161 |
162 | -
163 | WebMoleGame:
164 | Mole game with HTML, CSS, JavaScript. (Web-based)
165 |
166 | -
167 | WebSnakeGame:
168 | Snake game with HTML, CSS, JavaScript. (Web-based)
169 |
170 | -
171 | YoutubeDownloaderNodeJS:
172 | Tiny NodeJS server-side script for download the youtube video based on expressJs.
173 |
174 |
175 |
176 | PHP
177 |
178 | -
179 | AnalyzeCombine:
180 | Analyze the combine with and without the repetition. (SOON)
181 |
182 | -
183 | API-Sarrafchi:
184 | Sarrafchi: API and web service to get live currency rates in Free Market.
185 |
186 | -
187 | AutoNewsSubmitter:
188 | Analyze SQL query and extract data of attachment files to insert new wordpress post.
189 |
190 | -
191 | bonbast-api:
192 | Dollar and Euro: Live irr exchange rates in free market - bonbast.com
193 |
194 | -
195 | CaptchaSolver:
196 | A tiny program to solve the thousand captcha image for testing the quality of the OCR. (Optical character recognition)
197 |
198 | -
199 | CharPHP:
200 | Useful functions for work with character, string in the PHP based application.
201 |
202 | -
203 | CoronaVirusDatabase:
204 | A repository for analyzing references and database of "gisanddata.maps.arcgis.com" website for Corona Virus.
205 |
206 | -
207 | crawler-news-currency-gold-coins:
208 | PHP Crawler to get Persian news related to currency coin and gold.
209 |
210 | -
211 | CurlDivideParsing:
212 | A tiny library and script to divide and split a remote file to download that step by step.
213 |
214 | -
215 | ExtractWord:
216 | Extract word(s) from the lines of the file.
217 |
218 | -
219 | film2serial-api-service-crawler:
220 | Crawling content and Movies of a Persian site using PHP.
221 |
222 | -
223 | FilterLines:
224 | A script for filtering the lines of the string with a specific format.
225 |
226 | -
227 | FreeSpringerBook:
228 | Download Free List book of Springer. [PDF format]
229 |
230 | -
231 | GameNetSystemPHP:
232 | A complete system for game nets that can manage the category of console devices and also have control over rent and receiving money. (PHP + Ajax javascript JSON)
233 |
234 | -
235 | GitHubBackupArchiver:
236 | A small script to download and archive all repositories of a account in GitHub with PHP.
237 |
238 | -
239 | GitHubVulnerabilityXSS:
240 | Archive of my experiments related to checking the security of GitHub and XSS vulnerability.
241 |
242 | -
243 | GooglePlayDatabaseMirror:
244 | Repository of designing a crawler script to update a mirror database from Google Play on PHP.
245 |
246 | -
247 | GooglePlayWebServiceAPI:
248 | Tiny script to crawl information of a specific application in the Google play/store base on PHP.
249 |
250 | -
251 | iapk-api:
252 | Web service source code for iapk.org website with Flight micro-framework for PHP.
253 |
254 | -
255 | iApkWebSystem:
256 | A PHP-base web system and site for displaying Android applications from Google Play Market and ... (along with 7 different languages)
257 |
258 | -
259 | IndiaMobileNumbers:
260 | India Mobile Number Database.
261 |
262 | -
263 | JPOPHP:
264 | JSON Parser Object PHP is a library for parsing the data in JSON format.
265 |
266 | -
267 | LimitLastLinePHP:
268 | Some tiny script to limit and remove the last line from input string using PHP.
269 |
270 | -
271 | LMPHP:
272 | Multi-language management and support on the site.
273 |
274 | -
275 | LoxblogCheckLinkExchange:
276 | A software to check Loxblog subdomains to detect smart Link Exchange box.
277 |
278 | -
279 | LoxblogSubdomains:
280 | List of some subdomains of Loxblog.com.
281 |
282 | -
283 | master_autoindex:
284 | a nice autoindex witch will allow you to run a download site very easily, it also has plugins
285 |
286 | -
287 | MathImprove:
288 | Modify and Improve math expressions.
289 |
290 | -
291 | MatPHP:
292 | The tiny library to calculating the matrices and operations. (Soon)
293 |
294 | -
295 | MegaDownloader:
296 | A script to download file from Mega.n and read it. (Using PHP)
297 |
298 | -
299 | MiniPHPArchiveCompressor:
300 | PHP software to compress and archive files with CLI console.
301 |
302 | -
303 | mysql-mariadb-rename-database-php:
304 | A tiny script to rename and move all of your table into a new MySQL/MriaDB database. (using pure PHP)
305 |
306 | -
307 | NetPHP:
308 | Useful functions for connecting to the network in the PHP based applications.
309 |
310 | -
311 | NginxWebAutoConfig:
312 | A sample script to automatically create nginx configuration file to set up all website on.
313 |
314 | -
315 | NumbersToWordsPHP:
316 | Tiny library to convert numbers to words. (SOON)
317 |
318 | -
319 | OmitKeepLines:
320 | Keeping or removing some part of lines from a text with special attributes.
321 |
322 | -
323 | PartitionArrayPHP:
324 | Partition an array into multiple arrays using PHP.
325 |
326 | -
327 | php-cli-apps:
328 | A simple, fast, and fun example for building command line apps in PHP.
329 |
330 | -
331 | php-jwt-example:
332 | PHP JWT example.
333 |
334 | -
335 | PHPAS:
336 | PHP Auto Style: A tool for format and beautify the style of PHP code with my style.
337 |
338 | -
339 | PHPBigBlueButtonAPI:
340 | A small tools to connect with BigBlueButton API and create room and join and more works.
341 |
342 | -
343 | PHPDomainParser:
344 | A tiny PHP-base library to parse domain address with a limit format allowed list.
345 |
346 | -
347 | PHPEDB:
348 | PHP Easy DB (Database) is an easy library to manage and control the database.
349 |
350 | -
351 | PHPJalaliDate:
352 | A tiny code to convert date into Jalali calendar using pure PHP code without extra library and code.
353 |
354 | -
355 | PHPMultiExplode:
356 | Tiny function to split a string by a array of the string for PHP.
357 |
358 | -
359 | PHPNiceCaptcha:
360 | Nice Captcha with good quality and security for keeping safe from bots using PHP.
361 |
362 | -
363 | PHPSMSAmazonAWS:
364 | A quick example of sending SMS with AWS SNS Using Amazon Service. (PHP)
365 |
366 | -
367 | PHPTinyCms:
368 | A mini, tiny content manager system (CMS) for general purpose and using for sites based on PHP.
369 |
370 | -
371 | PriceEequationCalculator:
372 | Tiny Calculator: Price equations allow you to automatically update your price with the price fluctuations.
373 |
374 | -
375 | proxycheckblock-whmcs-plugin:
376 | A simple WHMCS hook that checks if the client is using a proxy/VPN.
377 |
378 | -
379 | QuestionnaireSystem:
380 | A php-based system script such as vote system to submit form and store it, finally it will show some chart for watching it.
381 |
382 | -
383 | RamseyNumberResearchData:
384 | A archive repository for a research about colorize the Graphs.
385 |
386 | -
387 | RamseyNumbers:
388 | A research repository about the Ramsey numbers and explore the new data in the mathematics field to write an article using One Programming Language.
389 |
390 | -
391 | ReadableSubtitle:
392 | Make readable the subtitle files.
393 |
394 | -
395 | RouteDistance:
396 | Calculating the distance and duration of two point in the Map.
397 |
398 | -
399 | SampleCaptchaAPI:
400 | Implementing a captcha service using PHP and javascript to can use it anywhere such as Web.
401 |
402 | -
403 | SampleGameAPI:
404 | A tiny implement API for game apps with a web service using PHP.
405 |
406 | -
407 | SmartFilter:
408 | A Smart Filtering to keep and remove the character or words of the text. (SOON)
409 |
410 | -
411 | SMTPConnection:
412 | A script to connect to a SMTP server and send email using that.
413 |
414 | -
415 | StockExchangeCrawler:
416 | A crawler program to extract all of the data and the price for symbols in the global stock exchange.
417 |
418 | -
419 | TDesign-Math:
420 | Research Simple t-designs: A recursive construction for arbitrary t.
421 |
422 | -
423 | telegram-github-trend:
424 | A Tiny script to send message for new projects in GitHub Open Source - Free Software/GitHub Trending channel. (https://t.me/GitGpCh)
425 |
426 | -
427 | telegram-weather-bot:
428 | A telegram bot to sending weather information daily in some channels. (Using PHP and getting information from a API)
429 |
430 | -
431 | TelegramBotSample:
432 | Sample code for the telegram bot using PHP.
433 |
434 | -
435 | TelegramEntitiesParser:
436 | A program to parse and decode formatted part of the Telegram message text with UTF8 support.
437 |
438 | -
439 | TinyTelegramBotPHP:
440 | Small telegram bot library using PHP.
441 |
442 | -
443 | TrackPhoneAndroid:
444 | NotificationListener: An android application to track phone messages and Children to understand what message they receive. (using Java)
445 |
446 | -
447 | twitter-github-trend:
448 | A Tiny script to send tweet for new projects in GitHub Trending. (twitter.com/GithubTrend)
449 |
450 | -
451 | WebPostPHP:
452 | WebPostPHP is a PHP library to build HTML form to send POST request.
453 |
454 | -
455 | WorldCityJson:
456 | List of all city and country name with population number in json structure.
457 |
458 |
459 |
460 | Java
461 |
462 | -
463 | AndroidAutoUpdate:
464 | A tiny class to check automatically the Android application, if there are a newer version.
465 |
466 | -
467 | AndroidDeviceInformation:
468 | Get device information of android using a tiny and small Java file.
469 |
470 | -
471 | AndroidGoogleMaps:
472 | A sample android application with google maps for SDK 9.
473 |
474 | -
475 | AndroidMySMS:
476 | An android application to send sms for a cloud-based web service.
477 |
478 | -
479 | AndroidSnappMap:
480 | An example of an Android map app, Snapp app map rebuild.
481 |
482 | -
483 | AndroidWebView:
484 | A tiny android application to display a special webpage in default.
485 |
486 | -
487 | FirstFlutter:
488 | A sample application created using Flutter.
489 |
490 | -
491 | JavaHugeNumber:
492 | Big and Huge Number/Integer class implementation with supporting arithmetic operations + - * / %.
493 |
494 | -
495 | JavaJalaliCalendar:
496 | Tiny library and class for Jalali Calendar in Java with Gregorian calendar convertor.
497 |
498 | -
499 | JavaMyString:
500 | A tiny implementation of String class in java as final project.
501 |
502 | -
503 | MapBoxSampleAndroid:
504 | Example Map Android application based on MapBox.
505 |
506 | -
507 | RationalNumber:
508 | A Rational Number class with supporting of + - * / < > >= <= != =.
509 |
510 | -
511 | SmartTrackPhoneAndroid:
512 | NotificationListener: An android application to track phone messages and Children to understand what message they receive. (using Java)
513 |
514 | -
515 | TelegramAndroidConcept:
516 | A new Android application based on new telegram concepts design Using Android (Java) with support SDK 9 and up to more.
517 |
518 | -
519 | ToyLanguageTranslator:
520 | A java program to convert a new language to plain english language. (A exercise for String in advanced programming)
521 |
522 |
523 |
524 | HTML
525 |
526 | -
527 | api-webservice-COVID-19:
528 | API: Web Service Coronavirus Disease 2019 (COVID-19), Access to live data of outbreak of novel coronavirus disease 2019 using PHP.
529 |
530 | -
531 | BaseMax.Github.io:
532 | Max Base Personal Website.
533 |
534 | -
535 | BookDeweyList:
536 | List of book category and subject in Dewey List. (Book System)
537 |
538 | -
539 | bookpam:
540 | Python: BookPam is a typesetting system; it includes features designed for the production of technical documentation and book using Python.
541 |
542 | -
543 | BootstrapSample:
544 | All sample codes for bootstrap library.
545 |
546 | -
547 | CalculatorWeb:
548 | A online calculator using web technology based on Javascript.
549 |
550 | -
551 | CoronaVirusOutbreakAPI:
552 | A tiny and small program to crawler and analyze outbreak of COVID-19 in world and every country using PHP.
553 |
554 | -
555 | CoursesConfig:
556 | A php script for parsing an own configuration setting file and generate HTML page archive.
557 |
558 | -
559 | Direct2InternetPayment:
560 | A repository to write a program to connect to direct2internet payment page.
561 |
562 | -
563 | ExerciseCanvasJS:
564 | A repository to archive trying Canvas in javascript to handle event and methods of canvas.
565 |
566 | -
567 | FirstVuejs:
568 | Good example for starter and learning Vue Js easily and fastly. (Just in 10 minutes)
569 |
570 | -
571 | FoodMarketTheme:
572 | Food Market Theme: Theme for food market.
573 |
574 | -
575 | GitHubEventWeb:
576 | GitHub Universe 2020: GitHub Event Website Template
577 |
578 | -
579 | HostingWebsiteTheme:
580 | Rewrite a website template and combine idea of some different theme. CSS/HTML
581 |
582 | -
583 | live-exchange-rate-theme:
584 | A website template for live exchange rates in the free market.
585 |
586 | -
587 | LiveSwedishTranslatorJS:
588 | Translate Swedish chars to normal english form. (web, javascript)
589 |
590 | -
591 | LiveWebChatSocket:
592 | LiveWebChatSocket: A mini project for personal chat messaging in a cloud-based server using NodeJs(Javascript).
593 |
594 | -
595 | MatrixResearch:
596 | New results from research on matrices.
597 |
598 | -
599 | MetaCallWebsite:
600 | A repository for Website of MetaCall project, For supporting multi language.
601 |
602 | -
603 | MyAddressGoogleMaps:
604 | Get the string address of my current position (location) using google maps.
605 |
606 | -
607 | OneThemeBook:
608 | A web-based document or book for technical and programming with a minimal theme project using HTML, CSS, JS.
609 |
610 | -
611 | PikachuPixelCSS:
612 | Trying to create pixel art Pikachu in pure CSS. (Not SCSS, Without JS)
613 |
614 | -
615 | SmartLoading:
616 | A progress bar(loading) example that runs from 0 to 100.
617 |
618 | -
619 | TaxiBookingMap:
620 | A web page for booking a taxi with some feature to convert address to latitude and longitude to display the route on the map.
621 |
622 | -
623 | TaxiMapBooking:
624 | A web page for booking a taxi with some feature to display the route on the map with ability to setup waypoints.
625 |
626 | -
627 | TelegramJavascriptContest:
628 | A mirror for Telegram Javascript Contest Stage 1.
629 |
630 | -
631 | TextAnalyzerJS:
632 | A online and web-based tool to analyze the words of an input string.
633 |
634 | -
635 | TrigonometricFunctions:
636 | Analysis and thinking about trigonometry functions and how they work.
637 |
638 | -
639 | WebFindAPK:
640 | A sample bootstrap template for a android store website.
641 |
642 | -
643 | WebMessengerTheme:
644 | A web template for messenger based on HTML,CSS.
645 |
646 |
647 |
648 | Assembly
649 |
650 | -
651 | Assembly8086-8088:
652 | Assembly Project compatible with 8086/8088 microprocessor.
653 |
654 | -
655 | AssemblyX86:
656 | Tiny programs using Assembly based on X86.
657 |
658 | -
659 | CNOL:
660 | A new C standard library implementation intended for use on embedded systems. (SOON)
661 |
662 | -
663 | TinyCalculatorAssembly:
664 | Tiny Calculator with support of +, -, *, /...
665 |
666 |
667 |
668 | other
669 |
670 | -
671 | AwesomeCompiler:
672 | The Big list of the github, open-source compilers.
673 |
674 | -
675 | AwesomeCryptocurrency:
676 | Awesome/Repo List of the cryptocurrencies in the github.
677 |
678 | -
679 | AwesomeInterpreter:
680 | The Big list of the github, open-source interpreters.
681 |
682 | -
683 | AwesomeMoneroBase:
684 | Awesome/Fork List of monero base projects in the github.
685 |
686 | -
687 | BaseMax:
688 | Max Base: A repository in GitHub for testing to display a box at main page of Profile.
689 |
690 | -
691 | CodingBootcampJS:
692 | Our Coding BootCamp JavaScript 2020 (10 days)
693 |
694 | -
695 | CPP4Beginners:
696 | List of site references and useful sources for beginners of c++ programming language.
697 |
698 | -
699 | FirstMaple:
700 | A repository to begin learning programming with Maple.
701 |
702 | -
703 | FirstWebAssembly:
704 | Getting Started With WebAssembly technology.
705 |
706 | -
707 | GAPBeginner:
708 | A repository to introduce GAP system for beginners.
709 |
710 | -
711 | GitHubMirror:
712 | GitHubMirrorList: List of mirrors of GitHub.
713 |
714 | -
715 | MathematicalProposition:
716 | Examines and analyzes mathematical propositions.
717 |
718 | -
719 | MaxYoutube:
720 | Max Base: A repository for Max Base Youtube Channel.
721 |
722 | -
723 | PantelMessenger:
724 | The Demo of Pantel Messenger for global connection.
725 |
726 | -
727 | phpMusselBook:
728 | Documentation for phpMussel.
729 |
730 | -
731 | ReactCalculator:
732 | The calculator project for parse the values with general operators. (Soon)
733 |
734 | -
735 | SubmatricesCountMath:
736 | Research: The submatrices character count problem: an efficient solution using separable values.
737 |
738 |
739 |
740 | C++
741 |
742 | -
743 | BankCustomerCpp:
744 | Prepare a easy test and practice for university students C++
745 |
746 | -
747 | BankSystemCLI:
748 | A tiny and CLI program for Bank system with 2 different user access using C.
749 |
750 | -
751 | BoostAsioChat:
752 | Simple Chat Application using Boost Asio, based on Cpp.
753 |
754 | -
755 | CalculatorPolynomial:
756 | Tiny program as a calculator for the math expression based on regular expression.
757 |
758 | -
759 | CheckNumber:
760 | Check the number and calculate the gcd and lcm and perfect.
761 |
762 | -
763 | CheckReverseString:
764 | Tiny Program to check the reverse of the string using C/C++.
765 |
766 | -
767 | CombiningElements:
768 | Tiny program to display all of the element combinations.
769 |
770 | -
771 | CppFileUse:
772 | Sample project for working with the file in cpp with add, search, delete, edit.
773 |
774 | -
775 | EducationGame:
776 | A sample game based on CLI cpp for a education person.
777 |
778 | -
779 | FirstMysqlUDF:
780 | Sample repository to extend MySQL server by develop additional function. (Mysql UDF)
781 |
782 | -
783 | JalaliCalendarChecker:
784 | Tiny function to check the jalali calendar.
785 |
786 | -
787 | MatrixFunction:
788 | The Cramer, Determinant, Coefficient, Multiplication for the matrix.
789 |
790 | -
791 | MDPlus:
792 | A Markdown Editor with some new feature to support RTL languages.
793 |
794 | -
795 | MinesweeperCLI:
796 | Simple minesweeper game developed using C++ in the CLI mode. (Soon)
797 |
798 | -
799 | N-QueenGenetic:
800 | Solving N-Queen problem using Genetic Algorithm.
801 |
802 | -
803 | OmbreOld:
804 | Ombre - Digital Cash For High-Confidential Transactions
805 |
806 | -
807 | PopularQuestions:
808 | Some popular questions in programming field for teacher.
809 |
810 | -
811 | PowerHash:
812 | Design and development Crypto algorithms.
813 |
814 | -
815 | simple-jit-compiler:
816 | This project is designed to illustrate the mechanism used in JIT compilers development.
817 |
818 | -
819 | SquareRoot:
820 | Own function to calc the square root of a number.
821 |
822 | -
823 | TinyCalculator:
824 | Tiny Calculator with support of +, -, *, /, ^, sin, cos, tan...
825 |
826 |
827 |
828 | Python
829 |
830 | -
831 | BinaryTreeDiagram:
832 | A software to analyze a octal number and generate formula to produce graph. (Phd Project in mathematics field, Article)
833 |
834 | -
835 | BinaryTreeDiagramDrawing:
836 | A software to analyze a octal number and generate formula to produce graph. (Phd Project in mathematics field, Article)
837 |
838 | -
839 | CFG2CNF:
840 | Python program to convert a Context Free Grammar to Chomsky Normal Form.
841 |
842 | -
843 | ColorConvertPy:
844 | Tiny library to convert various colored units. (rgb, hex)
845 |
846 | -
847 | ContestQuestions:
848 | Archive of my programs code for contest questions.
849 |
850 | -
851 | DotWhitespace:
852 | DotWhitespace is an esoteric programming language using Python.
853 |
854 | -
855 | EmailAddressScanner:
856 | Email Address Scanner is a free and useful service to detect email address then really exists or not.
857 |
858 | -
859 | FirstSelenium:
860 | Some sample codes for using selenium in Python just for fun.
861 |
862 | -
863 | FlaskSample:
864 | A sample project based on python and flask.
865 |
866 | -
867 | GithubAnalyze:
868 | Analyze and use the Github API with some tiny example.
869 |
870 | -
871 | GoogleSearch:
872 | Search in the google and parse the results using python.
873 |
874 | -
875 | ImageRecognition:
876 | Recognition of the images includes train and tests based on Python.
877 |
878 | -
879 | ImageRecognitionAI:
880 | Recognition of the images with artificial intelligence includes train and tests based on Python.
881 |
882 | -
883 | InternGoogleInterview:
884 | Google Interview Experience (For Software Engineering Intern)
885 |
886 | -
887 | InterviewFAANG:
888 | Solving Facebook interview questions.
889 |
890 | -
891 | LinkShortener:
892 | Link Shortener is a free and useful service to create a short link then redirect to other links.
893 |
894 | -
895 | mathematical-imaging-vision:
896 | python mathematical imaging vision
897 |
898 | -
899 | MiniCalculatorInterpreter:
900 | Tiny calculator interpreter with supporting Mathematical functions using Python.
901 |
902 | -
903 | MongoDbPython:
904 | Sample python script to connect mongo database.
905 |
906 | -
907 | PythonDataExcelReader:
908 | Just a tiny program to read Excel rows as array in Python and write into JSON format.
909 |
910 | -
911 | PyTreeView:
912 | pyTree is a python class and library to display Tree (Tree View) from array, object, or JSON.
913 |
914 | -
915 | RamseyNumberGraph:
916 | The research about Ramsey Number based on Python.
917 |
918 | -
919 | RedditBot:
920 | Automation bot to sign in to Reddit.com website using python selenium.
921 |
922 | -
923 | SimpleDjangoSignals:
924 | Sample repository to lean Django Signals in small script Using Python.
925 |
926 | -
927 | StackoverflowCrawler:
928 | A web crawler which crawls the stackoverflow website.
929 |
930 | -
931 | TelegramClientMTProto:
932 | A tiny smart bot to reply my new messages in the telegram.
933 |
934 | -
935 | TwitterBotCrawler:
936 | A bot to login in Twitter and process page with selenium using Python.
937 |
938 |
939 |
940 | C
941 |
942 | -
943 | CalendarLibrary:
944 | The powerful library for display and convert calendar and handle the date units. (Soon)
945 |
946 | -
947 | CAPIs:
948 | A sample and tiny RESTful API based on C programming and a fastcgi library.
949 |
950 | -
951 | ColorizeText:
952 | Some ways for colorizing the text in different operating system.
953 |
954 | -
955 | compiler-university-project:
956 | Implement an university compiler using Flex, Bison in the C programming language
957 |
958 | -
959 | ConvertCalendar:
960 | A tiny and powerful library for converting calendar date units. (gregorian, jalali)
961 |
962 | -
963 | cUrlC:
964 | Sample cUrl program to send request and recive response using C.
965 |
966 | -
967 | dcat:
968 | Implementation cat unix tools using pure C programming language. cat is a standard Unix utility that reads files sequentially, writing them to standard output. (cat: concatenate files)
969 |
970 | -
971 | DecodeQueryStringC:
972 | A tiny library for decode value of the query string using c with utf8 support and html entities.
973 |
974 | -
975 | FirstSFML:
976 | Begin point and getting start to SFML using CPP.
977 |
978 | -
979 | Gic:
980 | Git Control , Management the repositories easily in our directory. (SOON)
981 |
982 | -
983 | GuessPasswordC:
984 | A small program to guess password for some crackers who want to enjoy by trying...
985 |
986 | -
987 | HashMapC:
988 | A tiny library for using easily HashMap, arraylist in the C.
989 |
990 | -
991 | HEXVE:
992 | Display and check the Hex Codes of the file(s). (SOON)
993 |
994 | -
995 | jdate:
996 | A free software for Jalali and shamsi date to get current date in jalali calendar.
997 |
998 | -
999 | MongoCSample:
1000 | Sample code for connecting to the MongoDB.
1001 |
1002 | -
1003 | MysqlCalc:
1004 | A MySQL/MariaDB module and plugin to calculate the formula and calculate mathematical expression in SQL Query.
1005 |
1006 | -
1007 | OSDetect:
1008 | A tiny header file for detects the operating system in C based program.
1009 |
1010 | -
1011 | pi:
1012 | Small program in C language to calculate pi value.
1013 |
1014 | -
1015 | RamseyNumber:
1016 | The research about Ramsey Number based on C.
1017 |
1018 | -
1019 | RamseyNumberAnalyzer:
1020 | A program to analyze and check a specific colorize in Ramsey Number R(5, 5).
1021 |
1022 | -
1023 | RandStringC:
1024 | Tiny program for generate random characters using C
1025 |
1026 | -
1027 | SecureRandStringC:
1028 | Tiny library for generate a secure random characters using C. (SOON)
1029 |
1030 | -
1031 | ShowAli:
1032 | Display the "Ali" name as art and pattern using * character.
1033 |
1034 | -
1035 | SmallCalculator:
1036 | A small calculator to parse and execute mathematical expressions based on C, Flex, Bison.
1037 |
1038 | -
1039 | String2CString:
1040 | A tiny program to convert a file contents to C string with supporting multi-lines...
1041 |
1042 | -
1043 | TestAVR:
1044 | None
1045 |
1046 | -
1047 | tg:
1048 | telegram-cli
1049 |
1050 | -
1051 | tgl:
1052 | telegram library
1053 |
1054 | -
1055 | TinyShell:
1056 | Tiny shell is a command-line interface (CLI) to execute commands in the system and to manage system. (SOON)
1057 |
1058 | -
1059 | tl-parser:
1060 | Parse tl scheme to tlo.
1061 |
1062 | -
1063 | UnixLS:
1064 | Implementation of the ls command... (SOON)
1065 |
1066 | -
1067 | ushell:
1068 | ubash is a simple implementation of a shell in C using 100 LOC.
1069 |
1070 | -
1071 | ValidationParentheses:
1072 | Tiny C program to validation Parentheses () [] {} symbols.
1073 |
1074 | -
1075 | WorldAlgorithms:
1076 | Analyzing popular algorithms from the world of algorithms ...
1077 |
1078 | -
1079 | ZMiniCArchiveCompressor:
1080 | C software to compress and archive files with CLI console. (miniz)
1081 |
1082 |
1083 |
1084 | Objective-C
1085 |
1086 | -
1087 | cMD5:
1088 | Implement MD5 encryption using c without openssl and extra library.
1089 |
1090 |
1091 |
1092 | CSS
1093 |
1094 | -
1095 | CustomWebCheckbox:
1096 | An example of a make checkbox design on the web.
1097 |
1098 | -
1099 | CustomWebRadioButton:
1100 | An example of a make radio-button design on the web.
1101 |
1102 | -
1103 | DisplayStructureElements:
1104 | Display the structure of the elements in web template.
1105 |
1106 | -
1107 | Fa.MaxBase.org:
1108 | Max Base: A repository for my Main website.
1109 |
1110 | -
1111 | MaxBase.org:
1112 | Max Base: A repository for my Main website. (English version)
1113 |
1114 | -
1115 | MoloxBlogTheme:
1116 | MoloxBlog is a free blog template for personal using...
1117 |
1118 | -
1119 | MultiLingualJekyll:
1120 | A sample multi-language blog using Jeykyll and GitHub Pages.
1121 |
1122 | -
1123 | NaliMail:
1124 | NaliMail is a free service to manage email web-based client.
1125 |
1126 | -
1127 | OmbreWebV1:
1128 | A repository for Ombre(Ombre is a cryptonote currency) website.
1129 |
1130 | -
1131 | PlayPiano:
1132 | Implement and simulate piano on web page.
1133 |
1134 | -
1135 | ResetCSS:
1136 | Reset CSS Stylesheet to reduce browser inconsistencies.
1137 |
1138 | -
1139 | SubscribeDialog:
1140 | Display the dialog for submit email.
1141 |
1142 |
1143 |
1144 | Go
1145 |
1146 | -
1147 | DiskAnalyst:
1148 | Analyze, process and check the disk and files. (SOON)
1149 |
1150 | -
1151 | go-lexer-token-simple:
1152 | Simple Go lexer: Lex own syntax and read it's from file.
1153 |
1154 | -
1155 | IrisWebGo:
1156 | Sample Website With Cookie, Database, Template View Using Go. (Soon)
1157 |
1158 | -
1159 | PHPCodeOptimizer:
1160 | Optimize And Minify PHP Code.
1161 |
1162 |
1163 |
1164 | Dart
1165 |
1166 | -
1167 | Flutter-Chat-Messaging-App-Theme:
1168 | Building a messing/chat app UI using Flutter that runs both Android and iOS devices.
1169 |
1170 | -
1171 | Flutter-Food-Ordering-App:
1172 | We design two pages one is the home page and another one is details page that will help you to design clear interfaces for food delivery app faster and easier.
1173 |
1174 |
1175 |
1176 | Shell
1177 |
1178 | -
1179 | freebsd-i3-configuration:
1180 | Configuration for i3 in my PC/personal system at FreeBSD.
1181 |
1182 | -
1183 | i3-configuration:
1184 | Configuration for i3 in my PC/personal system at Arch Gnu/Linux.
1185 |
1186 | -
1187 | MultiTelegram:
1188 | Install and work with multi telegram account on one system, without copy or change source.
1189 |
1190 |
1191 |
1192 | GAP
1193 |
1194 | -
1195 | GapPackage:
1196 | A sample package based on GAP.
1197 |
1198 |
1199 |
1200 | C#
1201 |
1202 | -
1203 | HiDotNetCore2.2:
1204 | A repository to analyze and check the sample project based on Dot.net Core 2.2.
1205 |
1206 | -
1207 | OLEDB:
1208 | Simple and compact class library for working with the MS OLE Database.
1209 |
1210 |
1211 |
1212 | R
1213 |
1214 | -
1215 | isPrime:
1216 | Sample code and project to calculate or check the prime numbers.
1217 |
1218 |
1219 |
1220 | MATLAB
1221 |
1222 | -
1223 | MatlabMatrixProject:
1224 | Scan and find the biggest number's value of the a matrix.
1225 |
1226 |
1227 |
1228 | QML
1229 |
1230 | -
1231 | MiniArchiveCompressor:
1232 | C++ software to compress and archive files with Qt based UI. (Currently user-interface ready)
1233 |
1234 |
1235 |
1236 | Smali
1237 |
1243 |
1244 | Ruby
1245 |
1246 | -
1247 | RandomProxyRuby:
1248 | Tiny Library for get random proxy (free).
1249 |
1250 | -
1251 | WebSinatra:
1252 | The Sample web project using ruby sinatra.
1253 |
1254 |
1255 |
1256 | TeX
1257 |
1258 | -
1259 | TexSample:
1260 | A guide document with some example file for Tex, Latex.
1261 |
1262 |
1263 |
1264 |
--------------------------------------------------------------------------------