Difference between revisions of "Summer of Code/2017"

From Sugar Labs
Jump to navigation Jump to search
(39 intermediate revisions by 12 users not shown)
Line 1: Line 1:
 +
== Sponsored Projects ==
 +
 +
[https://summerofcode.withgoogle.com/organizations/5544862897143808/ Sugar Labs at GSoC]
 +
 
== Project Ideas ==
 
== Project Ideas ==
  
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
+
{| border="1" cellpadding="3" style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
|-style="background:#787878; color: white;"
+
|-style="background:#787878; color: white;"
!  !! Title !! Mentor !! Project
+
!Title
 +
!Mentor
 +
!Project
 +
 
  
 
|-
 
|-
!valign=top | ||valign=top width="15%" style="background:#e3e4e5;" |Internationalization and Localization ||valign=top width="15%" | Chris Leonard ||align=left valign=top|
+
| valign=top width="15%" style="background:#e3e4e5;" |Internationalization and Localization
;Brief explanation: A goal of Sugar Labs is to enable our users to experience Sugar in their own native language. See [[Translation_Proposal#ToDo:|Translation Proposal To Do List]] for details.
+
| valign=top width="15%" |Chris Leonard
 +
| align=left valign=top |
 +
;Brief explanation: A goal of Sugar Labs is to enable our users to experience Sugar in their own native language. See [[Translation_Proposal#ToDo:|Translation Proposal To Do List]] for details.  See [[Translation Team]] for framework description.
 
;Expected results: Work flow improvements for i18n
 
;Expected results: Work flow improvements for i18n
 
;Knowledge prerequisites: Some knowledge of Pootle; some scripting experience; Python and JavaScript
 
;Knowledge prerequisites: Some knowledge of Pootle; some scripting experience; Python and JavaScript
 +
  
 
|-
 
|-
!valign=top | ||valign=top width="15%" style="background:#e3e4e5;" |New backend server for Turtle Blocks and Music Blocks ||valign=top width="15%" | Walter Bender<br>Vikram Ahuja ||align=left valign=top|
+
| valign=top width="15%" style="background:#e3e4e5;" |New Back-end Server for Turtle Blocks and Music Blocks<br>[[File:Git logo.png|90px|thumb|center]]
 +
| valign=top width="15%" | Walter Bender<br>Vikram Ahuja<br>Ignacio Rodriguez
 +
| align=left valign=top |
 
;Brief explanation: Last year we sponsored [http://vikramahujagsoc.blogspot.com/ an exploration] of using a git-like back end for projects so that they could be cloned, forked, etc. This summer we would like to implement and deploy this new approach.
 
;Brief explanation: Last year we sponsored [http://vikramahujagsoc.blogspot.com/ an exploration] of using a git-like back end for projects so that they could be cloned, forked, etc. This summer we would like to implement and deploy this new approach.
 
;Expected results: Deployment of "git" back end.
 
;Expected results: Deployment of "git" back end.
 
;Knowledge prerequisites: Knowledge of Git, JavaScript, server-side skills
 
;Knowledge prerequisites: Knowledge of Git, JavaScript, server-side skills
 +
  
 
|-
 
|-
!valign=top | ||valign=top width="15%" style="background:#e3e4e5;" |Going beyond Equal Temperament in Music Blocks ||valign=top width="15%" | Walter Bender<br>Devin Ulibarri||align=left valign=top|
+
| valign=top width="15%" style="background:#e3e4e5;" |Going Beyond Equal Temperament in Music Blocks<br>[[File:Music-Blocks.png|90px|thumb|center]]
;Brief explanation: Most modern music systems are designed around [https://en.wikipedia.org/wiki/Equal_temperament equal temperament]. But there are many ways to [https://en.wikipedia.org/wiki/Musical_temperament chose and tune notes] in a musical system that offer different expressive characteristics.
+
| valign=top width="15%" | Walter Bender<br>Devin Ulibarri
 +
| align=left valign=top |
 +
;Brief explanation: Most modern music systems are designed around [https://en.wikipedia.org/wiki/Equal_temperament equal temperament]. But there are many ways to [https://en.wikipedia.org/wiki/Musical_temperament chose and tune notes] in a musical system that offer different expressive characteristics.  See also [https://github.com/walterbender/musicblocks/issues Music Blocks issues].
 
;Expected results: Extend Music Blocks such that different approaches to temperament are available to the user.
 
;Expected results: Extend Music Blocks such that different approaches to temperament are available to the user.
 
;Knowledge prerequisites: Knowledge of JavaScript, music theory
 
;Knowledge prerequisites: Knowledge of JavaScript, music theory
  
|}
+
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Giving Sugar Labs Website a New Look
 +
| valign=top width="15%" | Ignacio Rodriguez<br>Samson Goddy<br>Tymon Radzik
 +
Hrishi Patel
 +
| align=left valign=top |
 +
;Brief explanation: Sugar Labs would like a new look for its [https://github.com/sugarlabs/www-sugarlabs homepage], with the goals of making it more attractive and easier to explore (See link to get more information concerning the [https://github.com/sugarlabs/www-sugarlabs/blob/master/STRUCTURE.md proposed homepage]).
 +
;Expected results: Deployment of a new website for Sugar Labs
 +
;Knowledge prerequisites: JavaScript, HTML, CSS, Ruby, JQuery, jeckyl, and/or django
 +
 
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Maintenance of activities.sugarlabs.org (ASLO)
 +
| valign=top width="15%" | Tony Anderson
 +
| align=left valign=top |
 +
;Brief explanation: http://activities.sugarlabs.org/ is the Sugar Labs app store, where activities are hosted and downloaded.  Some maintenance tasks are needed.  Sugar uses activities.sugarlabs.org in Software Update in My Settings, and has a link to it in the Browse default page.
 +
;Expected results: Fix downloads by non-Sugar browsers; old versions are offered.  Fix downloads by new versions of Sugar; old versions are offered.  Make activity maintainer take-over easier; not easy at the moment.  Adopt the new look from the new [http://www.sugarlabs.org/ sugarlabs.org] site; theme now is quite old.  Show new activity.info metadata such as source repository.  Other problems listed in [http://bugs.sugarlabs.org bugs.sugarlabs.org] against component [https://bugs.sugarlabs.org/query?status=accepted&status=assigned&status=new&status=reopened&component=activities.sugarlabs.org&col=id&col=summary&col=priority&col=status&col=owner&col=type&col=milestone&order=priority activities.sugarlabs.org].  Semi-automate common maintenance tasks; like adding a new Sugar version.  Document future maintenance on the Wiki.
 +
;Knowledge prerequisites: PHP, MySQL, Python, Apache, cron, PHP-Cake, JavaScript, HTML, CSS, and git.  See [https://github.com/sugarlabs/aslo source code]. 
 +
 
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |School Management Backend
 +
| valign=top width="15%" | Walter Bender
 +
| align=left valign=top |
 +
;Brief explanation: Sugar is a desktop and a collection of apps. It has great internal features for collaboration and journaling. But it doesn't have any mechanism for managing courses/curriculum/administrative functions commonly found in "school management systems". It could be possible to overlay on top of Sugar web-services such a toolkit.
 +
;Expected results: a framework, a core implementation, and documentation for expanding the implementation.
 +
;Knowledge prerequisites: Python, django
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Timbre Widget for Music Blocks<br>[[File:Music-Blocks.png|90px|thumb|center]]
 +
| valign=top width="15%" | Walter Bender<br>Devin Ulibarri
 +
| align=left valign=top |
 +
;Brief explanation: Ayush Kumar designed a widget for designing voices for Music Blocks (See [http://kuckuck.treehouse.su:5000/task/5948636577923072/instance/5685003230904320/]). This project would be to implement the design.
 +
;Expected results: a working widget for Music Blocks for manipulating Timbre.
 +
;Knowledge prerequisites: JavaScript
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |{{anchor|sugdash}}Sugarizer Server Dashboard<br>[[File:Dashboard server.png|90px|thumb|center]]
 +
| valign=top width="15%" | Lionel Laské<br>Michaël Ohayon
 +
|align=left valign=top |
 +
 
 +
;Brief explanation: [http://sugarizer.org Sugarizer] is a way to use Sugar on any device using web technologies (HTML5/JavaScript). Strictly speaking, Sugarizer is not a port of Sugar. Sugarizer is based on Sugar Web library, which mimics the Sugar UI using HTML5 and CSS3 and reproduces Sugar views (Home, List, ...). Sugarizer reimplements features of Sugar Core (datastore and journal) in JavaScript and integrates activities written for Sugar in Sugar Web. The goal of this specific project is to create the "Sugarizer Server Dashboard". This feature will require an enhancement of the existing Sugarizer Server API specifically to integrate a real authentication mechanism.
 +
 
 +
;Expected results: Sugarizer Server Dashboard is a web admin console for Sugarizer Server. The Dashboard will allow to manage and analyze all activity on a Sugarizer Server. Dashboard features will include:
 +
* Users: how many users has been registered on the server, how many users currently connected, top users on the server, last users connection, create/edit/remove an user.
 +
* Journal: how many Journals and how many entries in Journal on the server, last Journal and last entries, size of Journals, top Journals, edit a journal (see/update/remove) entries.
 +
* Application: how many applications are available on the server, change application visibility from Client, update order and way to appear in favorite view.
 +
* Graphic and request: display graphics and report on previous data.
 +
 
 +
;Knowledge prerequisites: HTML5/JavaScript, bootstrap, node.js, MongoDB
 +
;How to start: Clone the [https://github.com/llaske/sugarizer Sugarizer repository], then install Sugarizer server using instructions [https://github.com/llaske/sugarizer/blob/master/README.md#server here], finally explore the [http://sugarizer.org/apidoc/ Sugarizer Server API] and think about way to implement dashboard features with existing API.
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |{{anchor|sugmdm}}Sugarizer Deployement and Management Tool for Android<br>[[File:Sugarizermdmtool.png|90px|thumb|center]]
 +
| valign=top width="15%" | Michaël Ohayon<br>Lionel Laské
 +
|align=left valign=top |
 +
 
 +
;Brief explanation: [http://sugarizer.org Sugarizer] is a way to use Sugar on any device using web technologies. Sugarizer can be deployed on many devices including Android phones and tablets. The goal of this specific project is to create the "Sugarizer Deployment and Management Tool for Android".
 +
 
 +
;Expected results: Sugarizer Server Deployment and Management Tool is a GUI Tool working on GNU/Linux, Mac and Windows to deploy and configure Android devices using ADB (Android Debug Bridge).
 +
* Inventory : Collect and store devices data like serial number, os version, device name, installed applications, current Android launcher and Sugarizer availability.
 +
* Application Manager : Install or remove applications using APK files.
 +
* File Manager : Add / Remove files
 +
* Input Manager : Click / Touch coordinates on the screen, launch applications to perform automations.
 +
* Scenario Writer : Allow '''non developpers'''  to create sequences to perform all the steps previously defined.
 +
 
 +
;Knowledge prerequisites: Java and JavaFX / Kotlin and TornadoFX
 +
;How to start: Create a Java or Kotlin project using Intellij and display a window using JavaFX or TornadoFX. Then add https://github.com/vidstige/jadb and display connected android devices in the window.
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |User Manual for Music Blocks<br>[[File:Music-Blocks.png|90px|thumb|center]]
 +
| valign=top width="15%" | Walter Bender<br>Devin Ulibarri
 +
Hrishi Patel
 +
| align=left valign=top |
 +
;Brief explanation: We have a [https://github.com/walterbender/musicblocks/blob/master/guide/README.md Guide], but we really need something a bit more polished as a user manual.
 +
;Expected results: A website and PDF document that can be bound.
 +
;Knowledge prerequisites: Knowledge of music theory, writing skills
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Just say no to GTK2
 +
| valign=top width="15%" | Ignacio Rodriguez<br>Sam Parkinson
 +
Abhijit Patel
 +
| align=left valign=top |
 +
;Brief explanation: GTK2 and GST0.10 are end of life. We need to upgrade the remaining activities with these dependencies.
 +
;Expected results: New versions of Turtle, Speak, Chat, Record, and a dozen others
 +
;Knowledge prerequisites: Knowledge of GTK, GST, and Python
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Develop Activity<br>AKA Pippy JS, Taller del Artesano 2
 +
| valign=top width="15%" |Sebastian Silva
 +
| align=left valign=top |
 +
;Brief explanation: We don't have a Javascript IDE for writing activities. This is a proposal to collaborate in making one. It would have templates for writing Javascript and Python.
 +
;Expected results: New activity capable of making new activities, runnable in Web and Sugarizer
 +
;Knowledge prerequisites: Python, Javascript, HTML5, CSS
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Debian SugarBlend
 +
A.K.A: Harmonic Distribution, Deployment Platform
 +
| valign=top width="15%" |Sebastian Silva<br>Jonas Smedegaard
 +
| align=left valign=top |
 +
;Brief explanation: Debian is a base for many educational derivative distribution. We would like to make a SugarBlend that is a good base for local integrators.  See https://wiki.debian.org/SugarBlend and [[Debian]].
 +
;Expected results: Debian SugarBlend of upcoming Debian 9 (Stretch)
 +
;Knowledge prerequisites: Debian packaging, Linux system, Shell scripting
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Sugar on Raspberry Pi
 +
| valign=top width="15%" |Walter Bender
 +
Hrishi Patel
 +
Abhijit Patel
 +
| align=left valign=top |
 +
;Brief explanation: Raspberry Pi is a popular tool with the Maker Movement. Sugar runs quite well on RPi3, but it is in need of some love.
 +
;Expected results: An image for RPi, which boots to a Sugar desktop environment, and is suitable for inclusion on the [https://www.raspberrypi.org/downloads/ RPi download page].
 +
;Knowledge prerequisites: Debian and/or Fedora packaging, Linux system, Shell scripting
 +
 
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Music Blocks for Mobile<br>[[File:Music-Blocks.png|90px|thumb|center]]
 +
| valign=top width="15%" | Walter Bender<br>Devin Ulibarri
 +
| align=left valign=top |
 +
;Brief explanation: Music Blocks was written for a browser, not mobile. It would be great to have a version native to mobile.
 +
;Expected results: Working version on Android/and/or iOS. Some UI adjustments will be necessary.
 +
;Knowledge prerequisites: Knowledge of JavaScript/Codrova/React and/or Swift.
 +
 
 +
|
 +
 
 +
|-
 +
| valign=top width="15%" style="background:#e3e4e5;" |Collab Rethink<br>
 +
| valign=top width="15%" | Abhijit Patel<br>Walter Bender
 +
| align=left valign=top |
 +
;Brief explanation: Sugar collaboration uses a deprecated library, python-telepathy, which we no longer wish to maintain. We need to upgrade Sugar collab using something better
 +
;Expected results: Working version of revised collab system.
 +
* Refactored presenceservice
 +
* Common Collabwrapper module for all sugar activities.
 +
 
 +
;Knowledge prerequisites: python, prior knowledge of networking. knowledge of telepathy might be useful.
 +
|
 +
}|}|}|}

Revision as of 10:42, 10 September 2017

Sugar Labs at GSoC

Project Ideas

Title Mentor Project


Internationalization and Localization Chris Leonard
Brief explanation
A goal of Sugar Labs is to enable our users to experience Sugar in their own native language. See Translation Proposal To Do List for details. See Translation Team for framework description.
Expected results
Work flow improvements for i18n
Knowledge prerequisites
Some knowledge of Pootle; some scripting experience; Python and JavaScript


New Back-end Server for Turtle Blocks and Music Blocks
Git logo.png
Walter Bender
Vikram Ahuja
Ignacio Rodriguez
Brief explanation
Last year we sponsored an exploration of using a git-like back end for projects so that they could be cloned, forked, etc. This summer we would like to implement and deploy this new approach.
Expected results
Deployment of "git" back end.
Knowledge prerequisites
Knowledge of Git, JavaScript, server-side skills


Going Beyond Equal Temperament in Music Blocks
Music-Blocks.png
Walter Bender
Devin Ulibarri
Brief explanation
Most modern music systems are designed around equal temperament. But there are many ways to chose and tune notes in a musical system that offer different expressive characteristics. See also Music Blocks issues.
Expected results
Extend Music Blocks such that different approaches to temperament are available to the user.
Knowledge prerequisites
Knowledge of JavaScript, music theory


Giving Sugar Labs Website a New Look Ignacio Rodriguez
Samson Goddy
Tymon Radzik

Hrishi Patel

Brief explanation
Sugar Labs would like a new look for its homepage, with the goals of making it more attractive and easier to explore (See link to get more information concerning the proposed homepage).
Expected results
Deployment of a new website for Sugar Labs
Knowledge prerequisites
JavaScript, HTML, CSS, Ruby, JQuery, jeckyl, and/or django


Maintenance of activities.sugarlabs.org (ASLO) Tony Anderson
Brief explanation
http://activities.sugarlabs.org/ is the Sugar Labs app store, where activities are hosted and downloaded. Some maintenance tasks are needed. Sugar uses activities.sugarlabs.org in Software Update in My Settings, and has a link to it in the Browse default page.
Expected results
Fix downloads by non-Sugar browsers; old versions are offered. Fix downloads by new versions of Sugar; old versions are offered. Make activity maintainer take-over easier; not easy at the moment. Adopt the new look from the new sugarlabs.org site; theme now is quite old. Show new activity.info metadata such as source repository. Other problems listed in bugs.sugarlabs.org against component activities.sugarlabs.org. Semi-automate common maintenance tasks; like adding a new Sugar version. Document future maintenance on the Wiki.
Knowledge prerequisites
PHP, MySQL, Python, Apache, cron, PHP-Cake, JavaScript, HTML, CSS, and git. See source code.


School Management Backend Walter Bender
Brief explanation
Sugar is a desktop and a collection of apps. It has great internal features for collaboration and journaling. But it doesn't have any mechanism for managing courses/curriculum/administrative functions commonly found in "school management systems". It could be possible to overlay on top of Sugar web-services such a toolkit.
Expected results
a framework, a core implementation, and documentation for expanding the implementation.
Knowledge prerequisites
Python, django
Timbre Widget for Music Blocks
Music-Blocks.png
Walter Bender
Devin Ulibarri
Brief explanation
Ayush Kumar designed a widget for designing voices for Music Blocks (See [1]). This project would be to implement the design.
Expected results
a working widget for Music Blocks for manipulating Timbre.
Knowledge prerequisites
JavaScript
Sugarizer Server Dashboard
Dashboard server.png
Lionel Laské
Michaël Ohayon
Brief explanation
Sugarizer is a way to use Sugar on any device using web technologies (HTML5/JavaScript). Strictly speaking, Sugarizer is not a port of Sugar. Sugarizer is based on Sugar Web library, which mimics the Sugar UI using HTML5 and CSS3 and reproduces Sugar views (Home, List, ...). Sugarizer reimplements features of Sugar Core (datastore and journal) in JavaScript and integrates activities written for Sugar in Sugar Web. The goal of this specific project is to create the "Sugarizer Server Dashboard". This feature will require an enhancement of the existing Sugarizer Server API specifically to integrate a real authentication mechanism.
Expected results
Sugarizer Server Dashboard is a web admin console for Sugarizer Server. The Dashboard will allow to manage and analyze all activity on a Sugarizer Server. Dashboard features will include:
  • Users: how many users has been registered on the server, how many users currently connected, top users on the server, last users connection, create/edit/remove an user.
  • Journal: how many Journals and how many entries in Journal on the server, last Journal and last entries, size of Journals, top Journals, edit a journal (see/update/remove) entries.
  • Application: how many applications are available on the server, change application visibility from Client, update order and way to appear in favorite view.
  • Graphic and request: display graphics and report on previous data.
Knowledge prerequisites
HTML5/JavaScript, bootstrap, node.js, MongoDB
How to start
Clone the Sugarizer repository, then install Sugarizer server using instructions here, finally explore the Sugarizer Server API and think about way to implement dashboard features with existing API.
Sugarizer Deployement and Management Tool for Android
Sugarizermdmtool.png
Michaël Ohayon
Lionel Laské
Brief explanation
Sugarizer is a way to use Sugar on any device using web technologies. Sugarizer can be deployed on many devices including Android phones and tablets. The goal of this specific project is to create the "Sugarizer Deployment and Management Tool for Android".
Expected results
Sugarizer Server Deployment and Management Tool is a GUI Tool working on GNU/Linux, Mac and Windows to deploy and configure Android devices using ADB (Android Debug Bridge).
  • Inventory : Collect and store devices data like serial number, os version, device name, installed applications, current Android launcher and Sugarizer availability.
  • Application Manager : Install or remove applications using APK files.
  • File Manager : Add / Remove files
  • Input Manager : Click / Touch coordinates on the screen, launch applications to perform automations.
  • Scenario Writer : Allow non developpers to create sequences to perform all the steps previously defined.
Knowledge prerequisites
Java and JavaFX / Kotlin and TornadoFX
How to start
Create a Java or Kotlin project using Intellij and display a window using JavaFX or TornadoFX. Then add https://github.com/vidstige/jadb and display connected android devices in the window.
User Manual for Music Blocks
Music-Blocks.png
Walter Bender
Devin Ulibarri

Hrishi Patel

Brief explanation
We have a Guide, but we really need something a bit more polished as a user manual.
Expected results
A website and PDF document that can be bound.
Knowledge prerequisites
Knowledge of music theory, writing skills
Just say no to GTK2 Ignacio Rodriguez
Sam Parkinson

Abhijit Patel

Brief explanation
GTK2 and GST0.10 are end of life. We need to upgrade the remaining activities with these dependencies.
Expected results
New versions of Turtle, Speak, Chat, Record, and a dozen others
Knowledge prerequisites
Knowledge of GTK, GST, and Python
Develop Activity
AKA Pippy JS, Taller del Artesano 2
Sebastian Silva
Brief explanation
We don't have a Javascript IDE for writing activities. This is a proposal to collaborate in making one. It would have templates for writing Javascript and Python.
Expected results
New activity capable of making new activities, runnable in Web and Sugarizer
Knowledge prerequisites
Python, Javascript, HTML5, CSS
Debian SugarBlend

A.K.A: Harmonic Distribution, Deployment Platform

Sebastian Silva
Jonas Smedegaard
Brief explanation
Debian is a base for many educational derivative distribution. We would like to make a SugarBlend that is a good base for local integrators. See https://wiki.debian.org/SugarBlend and Debian.
Expected results
Debian SugarBlend of upcoming Debian 9 (Stretch)
Knowledge prerequisites
Debian packaging, Linux system, Shell scripting
Sugar on Raspberry Pi Walter Bender

Hrishi Patel Abhijit Patel

Brief explanation
Raspberry Pi is a popular tool with the Maker Movement. Sugar runs quite well on RPi3, but it is in need of some love.
Expected results
An image for RPi, which boots to a Sugar desktop environment, and is suitable for inclusion on the RPi download page.
Knowledge prerequisites
Debian and/or Fedora packaging, Linux system, Shell scripting


Music Blocks for Mobile
Music-Blocks.png
Walter Bender
Devin Ulibarri
Brief explanation
Music Blocks was written for a browser, not mobile. It would be great to have a version native to mobile.
Expected results
Working version on Android/and/or iOS. Some UI adjustments will be necessary.
Knowledge prerequisites
Knowledge of JavaScript/Codrova/React and/or Swift.
Collab Rethink
Abhijit Patel
Walter Bender
Brief explanation
Sugar collaboration uses a deprecated library, python-telepathy, which we no longer wish to maintain. We need to upgrade Sugar collab using something better
Expected results
Working version of revised collab system.
  • Refactored presenceservice
  • Common Collabwrapper module for all sugar activities.
Knowledge prerequisites
python, prior knowledge of networking. knowledge of telepathy might be useful.

}|}|}|}